//--------------------------------------------------------------------- // ● イベント処理コールバック //--------------------------------------------------------------------- int SceneNetRoom::HandleEvent( u32 event_, void* args_ ) { switch ( event_ ) { ///////////////////////////////////////////// SceneGame に移動する case SYSEV_GOTO_SCENEGAME: { printf( "げーむいどう\n" ); LGameScene::changeScene( NEW SceneGame() ); break; } } return 0; }
//============================================================================= // 更新 //============================================================================= void CCamera :: Update(void) { if(CManager::GetSceneType()==PHASETYPE_GAME) { SceneGame(); // switch (m_CameraMode) // { // case RELEASE_MODE: // { // //目的の視点設定 // m_posCameraPDest.x = posModel.x - sinf(ErotModel.y) * 150; // m_posCameraPDest.y = posModel.y + 75; // m_posCameraPDest.z = posModel.z - cosf(ErotModel.y) * 200; // //目的の注視点設定 // m_posCameraRDest.x = m_posPointView.x - sinf(rotModel.y) * 45; // m_posCameraRDest.y = m_posPointView.y - 10; // m_posCameraRDest.z = m_posPointView.z - cosf(rotModel.y) * 30; //#ifdef _DEBUG // CDebugProc::Print("Distance:%f\n", Distance); // CDebugProc::Print("posY:%f\n", posModel.y); //#endif // if (Distance < 200.0f) // { // m_posCameraPDest.y = posModel.y + 75 + (100- Distance*0.5f); // m_posCameraPDest.z = posModel.z - cosf(ErotModel.y) * (200 + (100 - Distance*0.5f)); // m_posCameraRDest.y = EposModel.y - 10 + (120 - Distance); // } // float yset = posModel.y; // if (yset > 50.0f){ yset = 50.0f; } // m_posCameraP.x += (m_posCameraPDest.x - m_posCameraP.x)*(0.10f - (yset*0.0016f)); // if (m_posCameraPDest.y - posModel.y <= 110) // { // m_posCameraP.y += (m_posCameraPDest.y - m_posCameraP.y)*0.1f; // } // m_posCameraP.z += (m_posCameraPDest.z - m_posCameraP.z)*(0.10f - (yset*0.0016f)); // //現在の注視点に目的の注視点との差を足していく // m_posCameraR.x += (m_posCameraRDest.x - m_posCameraR.x)*0.14f; // if (m_posCameraRDest.y - posModel.y <= 110) // { // m_posCameraR.y += (m_posCameraRDest.y - m_posCameraR.y)*0.12f; // } // m_posCameraR.z += (m_posCameraRDest.z - m_posCameraR.z)*0.14f; // break; // m_posCameraP = D3DXVECTOR3(0.0f, 100.0f, 100.0f); // m_posCameraR = D3DXVECTOR3(0.0f, 0.0f, 0.0f); // } // case GAMEEND_MODE: // m_posCameraPDest.x = m_posPointView.x; // m_posCameraPDest.y = m_posPointView.y + 100; // m_posCameraPDest.z = m_posPointView.z + 300; // //目的の注視点設定 // m_posCameraRDest.x = m_posPointView.x; // m_posCameraRDest.y = m_posPointView.y - 10; // m_posCameraRDest.z = m_posPointView.z; // break; // //現在未使用 // case SKILL_MODE: // //目的の視点設定 // m_posCameraPDest.x= posModel.x; // m_posCameraPDest.y= posModel.y+(130+(m_fCountSkillY)); // m_posCameraPDest.z= posModel.z+300-m_fCountSkillX; // // if(m_fCountSkillX<90) // { // if(m_fCountSkillY<250) // { // m_fCountSkillY+=1.0f; // }else // { // m_fCountSkillY+=0.3f; // m_fCountSkillX+=1.0f; // } // }else // { // m_CameraMode=RELEASE_MODE; // posModel = pPlayerM->GetPos(); // rotModel = pPlayerM->GetRot(); // CCamera :: Init(); // //目的の視点設定 // m_posCameraPDest.x= posModel.x; // m_posCameraPDest.y= posModel.y+75; // m_posCameraPDest.z= posModel.z+150; // // //目的の注視点設定 // m_posCameraRDest.x= m_posPointView.x - sinf(rotModel.y)*45; // m_posCameraRDest.y= m_posPointView.y -10; // m_posCameraRDest.z= m_posPointView.z - cosf(rotModel.y)*30; // } // //目的の注視点設定 // m_posCameraRDest.x= posModel.x; // m_posCameraRDest.y= posModel.y+(100+(m_fCountSkillY)); // m_posCameraRDest.z= posModel.z; // //現在の視点に目的の視点との差を足していく // m_posCameraP.x+=(m_posCameraPDest.x-m_posCameraP.x)*0.12f; // m_posCameraP.y+=(m_posCameraPDest.y-m_posCameraP.y); // m_posCameraP.z+=(m_posCameraPDest.z-m_posCameraP.z)*0.12f; // //現在の注視点に目的の注視点との差を足していく // m_posCameraR.x+=(m_posCameraRDest.x-m_posCameraR.x)*0.14f; // m_posCameraR.y+=(m_posCameraRDest.y-m_posCameraR.y); // m_posCameraR.z+=(m_posCameraRDest.z-m_posCameraR.z)*0.14f; // break; // case DEBUG_MODE: // //カメラの移動 // if(pInputKeyboard->GetKeyPress(DIK_K)) // { // m_posCameraP.x -= sinf(m_rotCamera.y)*CAMERA_MOVE_SPEED; // m_posCameraP.z -= cosf(m_rotCamera.y)*CAMERA_MOVE_SPEED; // } // else if(pInputKeyboard->GetKeyPress(DIK_I)) // { // m_posCameraP.x += sinf(m_rotCamera.y)*CAMERA_MOVE_SPEED; // m_posCameraP.z += cosf(m_rotCamera.y)*CAMERA_MOVE_SPEED; // } // if(pInputKeyboard->GetKeyPress(DIK_J)) // { // m_posCameraP.x -= sinf(m_rotCamera.y+90*(D3DX_PI/180))*CAMERA_MOVE_SPEED; // m_posCameraP.z -= cosf(m_rotCamera.y+90*(D3DX_PI/180))*CAMERA_MOVE_SPEED; // } // else if(pInputKeyboard->GetKeyPress(DIK_L)) // { // m_posCameraP.x += sinf(m_rotCamera.y+90*(D3DX_PI/180))*CAMERA_MOVE_SPEED; // m_posCameraP.z += cosf(m_rotCamera.y+90*(D3DX_PI/180))*CAMERA_MOVE_SPEED; // } // //カメラの昇降 // if(pInputKeyboard->GetKeyPress(DIK_Y)) // { // m_posCameraP.y +=2; // } // else if(pInputKeyboard->GetKeyPress(DIK_N)) // { // m_posCameraP.y -=2; // } // //カメラの旋回 // if(pInputKeyboard->GetKeyPress(DIK_Z)) // { // m_rotCamera.y +=D3DX_PI/180; // m_posCameraP.x = m_posCameraR.x - sinf(m_rotCamera.y)*m_fVectCamera; // m_posCameraP.z = m_posCameraR.z - cosf(m_rotCamera.y)*m_fVectCamera; // } // else if(pInputKeyboard->GetKeyPress(DIK_C)) // { // m_rotCamera.y -=D3DX_PI/180; // m_posCameraP.x = m_posCameraR.x - sinf(m_rotCamera.y)*m_fVectCamera; // m_posCameraP.z = m_posCameraR.z - cosf(m_rotCamera.y)*m_fVectCamera; // } // //カメラの首ふり // if(pInputKeyboard->GetKeyPress(DIK_Q)) // { // m_rotCamera.y -= (D3DX_PI/180); // } // else if(pInputKeyboard->GetKeyPress(DIK_E)) // { // m_rotCamera.y += (D3DX_PI/180); // } // if(pInputKeyboard->GetKeyPress(DIK_T)) // { // m_rotCamera.x += (D3DX_PI/180); // } // else if(pInputKeyboard->GetKeyPress(DIK_B)) // { // m_rotCamera.x -= (D3DX_PI/180); // } // if(pInputKeyboard->GetKeyPress(DIK_0)) // { // m_posCameraP = D3DXVECTOR3(0.0f,50.0f,-130.0f); // m_posCameraR = D3DXVECTOR3(0.0f,0.0f,0.0f); // m_posCameraU = D3DXVECTOR3(0.0f,1.0f,0.0f); // } // break; // } // //カメラのモードの切り替え // if(pInputKeyboard->GetKeyTrigger(DIK_F12)) // { // if(m_CameraMode==DEBUG_MODE) // { // m_CameraMode=RELEASE_MODE; // posModel = pPlayerM->GetPos(); // rotModel = pPlayerM->GetRot(); // CCamera :: Init(); // //目的の視点設定 // m_posCameraPDest.x= posModel.x; // m_posCameraPDest.y= posModel.y+75; // m_posCameraPDest.z= posModel.z+150; // // //目的の注視点設定 // m_posCameraRDest.x= m_posPointView.x - sinf(rotModel.y)*45; // m_posCameraRDest.y= m_posPointView.y -10; // m_posCameraRDest.z= m_posPointView.z - cosf(rotModel.y)*30; // }else // { // m_CameraMode=DEBUG_MODE; // } // } ////カメラのモードの切り替え //if((pInputKeyboard->GetKeyTrigger(DIK_F10))||(pInputKeyboard->GetKeyTrigger(DIK_F))) ////if(pInputKeyboard->GetKeyTrigger(DIK_F10)) //{ // if(m_CameraMode==SKILL_MODE) // { // m_CameraMode=RELEASE_MODE; // posModel = pPlayerM->GetPos(); // rotModel = pPlayerM->GetRot(); // CCamera :: Init(); // //目的の視点設定 // m_posCameraPDest.x= posModel.x; // m_posCameraPDest.y= posModel.y+75; // m_posCameraPDest.z= posModel.z+150; // // //目的の注視点設定 // m_posCameraRDest.x= m_posPointView.x - sinf(rotModel.y)*45; // m_posCameraRDest.y= m_posPointView.y -10; // m_posCameraRDest.z= m_posPointView.z - cosf(rotModel.y)*30; // }else // { // m_CameraMode=SKILL_MODE; // m_fCountSkillY=0; // m_fCountSkillX=0; // } //} //カメラ向き変更 //m_rotCamera.y = atan2f((m_posCameraR.x-m_posCameraP.x),(m_posCameraR.z-m_posCameraP.z)); //m_rotCamera.x = atan2f((m_posCameraR.z-m_posCameraP.z),(m_posCameraR.y-m_posCameraP.y)); } }
//--------------------------------------------------------------------- // ● フレーム更新 //--------------------------------------------------------------------- void SceneTitle::onUpdate() { mRandomSprite->SetSrcRect(mFrameCount, mFrameCount, 512, 64); mPointCursor->update(); // 終了中? if (mEndFrameCount > 0) { --mEndFrameCount; // 字幕のフェードアウト int t = MAX_END_FRAME_COUNT - mEndFrameCount; mSuperSprite[0]->SetPosition(0, -t * 4); mSuperSprite[1]->SetPosition(0, 448 + t * 6); // ウィンドウ・コマンドのフェードアウト t = mEndFrameCount - (MAX_END_FRAME_COUNT - 20); mCommandFadeInOpacity.SetTime(t); mDescWindowSprite->SetOpacity(mCommandFadeInOpacity.GetValue()); mDescContentsSprite->SetOpacity(mCommandFadeInOpacity.GetValue()); // 拡大エフェクト float op = std::min(MAX_END_FRAME_COUNT - mEndFrameCount, 20); mTitleEffectSprite->SetOpacity(1.0f - op / 20); mTitleEffectSprite->SetScale(op / 100 + 1); for (int i = 0; i < 4; ++i) { mCommandSprite[i]->SetOpacity(mCommandFadeInOpacity.GetValue()); } // 全体フェードアウト if (mEndFrameCount == 60) { Accessor::ToneLayer->ChangeTone(ToneF(1, 1, 1, 0), 1.0); } if (mEndFrameCount == 0) { // 親として初期化した後、ゲーム画面に移動する GameManager::getInstance()->initializeParent(); GameManager::getInstance()->setRank(mSelectIndex); LGameScene::changeScene(NEW SceneGame()); } } switch (mStep) { /////////////////////// Press Any Key case 0: { mRoundTripValue.SetTime((double)mFrameCount); mPressAnyKeySprite->SetOpacity(mRoundTripValue.GetValue()); if (Input::IsTriggered(InputButtons::Any)) { mStep = 1; mFrameCount = 0; mEntryedStep = 1; _startShowCommand(0); mSelectIndex = 0; mWindowFadeCount = 40; GameAudio::PlaySE("Data/Sound/SE/cursor21.wav", 0.40, 1.00); } break; } /////////////////////// モード選択 case 1: { if (mFrameCount == 20 && mWindowFadeCount > 10) // mWindowFadeCount > 30 は、step1 0 から来たという意味 { _setPointCursorIndex(mSelectIndex); } if (mFrameCount >= 20 && mFrameCount <= 60) { int t = mFrameCount - 20; for (int i = 0; i < 3; ++i) { mCommandFadeInX.SetTime(static_cast< double >(t - 5 * i)); mCommandSprite[i]->SetPosition(COMMAND_POS_X + mCommandFadeInX.GetValue(), COMMAND_POS_Y + 32 * i); mCommandFadeInOpacity.SetTime(static_cast< double >(t - 5 * i)); mCommandSprite[i]->SetOpacity(mCommandFadeInOpacity.GetValue()); } } // 決定ボタン if (Input::IsTriggered(LN_BUTTON_A)) { switch (mSelectIndex) { case 0: mSelectIndex = 1; break; case 1: // ランキング this->callScene(LN_NEW SceneRanking()); GameAudio::PlaySE(CURSOR_SE, 0.80); return; case 2: // 終了 Engine::Exit(); break; } mStep = 2; mFrameCount = 0; _startShowCommand(1); _setPointCursorIndex(mSelectIndex); GameAudio::PlaySE(CURSOR_SE, 0.80); return; } // ↑ if (Input::IsRepeated(LN_BUTTON_UP)) { --mSelectIndex; if (mSelectIndex < 0) { mSelectIndex = 2; } _setPointCursorIndex(mSelectIndex); GameAudio::PlaySE(CURSOR_SE, 0.80); return; } // ↓ if (Input::IsRepeated(LN_BUTTON_DOWN)) { ++mSelectIndex; if (mSelectIndex > 2) { mSelectIndex = 0; } _setPointCursorIndex(mSelectIndex); GameAudio::PlaySE(CURSOR_SE, 0.80); return; } break; } /////////////////////// 難易度選択 case 2: { if (mFrameCount <= 50) { for (int i = 0; i < 4; ++i) { mCommandFadeInX.SetTime(static_cast< double >(mFrameCount - 5 * i)); mCommandSprite[i]->SetPosition(COMMAND_POS_X + mCommandFadeInX.GetValue(), COMMAND_POS_Y + 32 * i); mCommandFadeInOpacity.SetTime(static_cast< double >(mFrameCount - 5 * i)); mCommandSprite[i]->SetOpacity(mCommandFadeInOpacity.GetValue()); } } // 決定 if (Input::IsTriggered(LN_BUTTON_A)) { // 終了 mEndFrameCount = MAX_END_FRAME_COUNT; mPointCursor->moveToInit(); GameAudio::PlaySE("Data/Sound/SE/cursor21.wav", 0.80, 1.20); GameAudio::StopBGM(3.0); // iss#1 ダミーのステップへ移行して繰り返し決定ボタン押せないようにする mStep = 4; } // キャンセル if (Input::IsTriggered(LN_BUTTON_B)) { mStep = 1; mFrameCount = 0; _startShowCommand(0); mSelectIndex = 0; _setPointCursorIndex(mSelectIndex); } // ↑ if (Input::IsRepeated(LN_BUTTON_UP)) { --mSelectIndex; if (mSelectIndex < 0) { mSelectIndex = 3; } _setPointCursorIndex(mSelectIndex); GameAudio::PlaySE(CURSOR_SE, 0.80); } // ↓ if (Input::IsRepeated(LN_BUTTON_DOWN)) { ++mSelectIndex; if (mSelectIndex > 3) { mSelectIndex = 0; } _setPointCursorIndex(mSelectIndex); GameAudio::PlaySE(CURSOR_SE, 0.80); } break; } }; if (mEntryedStep == 1) { if (mPressAnyKeySprite->IsVisible() && mFrameCount <= 10) { mPressAnyKeySprite->SetScale(mFrameCount / 4.0f + 1.0f, (10.0f - mFrameCount) / 10.0f); if (mFrameCount == 10) { mPressAnyKeySprite->SetVisible(false); mEntryedStep = 2; } } if (mFrameCount <= 8) { mSuperSprite[0]->SetVisible(true); mSuperSprite[1]->SetVisible(true); mSuperSprite[0]->SetPosition(0, -32.0f + (float)mFrameCount * 4); mSuperSprite[1]->SetPosition(0, 480.0f - (float)mFrameCount * 4); } } // ウィンドウのフェードイン中 if (mWindowFadeCount > 0) { --mWindowFadeCount; if (mWindowFadeCount <= 30) { double t = static_cast< double >(30 - mWindowFadeCount); // コマンド用のアニメを使いまわす mCommandFadeInX.SetTime(t); mCommandFadeInOpacity.SetTime(t); mDescWindowSprite->SetPosition(60 - mCommandFadeInX.GetValue(), 280); mDescWindowSprite->SetOpacity(mCommandFadeInOpacity.GetValue()); mDescContentsSprite->SetPosition(60 - mCommandFadeInX.GetValue(), 280); mDescContentsSprite->SetOpacity(mCommandFadeInOpacity.GetValue()); } } // 説明文描画中 if (!mFormatText.isFinished()) { mFormatText.update(); LNFormatTextDrawData data; while (mFormatText.getNextDrawData(&data)) { mDescContents->DrawText(StringRef(data.Text, data.Length), data.Rect, data.Font, Color32::Black, Color32::White, 0, TextAlignment::Left); } } /* if ( Input.isOnTrigger( LN_BUTTON_A ) ) { // 親として初期化した後、ゲーム画面に移動する GameManager::getInstance()->initializeParent(); LGameScene::changeScene( NEW SceneGame() ); return; } if ( Input.isOnTrigger( LN_BUTTON_B ) ) { LGameScene::changeScene( NEW SceneConnection() ); return; } */ ++mFrameCount; }