bool CGamePlayState::Input(void)
{
    if(IsPaused())
        return true;

    CSGD_DirectInput* pDI = CSGD_DirectInput::GetInstance();

    if( pDI->KeyPressed( DIK_ESCAPE )||
            pDI->JoystickButtonPressed(2) )
    {
        //m_bIsPaused = true;
        m_bDrawMouse = false;
        CGame::GetInstance()->PushState( CPauseState::GetInstance() );
    }

    if( pDI->KeyPressed( DIK_T ) )
        m_bRenderCulling = !m_bRenderCulling;

    //BUG - temp code added for AI testing
    //if( pDI->MouseButtonPressed( 0 ) )
    //{
    //	/*IUnitInterface* golem = MObjectManager::GetInstance()->GetUnit(120003);
    //	int cameraX = 0 , cameraY = 0 ;
    //			CGamePlayState::GetInstance()->GetCamera(cameraX , cameraY);
    //	int tileXPos = (int)((pDI->MouseGetPosX() + cameraX) / TILE_WIDTH.0f) ;
    //	int tileYPos = (int)((pDI->MouseGetPosY() + cameraY) / TILE_HEIGHT) ;
    //	((CBaseGolem*)(golem))->SetTargetPos(tileXPos, tileYPos);*/
    //}

    return true;
}
示例#2
0
void CCursor::Update(float fElapsedTime)
{
	SetType(OBJECT_CURSOR);
	CSGD_DirectInput* pDI = CSGD_DirectInput::GetInstance();
	SetPosX((float)GetPosX()+(pDI->MouseMovementX()*0.5f));
	SetPosY((float)GetPosY()+(pDI->MouseMovementY()*0.5f));

	if(GetPosX() < 0)
		SetPosX(0);
	else if((unsigned int)GetPosX() > CSGD_Direct3D::GetInstance()->GetPresentParams()->BackBufferWidth)
		SetPosX((float)CSGD_Direct3D::GetInstance()->GetPresentParams()->BackBufferWidth);
	if(GetPosY() < 0)
		SetPosY(0);
	else if((unsigned int)GetPosY() > CSGD_Direct3D::GetInstance()->GetPresentParams()->BackBufferHeight)
		SetPosY((float)CSGD_Direct3D::GetInstance()->GetPresentParams()->BackBufferHeight);
		
}
//Functions for every state
bool	CInstructions::Input			( )					 
{

	CSGD_DirectInput* pDI = CSGD_DirectInput::GetInstance();


	// Navigate the menu
	if(   (pDI->KeyPressed( DIK_D )  || pDI->JoystickGetLStickDirPressed( DIR_RIGHT, JOYSTICKID1 ) )  || ( pDI->KeyPressed( DIK_RIGHT ) || pDI->JoystickGetLStickDirPressed( DIR_RIGHT, JOYSTICKID2 )  ) )
	{
		++m_nCPos;
		if(m_nCPos > 2)
			m_nCPos = 2;

		CGame::GetInstance()->PlayMoveCursorSFX();
	}
	else if(  (pDI->KeyPressed( DIK_A )  || pDI->JoystickGetLStickDirPressed( DIR_LEFT, JOYSTICKID1 ) )  || ( pDI->KeyPressed( DIK_LEFT ) || pDI->JoystickGetLStickDirPressed( DIR_LEFT, JOYSTICKID2 )  ) )
	{
		--m_nCPos;
		if(m_nCPos < 0)
			m_nCPos = 0;

		CGame::GetInstance()->PlayMoveCursorSFX();
	}

	//Exiting out of the game with escape
	if( (pDI->KeyPressed( DIK_ESCAPE ) || pDI->JoystickButtonPressed( 2, JOYSTICKID1 ) ) ||  ( pDI->JoystickButtonPressed( 3, JOYSTICKID1 )  || pDI->JoystickButtonPressed( 3, JOYSTICKID2 ) ) )
	{
		CGame::GetInstance()->PopState();
		return true;
	}

	// Keep running
	return true;
}
示例#4
0
//Functions for every state
bool	CLoseGame::Input			( )					 
{

	CSGD_DirectInput*	pDI		=	CSGD_DirectInput::GetInstance();

	///Escape to exit
	if (pDI->JoystickButtonPressed( 3, 0 ) || pDI->JoystickButtonPressed( 3, 1 ) )
	{
		CGame::GetInstance()->ChangeState( CMainMenu::GetInstance() );
		return true;
	}
	else if (pDI->KeyPressed( DIK_ESCAPE ) == true || pDI->JoystickButtonPressed( 9, JOYSTICKID1 ) == true)
	{
			CGame::GetInstance()->ChangeState( CMainMenu::GetInstance() );
			return true;
	}

	// Keep running
	return true;
}
示例#5
0
//Functions for every state
bool	CMainMenu::Input			( )					 
{

	CSGD_DirectInput* pDI = CSGD_DirectInput::GetInstance();


	// Navigate the menu
	if(   (pDI->KeyPressed( DIK_S )  || pDI->JoystickGetLStickDirPressed( DIR_DOWN, JOYSTICKID1 ) )  || ( pDI->KeyPressed( DIK_DOWN ) || pDI->JoystickGetLStickDirPressed( DIR_DOWN, JOYSTICKID2 )  ) )
	{
		++m_nCursor;


		// Stop at the bottom
		if( m_nCursor > 7 )		
			m_nCursor = 0;
		
		CGame::GetInstance()->PlayMoveCursorSFX();
	}
	else if(  (pDI->KeyPressed( DIK_W )  || pDI->JoystickGetLStickDirPressed( DIR_UP, JOYSTICKID1 ) )  || ( pDI->KeyPressed( DIK_UP ) || pDI->JoystickGetLStickDirPressed( DIR_UP, JOYSTICKID2 )  ) )
	{
		--m_nCursor;


		// Stop at the top
		if( m_nCursor < 0 )		
			m_nCursor = 7;

		CGame::GetInstance()->PlayMoveCursorSFX();
	}


	// Handle the Enter key
	if( ( pDI->KeyPressed( DIK_TAB ) || pDI->JoystickButtonPressed( 1, JOYSTICKID1 ) ) || (pDI->KeyPressed( DIK_RETURN ) || pDI->JoystickButtonPressed( 1, JOYSTICKID2 )  ) )
	{
	// What selection?
		switch( m_nCursor )
		{
		case 0:			// Campaign Option
			{

				// Change the state to CGameplay Campaign Option
				m_bCampaign = true;
				m_bInGame = true;
				//CGamePlay::GetInstance();
				if (m_bArcadeMode == true)
				{
					CGame::GetInstance()->ChangeState( CArcadeGamePlay::GetInstance() );
					return true;	
				}
				else
				{
					CGame::GetInstance()->ChangeState( CGamePlay::GetInstance() );
					return true;	
				}
				
				

			}
			break;


		case 1:    //Versus
			{
				
				// Change the state to CGameplay Versus Option
				m_bInGame = true;
				m_bVersus = true;
				if (m_bArcadeMode == true)
				{
					CGame::GetInstance()->ChangeState( CArcadeGamePlay::GetInstance() );
					return true;	
				}
				else
				{
					CGame::GetInstance()->ChangeState( CWorldPlay::GetInstance() );
					return true;	
				}

			}
			break;

		case 2:    //Quick Match
			{

				// Change the state to CGameplay Quick Match option
				m_bQuickMatch = true;
				m_bInGame = true;
				if (m_bArcadeMode == true)
				{
					CGame::GetInstance()->ChangeState( CArcadeGamePlay::GetInstance() );
					return true;	
				}
				else
				{
					CGame::GetInstance()->ChangeState( CWorldPlay::GetInstance() );
					return true;	
				}

			}
			break;

		case 3:    //Load
			{

                CGame::GetInstance()->PushState( CLoadGame::GetInstance() );
				return true;
				
			}
			break;

		case 4:    //Instructions
			{

				CGame::GetInstance()->PushState( CInstructions::GetInstance() );
				return true;

			}
			break;
		case 5:   //Credits
			{
				CGame::GetInstance()->PushState( CCredits::GetInstance() );
				return true;
			}
			break;
		case 6:  //options
			{
				CGame::GetInstance()->PushState( COptions::GetInstance() );
			}
			break; //Exit
		case 7:
			{
				return false;
			}
			break;
		}
	}
	
	///Escape to exit
	if (pDI->JoystickButtonPressed( 3, 0 ) || pDI->JoystickButtonPressed( 3, 1 ) )
	{
		m_nCursor = 7;
		CGame::GetInstance()->PlayCancelSFX();
		return true;
	}
	else if (pDI->KeyPressed( DIK_ESCAPE ) == true || pDI->JoystickButtonPressed( 2, JOYSTICKID1 ) == true)
	{
		m_nCursor = 7;
		CGame::GetInstance()->PlayCancelSFX();
		return true;
	}
	// Keep running
	return true;
}
void CGamePlay::Update(float fElapsedTime)
{
	CSGD_MessageSystem *pMS = CSGD_MessageSystem::GetInstance();
	CSGD_ObjectManager *pOM = CSGD_ObjectManager::GetInstance();
	CPlayerCharacter *pPC = CPlayerCharacter::GetInstance();
	CGame *theGame = CGame::GetInstance();
	CSGD_DirectInput *pDI = CSGD_DirectInput::GetInstance();
	CSGD_EventSystem *pES = CSGD_EventSystem::GetInstance();

	stateTimer -= fElapsedTime;

	for (int i = 0; i < CHEAT_MAX; ++i)
		CheckForCheats(i);

	if (pDI->CheckBufferedKeys() != 0)
		m_cPreviousKeys.push(pDI->CheckBufferedKeys());

	if (stateTimer <= 0)
	{
		if (m_nEnemyCounter < 3 && m_nRemainingEnemies > 0 && GetLevel() <= 2)
			pES->SendEvent("spawn enemies", &fElapsedTime);
		stateTimer = 6;
	}

	if (pDI->GetBufferedKey(DIK_P))
		theGame->SetPaused(!theGame->GetPaused());

	if (GetLevel() == 3)
	{
		if (CGame::GetInstance()->GetPaused() == false)
			m_nBridgeOffsetY += m_nBridgeVelocityY * fElapsedTime * CGame::GetInstance()->GetSpeed();
		if (m_nBridgeOffsetY > 450)
		{
			m_nBridgeOffsetY = 449;
			m_nBridgeVelocityY *= -1;
		}
		if (m_nBridgeOffsetY < 64)
		{
			m_nBridgeOffsetY = 65;
			m_nBridgeVelocityY *= -1;
		}
		CPlayerCharacter::GetInstance()->SetPosY(m_nBridgeOffsetY - 64);
		m_fSpawnPowerupTimer -= fElapsedTime;
		if (m_fSpawnPowerupTimer <= 0)
		{
			CSGD_EventSystem::GetInstance()->SendEvent("spawn powerups",NULL);
			m_fSpawnPowerupTimer = 15.0f;
		}
	}

	vector<CBase*>::iterator iter = enemies.begin();
	int i = 0;

	while(iter != enemies.end())
	{
		//	see if we've found the pointer we are looking for
		int i = 0;
		if ((*iter)->GetHP() <= 0 && GetLevel() <= 3)
		{
			int value = enemies[i]->GetScoreValue();
			enemies.erase(iter);
			SetEnemyCounter(GetEnemyCounter() - 1);
			SetRemainingEnemies(GetRemainingEnemies() - 1);
			theGame->SetScore(theGame->GetScore() + value);
			++i;
			break;
		}
		else
			iter++;
	}

	if (pPC->GetHP() <= 0)
	{
		CGame::GetInstance()->SetLives(CGame::GetInstance()->GetLives() - 1);
		CGame::GetInstance()->ChangeState( CLevelTransition::GetInstance());
	}

	else if (m_nRemainingEnemies <= 0 && m_nEnemyCounter <= 0 && enemies.empty())
	{
		m_fFinishedTimer -= fElapsedTime;

		if (m_fFinishedTimer <= 0)
		{
			SetLevel(GetLevel() + 1);
			CTallyMenu::GetInstance()->SetHP(pPC->GetHP());
			CGame::GetInstance()->ChangeState( CTallyMenu::GetInstance());
		}
	}

	if (pDI->GetBufferedKey(DIK_ESCAPE))
		CGame::GetInstance()->ChangeState( CMainMenu::GetInstance() );	

}
bool CSaveSlotState::Input(void)
{
	CGame* pGame = CGame::GetInstance();
	CSGD_DirectInput* pDI = CSGD_DirectInput::GetInstance();
	CGamePlayState* pGamePlay = CGamePlayState::GetInstance();
	CSGD_FModManager* FM = CSGD_FModManager::GetInstance();
	//Enter
	if(pDI->KeyPressed(DIK_RETURN) ||
		pDI->JoystickButtonPressed(0))
	{
		switch(m_nIndex)
		{
		case SELECT:
			{
				//Change to GamePlayState
				FM->StopSound( CMainMenuState::GetInstance()->GetSongID() );
				pGame->ChangeState(pGamePlay);
				break;
			}
		case SLOTDELETE:
			{
				Delete();
				break;
			}
		case BACK:
			{
				pGame->ChangeState(CMainMenuState::GetInstance());
				break;
			}
		};
	}

	//Directional
	//Up
	if(pDI->KeyPressed(DIK_UP) ||
	   pDI->JoystickGetLStickDirPressed(DIR_UP, 0))
	{
		FM->PlaySoundA(m_nSoundID);
		if(m_nIndex != 0)
			m_nIndex -= 1;
		else
			m_nIndex = NUMSLOTOPTIONS - 1;
	}
	//Down
	if(pDI->KeyPressed(DIK_DOWN) ||
		pDI->JoystickGetLStickDirPressed(DIR_DOWN, 0))
	{
		FM->PlaySoundA(m_nSoundID);
		if(m_nIndex != (NUMSLOTOPTIONS - 1))
			m_nIndex += 1;
		else
			m_nIndex = 0;
	}
	//Left
	if(pDI->KeyPressed(DIK_LEFT) ||
		pDI->JoystickGetLStickDirPressed(DIR_LEFT, 0))
	{
		SetSaveSlot(--m_nCurrSaveSlot);
		FM->PlaySoundA(m_nSoundID);
	}
	//Right
	if(pDI->KeyPressed(DIK_RIGHT) ||
		pDI->JoystickGetLStickDirPressed(DIR_RIGHT, 0))
	{
		SetSaveSlot(++m_nCurrSaveSlot);
		FM->PlaySoundA(m_nSoundID);
	}
	
	return true;
}
void COptions::Update(float fElapsedTime)
{
	CSGD_DirectInput *pDI = CSGD_DirectInput::GetInstance();
	CSGD_WaveManager *pWM = CSGD_WaveManager::GetInstance();

	pWM->SetVolume(m_nSoundID[0], m_nSFXVolume);
	pWM->SetVolume(m_nSoundID[1], m_nMusicVolume);

	if (pDI->GetBufferedKey(DIK_DOWN))
	{
		if (m_nCursorPosition == 450)
			m_nCursorPosition = 75;
		else
			m_nCursorPosition += 125;
	}

	if (pDI->GetBufferedKey(DIK_UP))
	{
		if (m_nCursorPosition == 75)
			m_nCursorPosition = 450;
		else
			m_nCursorPosition -= 125;
	}

	if (m_nCursorPosition == 75 && !pWM->IsWavePlaying(m_nSoundID[1]))
	{
		if (pWM->IsWavePlaying(m_nSoundID[0]))
			pWM->Stop(m_nSoundID[0]);
		pWM->Reset(m_nSoundID[1]);
		pWM->SetVolume(m_nSoundID[1], m_nMusicVolume - 40);
		//pWM->Play(m_nSoundID[1],1);

	}

	if (m_nCursorPosition == 200 && !pWM->IsWavePlaying(m_nSoundID[0]))
	{
		if (pWM->IsWavePlaying(m_nSoundID[1]))
			pWM->Stop(m_nSoundID[1]);
		pWM->Reset(m_nSoundID[0]);
		pWM->SetVolume(m_nSoundID[0], GetSFXVolume() - 40);
		//pWM->Play(m_nSoundID[0],1);
	}

	if (m_nCursorPosition > 200)
	{
		if (pWM->IsWavePlaying(m_nSoundID[0]))
			pWM->Stop(m_nSoundID[0]);
		if (pWM->IsWavePlaying(m_nSoundID[1]))
			pWM->Stop(m_nSoundID[1]);
	}

	if (pDI->GetBufferedKey(DIK_LEFT) && m_nCursorPosition == 75)
	{
		if (m_nMusicVolume != 0)
			m_nMusicVolume -= 10;
	}

	if (pDI->GetBufferedKey(DIK_RIGHT) && m_nCursorPosition == 75)
	{
		if (m_nMusicVolume != 100)
			m_nMusicVolume += 10;
	}

	if (pDI->GetBufferedKey(DIK_LEFT) && m_nCursorPosition == 200)
	{
		if (m_nSFXVolume != 0)
			m_nSFXVolume -= 10;
	}

	if (pDI->GetBufferedKey(DIK_RIGHT) && m_nCursorPosition == 200)
	{
		if (m_nSFXVolume != 100)
			m_nSFXVolume += 10;
	}

	if (pDI->GetBufferedKey(DIK_LEFT) && m_nCursorPosition == 325)
	{
		if (m_nDifficulty == DIFFICULTY_EASY)
			m_nDifficulty = DIFFICULTY_HARD;
		else
			m_nDifficulty -= 1;
	}

	if (pDI->GetBufferedKey(DIK_RIGHT) && m_nCursorPosition == 325)
	{
		if (m_nDifficulty == DIFFICULTY_HARD)
			m_nDifficulty = DIFFICULTY_EASY;
		else
			m_nDifficulty += 1;
	}

	if (pDI->GetBufferedKey(DIK_RETURN) && m_nCursorPosition == 450 || pDI->GetBufferedKey(DIK_ESCAPE))
	{
		CGame::GetInstance()->ChangeState( CMainMenu::GetInstance() );
	}
}