ProjectTextRPG/TextRPG/Source/Game/Scene/CreateCharacterScene.cpp

96 lines
2.3 KiB
C++

#include "CreateCharacterScene.h"
#include "GameInstance.h"
#include "CharacterStatScene.h"
#include "Core/Subsystems/SceneManager.h"
#include "Core/Subsystems/GameInputSystem.h"
#include "Core/Subsystems/GameDataManager.h"
#include "Data/Literals/Literals.h"
#include "Game/Characters/Player/Player.h"
void PrintStatus(const std::string& Name, int Stat[])
{
std::cout << "====================================" << "\n";
std::cout << Name << "" << "현재 능력치" << "\n";
std::cout << "====================================" << "\n";
std::cout << "HP: " << Stat[0] << "\t" << "MP: " << Stat[1] << "\n";
std::cout << "공격력: " << Stat[2] << "\t" << "방어력: " << Stat[3] << "\n";
std::cout << "====================================" << "\n";
}
void CreateStat(const std::string& Title, const std::string& ErrorMsg, int& Out1, int& Out2, int Max1, int Max2)
{
while (true)
{
GInput << Title;
std::string buffer;
if (!(GInput >> Out1 >> Out2))
{
GInput.Reset();
continue;
}
bool IsValid = (Out1 < Max1 || Out2 < Max2);
if (IsValid)
{
std::cout << ErrorMsg << "\n";
continue;
}
break;
}
}
CreateCharacterScene::CreateCharacterScene(GameSceneManager* InOwner) :
CoreScene(InOwner)
{
bEnableTick = false;
}
CreateCharacterScene::~CreateCharacterScene()
{
}
void CreateCharacterScene::Enter()
{
CoreScene::Enter();
std::string PlayerName;
const int Size = 4;
int Stat[Size] = {0};
GInput << "용사의 이름을 입력하세요: ";
GInput >> PlayerName;
CreateStat(Game::CreateCharacter::SelectVitality, Game::CreateCharacter::ErrorVitality,
Stat[0], Stat[1], Game::CreateCharacter::MaxHP, Game::CreateCharacter::MaxMP);
CreateStat(Game::CreateCharacter::SelectCombatStats, Game::CreateCharacter::ErrorCombatStats,
Stat[2], Stat[3], Game::CreateCharacter::MaxPower, Game::CreateCharacter::MaxDefence);
auto Data = GInst->GetGameDataManager()->GetPlayerData();
*Data = PlayerStatData(PlayerName, "", 0, Stat[0], Stat[1], Stat[2], Stat[3]);
GInput << "\n";
PrintStatus(PlayerName, Stat);
system("pause");
Exit();
}
void CreateCharacterScene::Update()
{
}
void CreateCharacterScene::Exit()
{
system("cls");
Owner->TransitionTo<CharacterStatScene>();
}
void CreateCharacterScene::Release()
{
CoreScene::Release();
}