Exemplo n.º 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);
		}
	}
}
Exemplo n.º 2
0
void StateManager::popAllStates()
{
	if (!states.empty())
	{
		popState();
		popAllStates();
	}
}
Exemplo n.º 3
0
void StateManager::jumpState (const std::string &state)
{
	if (canChangeState())
	{
		popAllStates();
		pushState(state);
	}
}
Exemplo n.º 4
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);
		}
	}
}