bool mytank::FrameFunc(float dt) { b2Vec2 Rot(0,0); HGE *hge = Game::Instance()->GetSysInterface()->GetHge(); if (m_bullet.GetEnable()) { // } else { if (hge->Input_GetKeyState(HGEK_LEFT)) { m_info.m_gunangle += 0.1f; if (m_info.m_gunangle > 180) { m_info.m_gunangle = 180; } else { UpdateGun(); } } if (hge->Input_GetKeyState(HGEK_RIGHT)) { m_info.m_gunangle -= 0.1f; if (m_info.m_gunangle < 0) { m_info.m_gunangle = 0; } else { UpdateGun(); } } if (hge->Input_GetKeyState(HGEK_UP)) { if (m_info.m_gunangle <90.0f) { m_info.m_gunangle += 0.1f; if (m_info.m_gunangle > 90.0f) { m_info.m_gunangle = 90.0f; } else { UpdateGun(); } } if (m_info.m_gunangle >90.0f) { m_info.m_gunangle -= 0.1f; if (m_info.m_gunangle < 90.0f) { m_info.m_gunangle = 90.0f; } else { UpdateGun(); } } } if (hge->Input_GetKeyState(HGEK_DOWN)) { if (m_info.m_gunangle <90.0f) { m_info.m_gunangle -= 0.1f; if (m_info.m_gunangle < 0.0f) { m_info.m_gunangle = 0.0f; } else { UpdateGun(); } } if (m_info.m_gunangle >90.0f) { m_info.m_gunangle += 0.1f; if (m_info.m_gunangle > 180.0f) { m_info.m_gunangle = 180.0f; } else { UpdateGun(); } } } if (!m_powering) { m_info.m_power = 0; } if (hge->Input_GetKeyState(HGEK_SPACE)) { m_info.m_power+= 0.05f; m_powering = true; if (m_info.m_power >= 100.0f) { m_info.m_power = 100.0f; } } else { if (m_powering) { Fire(); m_powering = false; } } } return objtank::FrameFunc(dt);; }
BOOL objtank::Init() { UpdateGun(); return true; }
/******************************************************************************* 関数名: void UpdateGame(void) 引数: なし 戻り値: なし 説明: ゲームの更新関数 *******************************************************************************/ void UpdateGame(void) { //初期値 g_fTimeSpeed = 0.01f; GAME_STEP stepNow = GetGameStep(); switch(stepNow) { case STEP_PLAY: UpdatePlayer(); UpdateCamera(); UpdateGun(); UpdatePlayerBullet(g_fTimeSpeed); UpdateEnemy( g_fTimeSpeed); UpdateEnemyBullet( g_fTimeSpeed); //UpdateBillBoard(); UpdateParticle( g_fTimeSpeed); UpdateStageManager( g_fTimeSpeed); //UpdateModel(); UpdateGunSight(); UpdateItemBullet(); UpdateClock( g_fTimeSpeed); UpdateTime( g_fTimeSpeed); if(GetKeyboardTrigger(DIK_P) ) { SetGameStep(STEP_PAUSE); SetMessage(MSG_PAUSE); } break; case STEP_SHOOT: ChangeTimeSpeed( 1.0f); UpdateEnemy( g_fTimeSpeed); //UpdatePlayer(); UpdatePlayerBullet( g_fTimeSpeed); //UpdateEnemyBullet( g_fTimeSpeed); UpdateClock( g_fTimeSpeed); UpdateTime( g_fTimeSpeed); g_nCounterShoot++; if( g_nCounterShoot > 15) { g_nCounterShoot = 0; SetGameStep(STEP_PLAY); } break; case STEP_PAUSE: StopSound(); if(GetKeyboardTrigger(DIK_P) ) { SetGameStep(STEP_PLAY); ClearMessage(MSG_PAUSE); } break; case STEP_DIE: ChangeTimeSpeed( 1.0f); UpdateEnemy( g_fTimeSpeed); UpdateEnemyBullet( g_fTimeSpeed); UpdatePlayerBullet( g_fTimeSpeed); UpdateParticle( g_fTimeSpeed); g_nCounterFrame++; if( g_nCounterFrame > 90) { g_nCounterFrame = 0; if( GetPlayer()->nLife <= 0) { FadeOutToNext(MODE_RESULT); } else { FadeOutToNext(STEP_RESET); SetGameStep(STEP_NOTHING); } } break; case STEP_RESET: InitStageManager( false, GetPlayer()->nLife); SetGameStep(STEP_PLAY); break; case STEP_CLEAR: StopSound(SOUND_LABEL_SE_RUN); SetMessage(MSG_STAGECLEAR); g_nCounterFrame++; if( g_nCounterFrame > 90) { g_nCounterFrame = 0; switch(GetStageMode()) { case STAGE0: FadeOutToNext(STAGE1); break; case STAGE1: FadeOutToNext(STAGE2); break; case STAGE2: FadeOutToNext(STAGE3); break; case STAGE3: FadeOutToNext(MODE_RESULT); g_bGameClear = true; break; } SetGameStep(STEP_NOTHING); } break; case STEP_NOTHING: //just let time go, and do nothing break; } //UI update UpdateNumBullet(); //Debug update UpdateMeshDome(); if(GetKeyboardTrigger(DIK_RETURN) ) { FadeOutToNext(MODE_RESULT); } if(GetKeyboardTrigger(DIK_F3)) { PlaySound( SOUND_LABEL_SE_CLEAR); SetGameStep(STEP_CLEAR); } if(GetKeyboardTrigger(DIK_F2)) { PlaySound(SOUND_LABEL_SE_SWITCH); SwitchDebug(); } }