Итак, я старался следовать за пустым ведомым руководством по назначению двигателя в университете, и у меня возникли проблемы с разработкой способов использования моего для доступа и обновите состояние в верхней части стека, также известное как TopState
в моем коде.GameStateManager: как указывать и обновлять текущее состояние
Это довольно просто, я инициализацию и запустить двигатель в main
и установить и нажмите на первое состояние:
void main()
{
EApplication::Init();
EApplication* pApp = new EApplication();
pApp->GetGameStateManager()->SetState("TEST", new ETestState(pApp));
pApp->GetGameStateManager()->PushState("TEST");
pApp->GetGameStateManager()->UpdateGameStates(ETime::deltaTime);
EApplication::RunApp();
delete pApp;
}
однако, как вы можете увидеть ниже функции UpdateGameStates
в моем GameStateManager
пока ничего делать, потому что я не уверен, как получить доступ или точки текущего состояния, и, таким образом, вызвать его собственную соответствующую Update
функции:
GameStateManager:
#include "AppGSM\EGamestateManager.h"
EGameStateManager::EGameStateManager(){ topState = new char[8]; }
EGameStateManager::~EGameStateManager(){}
void EGameStateManager::SetState(const char *szName, EBaseGameState *state){}
void EGameStateManager::PushState(const char *szName){}
void EGameStateManager::PopState(){}
void EGameStateManager::ChangeState(const char *szName){}
const char* EGameStateManager::GetTopStateName()
{
return topState;
}
EBaseGameState* EGameStateManager::GetTopState()
{
}
void EGameStateManager::UpdateGameStates(float deltaTime)
{
}
void EGameStateManager::DrawGameStates(){}
Мне просто интересно, что я должен указывать на то, когда я пытаюсь использовать GetTopState()
и как получить доступ к функции обновления этого состояния?
Ничего себе, правильно отформатированный код вместо кучи дерьма. Не видели этого с первого раза пользователя. Поздравляем с тем, что вы не являетесь зомби;) – BartoszKP
Я думаю, было бы неплохо начать с ваших методов детерминированного состояния (а именно «SetState», «PushState» и т. Д.) ... или я пропустил вашу точку? – Kiruse
Почему 'pApp-> GetGameStateManager() -> Whatever();' ... довольно многословно, почему бы и нет: 'GameStateManager & gs = * pApp-> GetGameStateManager(); gs.Whatever(); gs.Whatever2(); 'imho это более аккуратно, и вы вводите меньше :) –