void moSceneEffect::UpdateParameters() { //int key = 0; ///next sequence is next sequence in config param "sequence_states" if (m_i_scene_states!=m_Config[ moR(SCENE_STATES)].GetIndexValue()) { m_i_scene_states = m_Config[ moR(SCENE_STATES)].GetIndexValue(); SetSceneState(m_i_scene_states); } else { //i_sequence_states = m_Config[ moR(SEQUENCE_STATES)].GetIndexValue() UpdateSceneState(m_i_scene_states); } }
int moSceneEffect::NextSceneState( int i_state ) { int i_next_state = i_state + 1; if (0<=i_next_state && i_next_state<m_n_scene_states) { MODebug2->Message("Next Scene State: " + IntToStr(i_next_state)); } else { if (m_Config.Int( moR(SCENE_SEQUENCE_LOOP)) > 0) { i_next_state = 0; MODebug2->Message("Looping States."); } else { i_next_state = m_n_scene_states-1; MODebug2->Message("End of States reached."); return -1; } } return SetSceneState( i_next_state ); }
/** \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; } } } }; }