int Scene_DollBirth::Update(){ switch(state){ case SCNSTATE_DOLLBIRTH_DOLLAPPEAR: if(GetAnimeEnded()){ SetState(SCNSTATE_DOLLBIRTH_SHOWSTATUS); w_status.SetVisible(true); w_status.Open(); } break; case SCNSTATE_DOLLBIRTH_SHOWSTATUS: // ウィンドウのアップデート w_status.Update(); if(w_status.GetState() == Window_Base::IDLE && (g_input.pushedKey & g_key.input[BTN_CHOOSE])){ w_name.SetVisible(true); w_name.Open(); SetState(SCNSTATE_DOLLBIRTH_ENTERNAME); } break; case SCNSTATE_DOLLBIRTH_ENTERNAME: w_name.Update(); if(w_name.GetState() == Window_Base::CLOSED){ ReserveScene(SCENE_DOLLBIRTH, 40); } break; } return SCENE_NONE; }
int Scene_Title::Update(){ if(!SceneIsReserved()) switch(phaze){ case TITLE_PHAZE_MAIN: switch(s_main.Move()){ case SELECT_CHOOSE: switch(s_main.index){ case TITLE_MENU_NEWGAME: phaze = TITLE_PHAZE_CHAPTER; break; case TITLE_MENU_CONTINUE: g_temp.sceneParam = TEMP_PARAM_FILE_LOADMODE; ReserveScene(SCENE_FILE, 20); break; case TITLE_MENU_STOCKDOLLS: ReserveScene(SCENE_TESTBATTLE, 90); break; case TITLE_MENU_RECORDS: ReserveScene(SCENE_TESTBATTLE, 90); break; case TITLE_MENU_TESTBATTLE: ReserveScene(SCENE_TESTBATTLE, 10); break; case TITLE_MENU_OPTION: // ReserveScene(SCENE_TESTBATTLE, 10); break; case TITLE_MENU_EXIT: ReserveScene(SCENE_END, 90); break; } break; case SELECT_CANCEL: // インデックスがEXITに合っている時は終了する、 // そうで無い場合はEXITに合わせる if(s_main.index == TITLE_MENU_EXIT){ ReserveScene(SCENE_END, 90); }else{ s_main.index = TITLE_MENU_EXIT; } break; } break; case TITLE_PHAZE_CHAPTER: switch(s_chapter.Move()){ case SELECT_CHOOSE: // 決定キー // 章を決定してニューゲーム g_temp.sceneParam = TEMP_PARAM_FILE_NEWGAME; ReserveScene(SCENE_FILE, 20); break; case SELECT_CANCEL: // キャンセルキー phaze = TITLE_PHAZE_MAIN; s_main.index = 0; break; } break; } return SCENE_NONE; }
int Scene_DollUnite::Update(){ // BGMの演奏 if(sceneTime == 2){ g_sound.PlayBGM(BGM_EDIT, false); } // 人形のポインタ const Game_CampDoll* pDoll = NULL; // シーンの予約の確認 if(SceneIsReserved()) return SCENE_NONE; // 人形のポインタのアップデート if(!UpdateDollPtr()) return SCENE_ERROR; // ステートによるウィンドウ間の動作 switch(state){ case SCNSTATE_DOLLUNITE_CHOOSE_FIRST: // 一体目の人形を選択中 if(w_dollList.GetSelected()){ // 一体目の人形を保持する if(w_dollList.ReserveDollToBase()){ // 人形が正しく選択された SetState(SCNSTATE_DOLLUNITE_CHOOSE_SECOND); }else{ // 人形が正しく選択されなかった // (何も起こらない) g_sound.PlaySE(MYSE_SELECT_FAILED, 1.0f); } }else if((g_input.pushedKey & g_key.input[BTN_CANCEL]) != 0){ // キャンセルを押すとメニューに戻る ReserveScene(SCENE_TO_RETURN, 40); }else if((g_input.pushedKey & g_key.input[BTN_SHOWINFO]) != 0){ // 表示モードが切り替わる ChangeDrawStatusType(); } // α値の更新 previewAlpha = max(0, previewAlpha - 12); break; case SCNSTATE_DOLLUNITE_CHOOSE_SECOND: // 戦闘メンバーの選択中 if(w_dollList.GetSelected()){ // 決定キーが押された pDoll = w_dollList.GetCntDollPtr(); if(pDoll != NULL){ // 人形がいる場合かつ、一体目と二対目が同じ人形でない場合 if(!GetTwoDollsAreTheSame()){ if(uniteManager.SetParents(pBaseParent, pSubParent)){ if(uniteManager.CalcChild()){ // 人形リストウィンドウを閉じる w_dollList.Close(true); // 生まれる人形を計算して次のフェイズへ SetState(SCNSTATE_DOLLUNITE_PREVIEW); }else{ // 人形の合成の際にエラーが発生した g_sound.PlaySE(MYSE_SELECT_FAILED, 1.0f); w_dollList.ResetSelected(false); } }else{ g_sound.PlaySE(MYSE_SELECT_FAILED, 1.0f); w_dollList.ResetSelected(false); } // // /* if(SetParentDollPtr()){ // ポインタを取得 state = SCNSTATE_DOLLUNITE_CHOOSE_TYPE; // w_dollUniteInfo.OnStateChanged(); // w_dollUniteInfo.ResetSelectable(WND_DOLLUNITEINFO_MENU_DOLLLIST_NUM); // w_dollList.SetDoubleOutFocus(); // w_battleDollList.Activate(); }else{ g_sound.PlaySE(MYSE_SELECT_FAILED, 1.0f); w_dollList.ResetSelected(false); } */ }else{ g_sound.PlaySE(MYSE_SELECT_FAILED, 1.0f); w_dollList.ResetSelected(false); } }else{ g_sound.PlaySE(MYSE_SELECT_FAILED, 1.0f); w_dollList.ResetSelected(false); } }else if((g_input.pushedKey & g_key.input[BTN_CANCEL]) != 0){ // キャンセルを押すと一体目の選択に戻る SetState(SCNSTATE_DOLLUNITE_CHOOSE_FIRST); w_dollList.ResetSelected(); w_dollList.SetFocusByDollID(w_dollList.GetBaseDollID()); w_dollList.ResetBaseDollID(); }else if((g_input.pushedKey & g_key.input[BTN_SHOWINFO]) != 0){ // 表示モードが切り替わる ChangeDrawStatusType(); }else{ // 何もしていなくても、現在の人形についての // プレビューを表示する。 } // α値の更新 previewAlpha = max(0, previewAlpha - 12); break; case SCNSTATE_DOLLUNITE_PREVIEW: switch(wf_confirm.UpdateMove()){ case SELECT_CHOOSE: switch(wf_confirm.GetSelectIndex()){ case 0: // 「はい」を選択 SetState(SCNSTATE_DOLLUNITE_TRANSFER); break; case 1: // 「いいえ」を選択 // 親をリセットして二人目の選択に戻る uniteManager.ResetParents(); w_dollList.ResetSelected(false); w_dollList.Open(true); SetState(SCNSTATE_DOLLUNITE_CHOOSE_SECOND); if(pSubParent != NULL){ w_dollList.SetFocusByDollID(pSubParent->GetDollID()); } break; case 2: case 3: // 「スキルの詳細」を選択 SetState(SCNSTATE_DOLLUNITE_SKILLPREVIEW); break; } break; case SELECT_CANCEL: // 親をリセットして二人目の選択に戻る uniteManager.ResetParents(); w_dollList.ResetSelected(false); w_dollList.Open(true); SetState(SCNSTATE_DOLLUNITE_CHOOSE_SECOND); if(pSubParent != NULL){ w_dollList.SetFocusByDollID(pSubParent->GetDollID()); } break; } // α値の更新 previewAlpha = min(255, previewAlpha + 12); break; case SCNSTATE_DOLLUNITE_SKILLPREVIEW: switch(w_skillPreview.UpdateSelect()){ case SELECT2D_CHOOSE: case SELECT2D_CANCEL: SetState(SCNSTATE_DOLLUNITE_PREVIEW); break; } // α値の更新 previewAlpha = min(255, previewAlpha + 12); break; case SCNSTATE_DOLLUNITE_TRANSFER: if(stateTime >= 40){ SetState(SCNSTATE_DOLLUNITE_SKILLSELECT); } // α値の更新 previewAlpha = max(0, previewAlpha - 12); break; case SCNSTATE_DOLLUNITE_SKILLSELECT: if(w_skillSelect.GetClosed()){ // ウィンドウが閉じたら次へ進む SetState(SCNSTATE_DOLLUNITE_EXIT); ReserveScene(SCENE_DOLLBIRTH, 60); } break; } // 各ウィンドウのアップデート // w_uniteDoll.UpdateA(); w_dollList.UpdateA(); // w_dollUniteInfo.UpdateA(); wf_chooseFirst.Update(); wf_chooseSecond.Update(); wf_preview.Update(); wf_confirm.Update(); w_skillPreview.Update(); w_skillSelect.Update(); return SCENE_NONE; }
int Scene_TestDangeon::Update(){ // ファイル名 TCHAR buf[64]; if(sceneTime == 2){ g_sound.PlayBGM(BGM_MENU, false); } // 背景の更新 float backVX=0, backVY=0, angle=0; int n=1; /* for(int a=0;a<MAX_TESTDANGEON;a++){ n += (int)g_trialAliceFile.data.tutorialBattle[a]; } */ // angle = 2.0*((float)s_main.index+(s_main.index%2==1?1.8:0))+0.35; angle = 2.0*n+0.35; if(!SceneIsReserved()){ backVX = (0.5+0.02*n)*sin(angle); backVY = (0.5+0.02*n)*cos(angle); } backX += backVX; backY += backVY; if(backX > BACKTILE_SIZE) backX -= BACKTILE_SIZE; if(backX < 0) backX += BACKTILE_SIZE; if(backY > BACKTILE_SIZE) backY -= BACKTILE_SIZE; if(backY < 0) backY += BACKTILE_SIZE; if(!SceneIsReserved()){ switch(state){ case SCNSTATE_TESTDANGEON_MAINMENU: if(stateTime == 1){ // オートセーブ if(r_aliceInfo.GetAutoSave()){ g_trialAliceFile.Save(); savedCount = 1; } // HP全回復 g_dollList.HealBattleDolls(); } if(!g_trialAliceFile.data.firstHint){ if(w_hint.GetClosed()){ g_trialAliceFile.data.firstHint = true; g_trialAliceFile.Save(); w_hint.OpenAndPlay(_T("dat_text\\tutorial_first.txt"), WND_HINT_ALICE); } }else{ if(w_hint.GetClosed()){ switch(s_main.Move()){ case SELECT_CHOOSE: switch(s_main.index){ case TESTDANGEON_MENU_DANGEON: g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f); SetState(SCNSTATE_TESTDANGEON_CHOOSEMAP); s_sub.index = 0; break; case TESTDANGEON_MENU_DOLLEDIT: g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f); ReserveScene(SCENE_DOLLEDIT, 30); break; case TESTDANGEON_MENU_BDOLLMANAGE: SetState(SCNSTATE_TESTDANGEON_BDOLLMANAGE); g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f); w_bDollManage.Open(); break; case TESTDANGEON_MENU_ITEMMANAGE: SetState(SCNSTATE_TESTDANGEON_ITEMMANAGE); g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f); w_itemManage.Open(); break; case TESTDANGEON_MENU_DOLLUNITE: g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f); ReserveScene(SCENE_DOLLUNITE, 30); break; case TESTDANGEON_MENU_REST: g_sound.PlaySE(MYSE_GET_ITEM, 1.0f); g_dollList.HealDollsTP(2, false); r_aliceInfo.AddMP(1); g_dollList.ReflectAllDollsToRecord(); r_aliceInfo.AddTime(1); break; case TESTDANGEON_MENU_SAVE: // データをセーブする g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f); g_trialAliceFile.Save(); savedCount = 1; break; case TESTDANGEON_MENU_RESET: g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f); w_yesno.Open(); SetState(SCNSTATE_TESTDANGEON_RESET_YESNO); break; case TESTDANGEON_MENU_EXIT: g_sound.PlaySE(MYSE_SELECT_CANCEL, 1.0f); ReserveScene(SCENE_END, 60); break; case TESTDANGEON_MENU_DEBUG: g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f); SetState(SCNSTATE_TESTDANGEON_CHOOSEDEBUG); s_debug.index = 0; break; } break; case SELECT_CANCEL: g_sound.PlaySE(MYSE_SELECT_CANCEL, 1.0f); s_main.index = MAX_TESTDANGEON_MENU-1; break; default: switch(s_main.index){ case TESTDANGEON_MENU_BGM: // BGM変更 if(g_input.pushedKey & PAD_INPUT_LEFT){ if(g_cfg.BGM == 0){ g_cfg.BGM = MAX_VOLUME; }else{ g_cfg.BGM -= 10; } g_sound.SetVolumeBGM(BGM_MENU, g_cfg.BGM); }else if(g_input.pushedKey & PAD_INPUT_RIGHT){ if(g_cfg.BGM == MAX_VOLUME){ g_cfg.BGM = 0; }else{ g_cfg.BGM += 10; } g_sound.SetVolumeBGM(BGM_MENU, g_cfg.BGM); } break; case TESTDANGEON_MENU_SE: // SE変更 if(g_input.pushedKey & PAD_INPUT_LEFT){ if(g_cfg.SE == 0){ g_cfg.SE = MAX_VOLUME; }else{ g_cfg.SE -= 10; } }else if(g_input.pushedKey & PAD_INPUT_RIGHT){ if(g_cfg.SE == MAX_VOLUME){ g_cfg.SE = 0; }else{ g_cfg.SE += 10; } } if(sceneTime % 90 == 1){ g_sound.PlaySE(MYSE_GET_ITEM, 1.0f); } break; case TESTDANGEON_MENU_AUTOSAVE: // SE変更 if(g_input.pushedKey & PAD_INPUT_LEFT || g_input.pushedKey & PAD_INPUT_RIGHT){ r_aliceInfo.SetAutoSave(!r_aliceInfo.GetAutoSave()); } } } } } break; case SCNSTATE_TESTDANGEON_CHOOSEMAP: switch(s_sub.Move()){ case SELECT_CHOOSE: if(s_sub.index != MAX_TESTDANGEON_STAGE){ // マップIDを取得 g_temp.mapID = ConvertSelectIndexToStageID(s_sub.index); g_temp.MakeDangeonRandNum(); r_aliceInfo.AddTryNum(); g_sound.PlaySE(MYSE_GET_ITEM, 1.0f); ReserveScene(SCENE_MAP, 40); }else{ g_sound.PlaySE(MYSE_SELECT_CANCEL, 1.0f); SetState(SCNSTATE_TESTDANGEON_MAINMENU); s_main.index = 0; } break; case SELECT_CANCEL: g_sound.PlaySE(MYSE_SELECT_CANCEL, 1.0f); SetState(SCNSTATE_TESTDANGEON_MAINMENU); s_main.index = 0; break; } break; case SCNSTATE_TESTDANGEON_BDOLLMANAGE: if(w_bDollManage.GetState() == Window_Base::CLOSED){ g_dollList.ReflectBattleDollsToRecord(); SetState(SCNSTATE_TESTDANGEON_MAINMENU); } break; case SCNSTATE_TESTDANGEON_ITEMMANAGE: if(w_itemManage.GetState() == Window_Base::CLOSED){ g_dollList.ReflectBattleDollsToRecord(); SetState(SCNSTATE_TESTDANGEON_MAINMENU); } break; case SCNSTATE_TESTDANGEON_RESET_YESNO: if(w_yesno.GetState() == Window_Base::CLOSED){ if(w_yesno.GetSelectIndex() == WINDOW_YESNO_YES){ g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f); g_trialAliceFile.Reset(); // g_dollList.ImportAllDolls(&r_aliceDoll); // 人形を初期化する ManageDoll_InitializeTrial(); g_dollList.RefreshAllDolls(&r_aliceDoll, &r_aliceInfo); // 人形を初期化する // ManageDoll_InitializeTrial(); ReserveScene(SCENE_TESTDANGEON, 40); }else{ g_sound.PlaySE(MYSE_SELECT_CANCEL, 1.0f); } SetState(SCNSTATE_TESTDANGEON_MAINMENU); } break; case SCNSTATE_TESTDANGEON_CHECK_MAPRESULT: // ひとまず時間経過させる r_aliceInfo.AddTime(3); // 戦闘に出ていない人形のTPを回復させる g_dollList.HealDollsTP(5, true); switch(g_temp.mapResult){ case TEMP_MAPRESULT_CLEAR: if(!g_trialAliceFile.data.dangeonStage[ConvertStageIDToSelectIndex(g_temp.mapID)]){ g_trialAliceFile.data.dangeonStage[ConvertStageIDToSelectIndex(g_temp.mapID)] = true; wsprintf(buf, _T("dat_text\\clear_stage%02d.txt"), g_temp.mapID); w_hint.OpenAndPlay(buf, WND_HINT_ALICE); // ステージクリアによるボーナス ExecuteMapClearBonus(g_temp.mapID); } if(g_temp.mapID == 3){ s_main.isActive[TESTDANGEON_MENU_DOLLUNITE] = true; } g_temp.mapResult = TEMP_MAPRESULT_NONE; g_temp.mapID = 0; // 選択出来るステージを制限する for(int n=1; n<MAX_TESTDANGEON_STAGE; n++){ s_sub.isActive[n] = g_trialAliceFile.data.dangeonStage[n-1]; } // マップIDのリセット g_temp.mapID = 0; break; default: break; } SetState(SCNSTATE_TESTDANGEON_MAINMENU); g_temp.mapResult = TEMP_MAPRESULT_NONE; break; case SCNSTATE_TESTDANGEON_CHOOSEDEBUG: switch(s_debug.Move()){ case SELECT_CHOOSE: switch(s_debug.index){ case TESTDANGEON_DEBUGMENU_HEALALL: g_sound.PlaySE(MYSE_GET_ITEM, 1.0f); g_dollList.HealDollsTP(99, false); g_dollList.ReflectAllDollsToRecord(); break; case TESTDANGEON_DEBUGMENU_CLEARTUTORIAL: g_sound.PlaySE(MYSE_GET_ITEM, 1.0f); Debug_ClearTutorial(); break; case TESTDANGEON_DEBUGMENU_CLEARSTAGE1: g_sound.PlaySE(MYSE_GET_ITEM, 1.0f); Debug_ClearStage1(); break; case TESTDANGEON_DEBUGMENU_CLEARSTAGE2: g_sound.PlaySE(MYSE_GET_ITEM, 1.0f); Debug_ClearStage2(); break; case TESTDANGEON_DEBUGMENU_CLEARSTAGE3: g_sound.PlaySE(MYSE_GET_ITEM, 1.0f); Debug_ClearStage3(); break; case TESTDANGEON_DEBUGMENU_CLEARSTAGE4: g_sound.PlaySE(MYSE_GET_ITEM, 1.0f); Debug_ClearStage4(); break; case TESTDANGEON_DEBUGMENU_CLEARSTAGE5: g_sound.PlaySE(MYSE_GET_ITEM, 1.0f); Debug_ClearStage5(); break; case TESTDANGEON_DEBUGMENU_CLEARSTAGE6: g_sound.PlaySE(MYSE_GET_ITEM, 1.0f); Debug_ClearStage6(); break; case TESTDANGEON_DEBUGMENU_DOLLCREATE: g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f); ReserveScene(SCENE_DOLLCREATE, 30); break; case TESTDANGEON_DEBUGMENU_EXIT: s_main.index = 0; g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f); SetState(SCNSTATE_TESTDANGEON_MAINMENU); break; } break; case SELECT_CANCEL: g_sound.PlaySE(MYSE_SELECT_CANCEL, 1.0f); SetState(SCNSTATE_TESTDANGEON_MAINMENU); break; } break; } } // savedCountの更新 if(savedCount > 0){ savedCount++; if(savedCount >= TESTDANGEON_SAVED_TIME){ savedCount = 0; } } // healedCountの更新 if(healedCount > 0){ healedCount++; if(healedCount >= TESTDANGEON_HEALED_TIME){ healedCount = 0; } } // ウィンドウの更新 w_hint.UpdateA(); w_bDollManage.UpdateA(); w_itemManage.UpdateA(); w_yesno.UpdateA(); return SCENE_NONE; }