예제 #1
0
void UpdatePause(void)
{
	while(pause)
	{
		StartFoxFrame();
		AESysFrameStart();

		PlayAudio(&BackgroundSnd);

		if(FoxInput_KeyTriggered(VK_ESCAPE))
		{
			pause = FALSE;
		}

		if(GetNextState() == GS_Quit || GetNextState() == GS_Restart)
		{
			pause = FALSE;
		}

		DrawPause();

		EventPause();
		
		FoxInput_Update();
		SaveSettings();
		SetChannelGroupVolume(EffectType, SFXVolume);
		SetChannelGroupVolume(MusicType, BGMVolume);
		UpdateSoundSystem();

		AESysFrameEnd();
		EndFoxFrame();
	}
	SaveSettings();
	FreePause();
}
예제 #2
0
void Input(STATE* state)
{
    int c = 0;

    c = getch();
    if (c == ERR)
        return;


    if (c == state->keymap[TETRIS_KEY_QUIT]) {
        state->status = STATUS_GAMEOVER;
    } else if (c == state->keymap[TETRIS_KEY_DROP]) {
        EventDrop(state);
    } else if (c == state->keymap[TETRIS_KEY_LOWER]) {
        EventLower(state);
    } else if (c == state->keymap[TETRIS_KEY_ROTATE_CW]) {
        EventRotate(state, 1);
    } else if (c == state->keymap[TETRIS_KEY_ROTATE_CCW]) {
        EventRotate(state, -1);
    } else if (c == state->keymap[TETRIS_KEY_MOVE_LEFT]) {
        EventMove(state, -1);
    } else if (c == state->keymap[TETRIS_KEY_MOVE_RIGHT]) {
        EventMove(state, 1);
    } else if (c == state->keymap[TETRIS_KEY_PAUSE]) {
        if (! state->game_over_f) {
            if (state->pause_f)
                EventUnpause(state);
            else
                EventPause(state);
        }
    } else if (c == state->keymap[TETRIS_KEY_RESET]) {
        Reset(state);
    } else {
        printw("\a");
    }

    flushinp();
    return;
}