Example #1
0
	void C_Client::LoadScreen(C_Screen* screen)
	{
		StopScene();
		m_Engine->GetEvent().ClearBinds();

		assert(screen);
		m_CurrentScreen = screen;
		m_CurrentScreen->Binds(m_Engine->GetEvent());
		//TODO: TMP
#ifdef _WIN32
		const int KEY_LAYOUT_CANADA = 96;
#else
		const int KEY_LAYOUT_CANADA = 35;
#endif
		const int KEY_LAYOUT_FRANCE = 178;
		m_Engine->GetEvent().AddBind(KEY_LAYOUT_CANADA, "console");
        m_Engine->GetEvent().AddBind(KEY_LAYOUT_FRANCE, "console");
		m_CurrentScreen->Load(*m_Engine);
        m_CurrentScreen->OnInit(*m_Engine);
		m_CurrentScreen->SetConsole(this);
		m_CurrentGui = m_CurrentScreen->GetGui();
		m_Engine->GetEvent().SetGUI(m_CurrentGui);
		if (m_CurrentScreen->HasScene()) {
			StartScene(m_CurrentScreen->GetScene());
			C_Command::m_CltScene = m_CurrentScene;
            m_CurrentScene->StartTimer();
            m_CurrentScene->StartUpdateTimer();
            SetSystems();
        } else {
            C_Command::m_CltScene = nullptr;
        }
	}
Example #2
0
	void C_Client::StartScene(C_Scene* scene)
	{
		assert(scene);
		if (m_CurrentScene)
			StopScene();
		m_CurrentScene = scene;
	}
Example #3
0
	void C_Client::Stop()
	{
		StopScene();
		UnloadScreen();
		StopEngine();

        m_Network.Stop();

		OnStop();
	}
Example #4
0
/** \brief Initializers the event handlers
 *
 * \return void
 *
 */
void CShooterGame::InitHandlers() {

    ///////////////////////////////////////////////////
    //
    // On User Events
    //
    ///////////////////////////////////////////////////
    m_Handlers["OnUserEvent"] = {
        {
            //
            // STATE::SPLASH_SCREEN
            //
            (int)STATE::SPLASH_SCREEN,
            [&](SDL_Event& ev){
                int nEventType = ev.user.code;
                if ( nEventType == DemoEngine::EVENTTYPE::SCENE_EVENT ) {
                    int nState = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data1));
                    int nScene = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data2));
                    switch ( nScene ) {
                    case SCENE_0_Intro:
                        //
                        // SCENE::INTRO
                        //
                        if ( nState == (int)SceneSplashScreen::STATE::FADE_OUT )
                        {
                            if ( !CSingleton<CProperties>::Instance()->Property( "Game", "Quit" ) ) {
                                LoadAndRunScene( SCENE_1_Game );
                                SetState( (int)STATE::GAME );
                            }
                        }
                        if ( nState == (int)SceneSplashScreen::STATE::END )
                        {
                            if ( CSingleton<CProperties>::Instance()->Property( "Game", "Quit" ) ) {
                                SetRunning( false );
                            }
                        }
                        break;
                    default:
                        break;

                    }

                }
                if ( nEventType == DemoEngine::EVENTTYPE::CUSTOM_EVENT ) {
                    int nEventID = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data1));
                    int nScene = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data2));
                    switch ( nEventID ) {
                    case (int)EVENT::START_NEW_GAME:
                        SetSceneState( nScene, (int)SceneSplashScreen::STATE::PRE_FADE_OUT );
                        LoadAndRunScene( SCENE_1_Game );
                        SetState( (int)STATE::GAME );
                        break;
                    case (int)EVENT::SHOW_HIGHSCORES:
                        SetSceneState( nScene, (int)SceneSplashScreen::STATE::PRE_FADE_OUT_NOMUSIC );
                        LoadAndRunScene( SCENE_3_Highscores );
                        SetState( (int)STATE::HIGHSCORES );
                        break;
                    case (int)EVENT::SHOW_HELP:
                        SetSceneState( nScene, (int)SceneSplashScreen::STATE::PRE_FADE_OUT_NOMUSIC );
                        LoadAndRunScene( SCENE_4_Help );
                        SetState( (int)STATE::HELP );
                        break;
                    case (int)EVENT::END_GAME:
                        SetSceneState( nScene, (int)SceneSplashScreen::STATE::PRE_FADE_OUT );
                        CSingleton<CProperties>::Instance()->Property( "Game", "Quit" ) = (bool)true;
                        break;
                    default:
                        break;
                    }

                }
            }
        },
        {
            //
            // STATE::HIGHSCORES
            //
            (int)STATE::HIGHSCORES,
            [&](SDL_Event& ev){
                int nEventType = ev.user.code;
                if ( nEventType == DemoEngine::EVENTTYPE::SCENE_EVENT ) {
                    int nState = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data1));
                    int nScene = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data2));
                    switch ( nScene )
                    {
                    case SCENE_3_Highscores:
                        //
                        // SCENE::HELP
                        //
                        if ( nState == (int)SceneHighscores::STATE::FADE_OUT )
                        {
                            LoadAndRunScene( SCENE_0_Intro );
                            SetSceneState( SCENE_0_Intro, (int)SceneSplashScreen::STATE::START_NOMUSIC );
                            SetState( (int)STATE::SPLASH_SCREEN );
                        }
                        break;
                    default:
                        break;
                    }
                }
            }
        },
        {
            //
            // STATE::HELP
            //
            (int)STATE::HELP,
            [&](SDL_Event& ev){
                int nEventType = ev.user.code;
                if ( nEventType == DemoEngine::EVENTTYPE::SCENE_EVENT ) {
                    int nState = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data1));
                    int nScene = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data2));
                    switch ( nScene )
                    {
                    case SCENE_4_Help:
                        //
                        // SCENE::HELP
                        //
                        if ( nState == (int)SceneHelp::STATE::FADE_OUT )
                        {
                            LoadAndRunScene( SCENE_0_Intro );
                            SetSceneState( SCENE_0_Intro, (int)SceneSplashScreen::STATE::START_NOMUSIC );
                            SetState( (int)STATE::SPLASH_SCREEN );
                        }
                        break;
                    default:
                        break;
                    }
                }
            }
        },
        {
            //
            // STATE::GAME
            //
            (int)STATE::GAME,
            [&](SDL_Event& ev){
                int nEventType = ev.user.code;
                if ( nEventType == DemoEngine::EVENTTYPE::SCENE_EVENT ) {
                    int nState = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data1));
                    int nScene = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data2));
                    switch ( nScene )
                    {
                    case SCENE_1_Game:
                        //
                        // SCENE::GAME
                        //
                        if ( nState == (int)SceneLevel::STATE::FADE_OUT )
                        {
                            LoadAndRunScene( SCENE_2_GameOver );
                            SetState( (int)STATE::GAME_OVER );
                        }
                        break;
                    default:
                        break;
                    }
                }
            }
        },
        {
            //
            // STATE::GAME_OVER
            //
            (int)STATE::GAME_OVER,
            [&](SDL_Event& ev){
                int nEventType = ev.user.code;
                if ( nEventType == DemoEngine::EVENTTYPE::SCENE_EVENT ) {
                    int nState = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data1));
                    int nScene = static_cast<int>(reinterpret_cast<uintptr_t>(ev.user.data2));
                    switch ( nScene )
                    {
                    case SCENE_2_GameOver:
                        //
                        // SCENE::GAME_OVER
                        //
                        if ( nState == (int)SceneGameOver::STATE::FADE_OUT )
                        {
                            #ifdef DEBUG_SCENE1
                            cout << "Restarting Scene 1 because DEBUG_SCENE1 defined." << endl;
                            StopScene( SCENE_1_Game );
                            LoadAndRunScene( SCENE_1_Game );
                            SetState( (int)STATE::GAME );
                            #else
                            LoadAndRunScene( SCENE_0_Intro );
                            SetState( (int)STATE::SPLASH_SCREEN );
                            #endif
                        }
                        break;
                    default:
                        break;
                    }
                }
            }
        }
    };

    ///////////////////////////////////////////////////
    //
    // Post Render
    //
    ///////////////////////////////////////////////////
    m_Handlers["PostRender"] = {
        {
            //
            // STATE::SPLASH_SCREEN
            //
            (int)CGame::STATE::ANY_STATE,
            [&](SDL_Event& ev){
                DISCARD_UNUNSED_PARAMETER( ev );

                auto& renderer = CSingleton<CRenderer>::Instance();
                int x = m_iScreenW + m_noteImgWidth - ((int)(GetRealTime()*60) % (m_iScreenW + m_noteImgWidth*2));
                renderer->Render( TextFactory::Instance()->Get( RESOURCE::TEXT_BETA_BUILD_NOTE ), x, m_iScreenH-12 );
            }
        }
    };

    ///////////////////////////////////////////////////
    //
    // OnKeyDown
    //
    ///////////////////////////////////////////////////
    m_Handlers["OnKeyDown"] = {
        {
            //
            // STATE::TESTS
            //
            (int)CGame::STATE::ANY_STATE,
            [&](SDL_Event& ev){
                switch ( ev.key.keysym.sym ) {
                    #ifdef DEBUG
                    case SDLK_1:
                        cout << "Setting Game speed to 0.1" << endl;
                        CSingleton<CProperties>::Instance()->Property( "Game", "Speed" ) = (float)0.1f;
                        break;
                    case SDLK_2:
                        cout << "Setting Game speed to 0.3" << endl;
                        CSingleton<CProperties>::Instance()->Property( "Game", "Speed" ) = (float)0.3f;
                        break;
                    case SDLK_3:
                        cout << "Setting Game speed to 0.5" << endl;
                        CSingleton<CProperties>::Instance()->Property( "Game", "Speed" ) = (float)0.5f;
                        break;
                    case SDLK_4:
                        cout << "Setting Game speed to 0.7" << endl;
                        CSingleton<CProperties>::Instance()->Property( "Game", "Speed" ) = (float)0.7f;
                        break;
                    case SDLK_5:
                        cout << "Setting Game speed to 1.0" << endl;
                        CSingleton<CProperties>::Instance()->Property( "Game", "Speed" ) = (float)1.0f;
                        break;
                    case SDLK_6:
                        cout << "Setting Game speed to 1.3" << endl;
                        CSingleton<CProperties>::Instance()->Property( "Game", "Speed" ) = (float)1.3f;
                        break;
                    case SDLK_7:
                        cout << "Setting Game speed to 1.5" << endl;
                        CSingleton<CProperties>::Instance()->Property( "Game", "Speed" ) = (float)1.5f;
                        break;
                    case SDLK_8:
                        cout << "Setting Game speed to 1.7" << endl;
                        CSingleton<CProperties>::Instance()->Property( "Game", "Speed" ) = (float)1.7f;
                        break;
                    #endif
                    case SDLK_F1:
                        cout << "Setting FPS to 10" << endl;
                        SDL_setFramerate( &m_fpsManager, 10 );
                        break;
                    case SDLK_F2:
                        cout << "Setting FPS to 20" << endl;
                        SDL_setFramerate( &m_fpsManager, 20 );
                        break;
                    case SDLK_F3:
                        cout << "Setting FPS to 30" << endl;
                        SDL_setFramerate( &m_fpsManager, 30 );
                        break;
                    case SDLK_F4:
                        cout << "Setting FPS to 40" << endl;
                        SDL_setFramerate( &m_fpsManager, 40 );
                        break;
                    case SDLK_F5:
                        cout << "Setting FPS to 50" << endl;
                        SDL_setFramerate( &m_fpsManager, 50 );
                        break;
                    case SDLK_F6:
                        cout << "Setting FPS to 60" << endl;
                        SDL_setFramerate( &m_fpsManager, 60 );
                        break;
                    case SDLK_F7:
                        cout << "Setting FPS to 120" << endl;
                        SDL_setFramerate( &m_fpsManager, 120 );
                        break;
                    default:
                        break;
                }
            }
        }
    };

}