// Lot STC - vitesse de camera adossee a GameUserSettings.ini (STC-SPEC, partie 2). // // La valeur de reference de la vitesse de camera est la section [/Script/LifePlay.LPUserSettings] de // GameUserSettings.ini (PIE : Saved/Config/WindowsEditor/, jeu : Saved/Config/Windows/). GI.CameraSpeed n'en est // qu'une recopie : ApplyCameraSpeedAtStartup la remplit au demarrage (apres GI.LoadSettings), SetCameraSpeed la met a // jour quand le joueur bouge le slider du menu Settings. L'ini n'est ecrit que si la valeur change, ou une fois au // premier lancement (bCameraSpeedSet faux) : la valeur de GI, issue de GameSettings.sav, est alors reprise et bornee. // GameSettings.sav garde son champ CameraSpeed, recopie de GI par GI.SaveSettings. // Valeurs permises : entiers de 1 a 7 (slider a pas de 1), 3 par defaut. #pragma once #include "CoreMinimal.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "UObject/Object.h" #include "LPUserSettings.generated.h" /** Reglages du joueur propres a LifePlay, enregistres dans GameUserSettings.ini (objet par defaut seulement). */ UCLASS(config = GameUserSettings) class LIFEPLAY_API ULPUserSettings : public UObject { GENERATED_BODY() public: /** Vitesse de camera choisie dans le menu Settings (1 a 7). */ UPROPERTY(config) float CameraSpeed = 3.f; /** Faux tant que l'entree n'a jamais ete ecrite (premier lancement : reprise de GI.CameraSpeed). */ UPROPERTY(config) bool bCameraSpeedSet = false; }; UCLASS() class LIFEPLAY_API ULPUserSettingsLibrary : public UBlueprintFunctionLibrary { GENERATED_BODY() public: /** Arrondit a l'entier le plus proche et borne entre 1 et 7. */ UFUNCTION(BlueprintPure, Category = "LifePlay|Settings") static float ClampCameraSpeed(float V); /** * A appeler au demarrage, apres GI.LoadSettings : recopie dans GI.CameraSpeed la valeur de GameUserSettings.ini. * Premier lancement (entree jamais ecrite) : reprend GI.CameraSpeed (lu dans GameSettings.sav), la borne, l'ecrit * dans GI et dans l'ini. */ UFUNCTION(BlueprintCallable, Category = "LifePlay|Settings") static void ApplyCameraSpeedAtStartup(UObject* GameInstance); /** Slider du menu Settings : borne V, l'ecrit dans GI.CameraSpeed et, si elle change, dans GameUserSettings.ini. */ UFUNCTION(BlueprintCallable, Category = "LifePlay|Settings") static void SetCameraSpeed(UObject* GameInstance, float V); /** Vitesse de camera enregistree dans GameUserSettings.ini, bornee (3 si jamais ecrite). */ UFUNCTION(BlueprintPure, Category = "LifePlay|Settings") static float GetCameraSpeed(); };