Beispiel #1
0
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;

}
Beispiel #2
0
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;
}