#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(); } 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); }