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; }
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; }
//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; }
//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() ); } }