// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Engine/GameInstance.h" #include "SurvivalGameInstance.generated.h" /** * Le seul objet qui survit aux changements de map. * * C'est l'equivalent le plus proche d'un singleton DontDestroyOnLoad d'Unity : * il naƮt au lancement du jeu et meurt a sa fermeture. Tout le reste -- * GameMode, GameState, PlayerController, pawns, widgets -- est detruit et * recree a chaque OpenLevel. * * Y mettre : les reglages, la sauvegarde en cours, et plus tard l'hebergement * et le rejoindre-une-partie. Surtout pas d'etat de gameplay, qui appartient au * monde et doit disparaitre avec lui. */ UCLASS() class SURVIVAL_PROJET_API USurvivalGameInstance : public UGameInstance { GENERATED_BODY() public: /** Nom de la derniere camera de menu utilisee. NAME_None au premier lancement. */ UFUNCTION(BlueprintPure, Category = "Menu") FName GetLastMenuCameraName() const { return LastMenuCameraName; } UFUNCTION(BlueprintCallable, Category = "Menu") void SetLastMenuCameraName(FName SpotName) { LastMenuCameraName = SpotName; } private: /** * Stocke un NOM et pas un index : les index changent des qu'on ajoute ou * supprime une camera dans la map, et on retomberait sur autre chose. * * Ne sert qu'a eviter de retirer deux fois de suite le meme angle quand le * joueur revient au menu -- d'ou le Transient, ca n'a pas a etre sauvegarde. */ UPROPERTY(Transient) FName LastMenuCameraName = NAME_None; };