Example #1
0
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;
				}
			}
		}
	}
}