void StateManager::onUpdate(float dt) { std::stack<StateData*>copy; copy = states; while (!copy.empty()) { if (stateObjects[copy.top()->name]) stateObjects[copy.top()->name]->update(dt); copy.pop(); } if (canChangeState() && !enqueuedJumpState.empty()) { if (enqueuedStateStage == 0) { enqueuedStateStage = -1; popAllStates(); } else if (enqueuedStateStage == -1) { std::string copy = enqueuedJumpState; enqueuedJumpState = ""; jumpState(copy); } } }
void gkGamePlayer::update(gkScalar delta) { if (!m_textInit) { m_textInit = true; setInitialText(); } m_input->updateInputState(); if (m_camera) m_input->moveCamera(); gkFSM::update(); switch (getState()) { case GK_PLAY_IDLE: idleState(); break; case GK_PLAY_WALK: case GK_PLAY_RUN: moveState(); break; case GK_PLAY_JUMP: jumpState(); break; case GK_PLAY_LAND: landState(); break; case GK_PLAY_ATTACK_COMBO: comboState(); break; case GK_PLAY_RUN_ATTACK_0: case GK_PLAY_ATTACK_0: whipState(); break; case GK_PLAY_RUN_ATTACK_1: case GK_PLAY_ATTACK_1: kickState(); break; }/**/ }
void StateManager::onUpdate(float dt) { for (int i = 0; i <= statesTopIndex; i++) { StateObject *obj = stateObjects[states[i]->name]; if (obj) obj->update(dt); } if (canChangeState() && !enqueuedJumpState.empty()) { if (enqueuedStateStage == 0) { enqueuedStateStage = -1; popAllStates(); } else if (enqueuedStateStage == -1) { std::string copy = enqueuedJumpState; enqueuedJumpState = ""; jumpState(copy); } } }