ProjectTextRPG/TextRPG/Source/GameInstance.cpp

125 lines
2.1 KiB
C++

#include "GameInstance.h"
#include "Core/Object/GameObject.h"
#include "Core/Subsystems/GameDataManager.h"
#include "Core/Subsystems/GameInputSystem.h"
#include "Core/Subsystems/SceneManager.h"
#include "Data/Literals/Literals.h"
#include "Game/Characters/Player/Player.h"
#include "Game/Scene/CharacterStatScene.h"
#include "Game/Scene/CreateCharacterScene.h"
#include "Game/Scene/DungeonScene.h"
#include "Game/Scene/CharacterJobScene.h"
#include "Game/Scene/MainMenuScene.h"
#include "Game/Scene/PotionShopScene.h"
#include "Game/Scene/InventoryScene.h"
#include "Game/Scene/BossDungeonScene.h"
GameInstance::GameInstance() :
GameInput(nullptr),
SceneManager(nullptr),
DataManager(nullptr),
LocalPlayer(nullptr),
bIsRunning(false),
bInitalized(false)
{
GInst = this;
}
GameInstance::~GameInstance()
{
Release();
}
void GameInstance::Run()
{
bIsRunning = true;
GameLoop();
}
void GameInstance::Quit()
{
bIsRunning = false;
}
void GameInstance::GameLoop()
{
Initialize();
while (bIsRunning)
{
Update();
}
std::cout << "게임 종료" << "\n";
}
void GameInstance::PrepareSceneManager()
{
SceneManager = new GameSceneManager();
SceneManager->Initialize();
SceneManager->CreateScenes<
CreateCharacterScene,
CharacterStatScene,
CharacterJobScene,
MainMenuScene,
DungeonScene,
PotionShopScene,
InventoryScene,
BossDungeonScene
>();
}
void GameInstance::PrepareCreateDataManager()
{
DataManager = new GameDataManager();
DataManager->Initialize();
}
void GameInstance::PrepareGameInput()
{
GameInput = new GameInputSystem();
}
void GameInstance::Initialize()
{
PrepareSceneManager();
PrepareGameInput();
PrepareCreateDataManager();
}
void GameInstance::PostInitialize()
{
SceneManager->TransitionTo<CreateCharacterScene>();
}
void GameInstance::Update()
{
std::cout << Game::Common::Title;
SceneManager->Update();
if (!bInitalized)
{
PostInitialize();
bInitalized = true;
}
system("cls");
}
void GameInstance::Release()
{
for(auto It : GameObjects)
{
if (It) SafeDelete(It);
}
GameObjects.clear();
SafeDelete(LocalPlayer);
SafeDelete(SceneManager);
SafeDelete(DataManager);
SafeDelete(GameInput);
}