/**
 * Start level under pressed button.
 * Start pedometer when level is solved already.
 */
    void
WorldMap::runSelected()
{
    Level *level = createSelected();
    if (level) {
        m_levelStatus->prepareRun(m_selected->getCodename(),
                m_selected->getPoster(),
                m_selected->getBestMoves(),
                m_selected->getBestAuthor());
        level->fillStatus(m_levelStatus);

        if (m_selected->getState() == LevelNode::STATE_SOLVED) {
            Pedometer *pedometer = new Pedometer(m_levelStatus, level);
            pushState(pedometer);
        }
        else {
            pushState(level);
        }
    }
    else {
        if (m_activeMask == m_maskIntro) {
            runIntro();
        }
        else if (m_activeMask == m_maskExit) {
            quitState();
        }
        else if (m_activeMask == m_maskCredits) {
            runCredits();
        }
        else if (m_activeMask == m_maskOptions) {
            runOptions();
        }
    }
}
示例#2
0
//-----------------------------------------------------------------
    void
MovieState::own_updateState()
{
    if(m_movie->GetStatus() != SMPEG_PLAYING) {
        quitState();
    }
}
示例#3
0
void _ExitGame(void)
{
	if (quitState != NULL | currentState != STATE_UNKNOW)
	{
		quitState();
	}
	printf("Programme Exit\n");
	exit(0);
}
/**
 * Handle incoming message.
 * Messages:
 * - quit ... quit state
 */
    void
GameState::receiveSimple(const SimpleMsg *msg)
{
    if (msg->equalsName("quit")) {
        quitState();
    }
    else {
        LOG_WARNING(ExInfo("unknown msg")
                .addInfo("msg", msg->toString()));
    }
}
示例#5
0
void _StateChange(enum EN_STATE newState)
{
	if (quitState != NULL | currentState != STATE_UNKNOW)
		quitState();

	switch (newState)
	{
		case STATE_MAINMENU:	// MenuPrincipal
		currentState = STATE_MAINMENU;
		initState = S_MainMenu_Init;
		quitState = S_MainMenu_Quit;

		eventState = S_MainMenu_Event;
		computeState = S_MainMenu_Compute;
		drawState = S_MainMenu_Draw;
		if (initState() == -1)
		{
			printf("[ERROR]\tError while initializing state Menu\n");
			exit(1);
		}
		break;

		// OPENGL
		case STATE_OPENGL:
		currentState = STATE_OPENGL;
		initState = S_DemoOpengl_Init;
		quitState = S_DemoOpengl_Quit;

		eventState = S_DemoOpengl_Event;
		computeState = S_DemoOpengl_Compute;
		drawState = S_DemoOpengl_Draw;
		if (initState() == -1)
		{
			printf("[ERROR]\tError while initializing state OPENGL\n");
			exit(1);
		}
		break;

		case STATE_UNKNOW:
		default:
		printf("[WARN]\tnewState is invalid\n");
		currentState = STATE_UNKNOW;
		eventState = computeState = drawState = initState = quitState = NULL;
	}
}
//-----------------------------------------------------------------
    void
ConsoleInput::specKey(int keyIndex)
{
    //TODO: simulate key repeat in console
    switch (keyIndex) {
        case KEY_HISTORY:
            getConsole()->setInput(m_history);
            break;
        case KEY_BACKSPACE:
            {
                std::string input = getConsole()->getInput();
                if (!input.empty()) {
                    input.erase(input.end() - 1);
                    getConsole()->setInput(input);
                }
            }
            break;
        case KEY_CLEAR:
            getConsole()->setInput("");
            break;
        case KEY_ENTER:
            {
                std::string input = getConsole()->getInput();
                if (!input.empty()) {
                    if (getConsole()->sendCommand()) {
                        m_history = input;
                        getConsole()->setInput("");
                    }
                }
                else {
                    quitState();
                }
            }
            break;
        default:
            StateInput::specKey(keyIndex);
            break;
    }
}
/**
 * Toggle console.
 */
void
ConsoleInput::enableConsole()
{
    quitState();
}
示例#8
0
//-----------------------------------------------------------------
void
DemoInput::mouseEvent(const MouseStroke &/*buttons*/)
{
    quitState();
}