Files

53 lines
1.7 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "Engine/GameInstance.h"
#include "irons/gameFramework/Game.hpp"
#include "IronsHost.generated.h"
class FIronsSessionHost;
struct FIronsHostDeleter {void operator()(FIronsSessionHost* Ptr)const;};
namespace gf = irons::gameFramework;
UEADAPTER_API bool RunIronsHostAcceptance(const FString& Root,FString& Report);
UCLASS()
class UEADAPTER_API UIronsGameInstance : public UGameInstance
{
GENERATED_BODY()
TUniquePtr<FIronsSessionHost,FIronsHostDeleter> Campaign;
TUniquePtr<FIronsSessionHost,FIronsHostDeleter> Training;
TMap<FString,FString> Chinese, English;
FString PreferencesIni;
bool bTraining=false;
public:
UIronsGameInstance();
virtual ~UIronsGameInstance() override;
virtual void Init() override;
virtual void Shutdown() override;
gf::Session& Core();
const gf::Session& Core()const;
gf::Combat Combat;
bool bReady=false;
bool bEnglish=false;
float Sensitivity=1,AimSensitivity=1, MasterVolume=.65f;
bool bInvertY=false;
bool bShowPerformance=true;
int32 PerformanceCorner=0; // 0 right top, 1 left top, 2 right bottom, 3 left bottom.
TArray<FString> Keys;
FString StatusKey, StatusDetail;
double StatusUntil=0;
FString DataRoot;
int AcceptanceStep=0;
FText Text(const FString& Key)const;
FString Label(const FString& Key)const;
FString ItemName(std::string_view Id)const;
void SetLanguage(bool EnglishLanguage);
void SavePreferences();
void EnterTraining();
void LeaveTraining();
bool IsTraining()const {return bTraining;}
bool Accept(const gf::Result& Result);
bool BeginSortie();
bool FinishSortie(bool Destroyed);
void Notice(const FString& Key,const FString& Detail=TEXT(""));
};