Пример #1
0
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);
		}
	}
}
Пример #2
0
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;
	}/**/
}
Пример #3
0
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);
		}
	}
}