Screen_Base* ScreenOverlayManager::CreateScreen(ScreenOverlays screentomake, Screen_Base* pParentScreen, void* pPtr1, void* pPtr2)
{
    Screen_Base* newscreen = 0;

    switch( screentomake )
    {
    case ScreenOverlay_DontChange:
    case ScreenOverlay_Destroy:
    case ScreenOverlay_RemoveDontDestroy:
        assert( false );
        break;

    case ScreenOverlay_GameType_Selector:
        newscreen = MyNew GameType_Selector();
        break;

    case ScreenOverlay_GameType_EmptyReplaceMe:
        newscreen = MyNew GameType_EmptyReplaceMe();
        break;

    case ScreenOverlay_Loading:
        newscreen = MyNew Screen_Loading();
        break;

    case ScreenOverlay_HowToPlay_Online:
        newscreen = MyNew Screen_HowToPlay();
        ((Screen_HowToPlay*)newscreen)->m_PageShowing = HTPPT_Online;
        break;

    case ScreenOverlay_HowToPlay_Infinite:
        newscreen = MyNew Screen_HowToPlay();
        ((Screen_HowToPlay*)newscreen)->m_PageShowing = HTPPT_Infinite;
        break;

    case ScreenOverlay_HowToPlay_Puzzle:
        newscreen = MyNew Screen_HowToPlay();
        ((Screen_HowToPlay*)newscreen)->m_PageShowing = HTPPT_Puzzle;
        break;

    case ScreenOverlay_Options:
        newscreen = MyNew Screen_Pause();
        break;

    case ScreenOverlay_Achievements:
        newscreen = MyNew Screen_Achievements();
        break;

    case ScreenOverlay_Stats:
        newscreen = MyNew Screen_Stats();
        break;
    }

    if( newscreen )
        newscreen->SetParentScreen( pParentScreen );

    return newscreen;
};
示例#2
0
// ---------------------------------------------------------------------------
void Screen_Goto(Screen id) {
	if(active_screen != SCREEN_END) {
		// execute exit function of current screen
		if(screens[active_screen].exit_fnc != NULL) screens[active_screen].exit_fnc();
	}
	// draw loading screen
	Screen_Loading(id);
	// execute init function of new screen
	if(screens[id].init_fnc != NULL) screens[id].init_fnc();
	// reset last update timer
	screens[id].last_update = 0;
	active_screen = id;
}