void GameState::OnHandleEvent(sf::Event& event) { if(event.Type == sf::Event::KeyPressed) { if(event.Key.Code == sf::Keyboard::Space) { mScene->AddChild(new Torpedo("torpedo-" + Resources::GetInstance().GetNextID(), mSubmarine->Position, mSubmarine->Speed, mSubmarine->Rotation + (mSubmarine->Speed.x < 0 ? PI : 0))); } else if(event.Type == sf::Event::KeyPressed) { if(event.Key.Code == sf::Keyboard::Escape) { StartTransitionOut(0.2f); } else if(event.Key.Code == sf::Keyboard::F4) { sf::Packet data; Serializer::Write(data, mScene); Serializer::WriteFileContents("scene", data); } else if(event.Key.Code == sf::Keyboard::F5) { delete mScene; sf::Packet p = Serializer::ReadFileContents("scene"); mScene = (Entity*)Serializer::Load(p); } } } }
void daModeTitleScreen::Update( float timeStep ) { UNUSED(timeStep); if ( m_menu->GetHilitedItem() != m_menuItemSelected ) { m_menuItemSelected = m_menu->GetHilitedItem(); m_menuThump->Play(); } if ( m_transitioningIn || m_transitioningOut ) { m_transitionTimer += timeStep; if ( m_transitionTimer > c_transitionDuration ) { m_transitionTimer = c_transitionDuration; if ( m_transitioningOut ) { if ( m_transitioningOutTo == NewGame ) m_game->SetMode(daGame::Mode_InGame); // Mode_LevelSelect? Are levels appropriate for this game? if ( m_transitioningOutTo == Options ) m_game->GoToPreferences(); if ( m_transitioningOutTo == Credits ) m_game->SetMode(daGame::Mode_Credits); else if ( m_transitioningOutTo == HowToPlay ) m_game->SetMode(daGame::Mode_Tutorial); return; } m_transitioningIn = false; m_transitioningOut = false; } float timer = m_transitionTimer; if ( m_transitioningOut ) timer = c_transitionDuration - m_transitionTimer; float transitionFraction = timer / c_transitionDuration; transitionFraction = (3.0f * transitionFraction * transitionFraction) - (2.0f * transitionFraction * transitionFraction * transitionFraction); m_menu->SetPosition( vsInterpolate(transitionFraction, m_iniMenuPos, menuPos) ); m_title->SetPosition( vsInterpolate(transitionFraction, m_iniTitlePos, titlePos) ); m_title->SetColor( vsInterpolate(transitionFraction, vsColor::Black, vsColor::Red) ); } if ( !m_transitioningIn && !m_transitioningOut ) { if ( m_menu->WasActionTaken() ) { utMenuAction a = m_menu->GetAction(); if ( a.type == utMenuAction::Type_Select ) { switch( a.menuItemId ) { case NewGame: StartTransitionOut(); m_transitioningOutTo = NewGame; break; case HowToPlay: StartTransitionOut(); m_transitioningOutTo = HowToPlay; //m_game->GetHowToPlayScreen()->Show(true); m_game->FadeOutMusic(c_transitionDuration); break; case Options: StartTransitionOut(); m_transitioningOutTo = Options; m_game->FadeOutMusic(c_transitionDuration); break; case Credits: StartTransitionOut(); m_transitioningOutTo = Credits; m_game->FadeOutMusic(c_transitionDuration); break; case Quit: core::SetExitToMenu(); break; default: break; } } } } }