Esempio n. 1
0
GameSwitcher::GameSwitcher()
	: background(NULL)
	, background_image(NULL)
	, background_filename("")
	, fps_ticks(0)
	, last_fps(0)
{

	// The initial state is the intro cutscene and then title screen
	GameStateTitle *title=new GameStateTitle();
	GameStateCutscene *intro = new GameStateCutscene(title);

	currentState = intro;

	if (!intro->load("cutscenes/intro.txt")) {
		delete intro;
		currentState = title;
	}

	label_fps = new WidgetLabel();
	done = false;
	loadMusic();
	loadFPS();

	loadBackgroundList();

	if (currentState->has_background)
		loadBackgroundImage();
}
Esempio n. 2
0
void GameSwitcher::logic() {
    // reset the mouse cursor
    curs->logic();

    // Check if a the game state is to be changed and change it if necessary, deleting the old state
    GameState* newState = currentState->getRequestedGameState();
    if (newState != NULL) {
        delete currentState;
        currentState = newState;
        currentState->load_counter++;

        // reload the fps meter position
        loadFPS();

        // if this game state does not provide music, use the title theme
        if (!currentState->hasMusic)
            if (!snd->isPlayingMusic())
                loadMusic();
    }

    currentState->logic();

    // Check if the GameState wants to quit the application
    done = currentState->isExitRequested();

    if (currentState->reload_music) {
        loadMusic();
        currentState->reload_music = false;
    }
}
Esempio n. 3
0
GameSwitcher::GameSwitcher() {

    // The initial state is the intro cutscene and then title screen
    GameStateTitle *title=new GameStateTitle();
    GameStateCutscene *intro = new GameStateCutscene(title);

    currentState = intro;

    if (!intro->load("cutscenes/intro.txt")) {
        delete intro;
        currentState = title;
    }

    label_fps = new WidgetLabel();
    done = false;
    loadMusic();
    loadFPS();
}
Esempio n. 4
0
void GameSwitcher::logic() {
	// reset the mouse cursor
	curs->logic();

	// Check if a the game state is to be changed and change it if necessary, deleting the old state
	GameState* newState = currentState->getRequestedGameState();
	if (newState != NULL) {
		if (currentState->reload_backgrounds || render_device->reloadGraphics())
			loadBackgroundList();

		delete currentState;
		currentState = newState;
		currentState->load_counter++;

		// reload the fps meter position
		loadFPS();

		// if this game state does not provide music, use the title theme
		if (!currentState->hasMusic)
			if (!snd->isPlayingMusic())
				loadMusic();

		// if this game state shows a background image, load it here
		if (currentState->has_background)
			loadBackgroundImage();
		else
			freeBackground();
	}

	// resize background image when window is resized
	if (inpt->window_resized && currentState->has_background) {
		refreshBackground();
	}

	currentState->logic();

	// Check if the GameState wants to quit the application
	done = currentState->isExitRequested();

	if (currentState->reload_music) {
		loadMusic();
		currentState->reload_music = false;
	}
}