Example #1
0
void Window_Selectable::Update(){
	// 共通アップデート
	Update_Common();
	// 選択時にウィンドウを閉じるかの判定
	CheckAutoClose();
	// キャンセル可能かどうかの判定
	CheckCancelable();
	switch(state){
	case UPDATING:
		// 更新
		switch(select.Move()){
		case SELECT2D_CHOOSE:
			result = select.index;
			if(autoClose){
				state = IDLE;
				Close();
			}
			break;
		case SELECT2D_CANCEL:
			if(cancelable){
				result = WND_SELECTABLE_RESULT_CANCEL;
				Close();
			}
			break;
		}
		break;
	case SUSPENDED:
		// SUSPENDED状態の判定
		state = UPDATING;
		break;
	}
}
void BWindow_UseSkill::Update(){
	Game_CampDoll* pDoll = NULL;
	Update_Common();
	switch(state){
	case UPDATING:
		// 更新
		switch(phaze){
		case WND_USESKILL_PHAZE_SKILLSELECT:
			// 使用スキルマネージャのアップデート
			switch(UpdateUseSkillManager()){
			case USESKILLMANAGER_UPDATE_SELECTED:
				break;
			case USESKILLMANAGER_UPDATE_CANCELED:
				// 閉じる
				state = IDLE;
				resultOnBattle = BWND_USESKILL_RESULT_CANCELED;
				Close();
				break;
			case USESKILLMANAGER_UPDATE_START_CHOOSEDOLL:
				g_sound.PlaySE(MYSE_SELECT_CHOOSE, 1.0f);
				phaze = WND_USESKILL_PHAZE_TARGETSELECT;
				break;
			}
			break;
		case WND_USESKILL_PHAZE_TARGETSELECT:
			if(closingCount == 0){
				// ターゲットの選択
				if(UpdateTargetSelect()){
					// 実際の適用を行う
					switch(useSkillManager.ExecuteSkillForBattleDoll(pScene, s_doll.index)){
					case USESKILLMANAGER_EXECUTE_DONE:
						pScene->ReflectTmpDollData();
						closingCount = 1;
						break;
					default:
						break;
					}
				}
			}else{
				closingCount++;
				if(closingCount >= 30){
					state = IDLE;
					resultOnBattle = BWND_USESKILL_RESULT_USED;
					Close();
				}
			}
			break;
		}
		break;
	case SUSPENDED:
		// SUSPENDED状態の判定
		state = UPDATING;
		break;
	}
}
void BWindow_Result::Update(){
	Update_Common();
	float rate = 0.0f;
	int timing = 0;
	switch(phaze){
	case WND_RESULT_SHOW_INFO:
		if(activeCount > WND_RESULT_SHOW_INFO_TIME){
			phaze = WND_RESULT_ADD_EXP;
		}
		break;
	case WND_RESULT_ADD_EXP:
		timing = activeCount - WND_RESULT_SHOW_INFO_TIME;
		if(activeCount > WND_RESULT_SHOW_INFO_TIME + WND_RESULT_ADD_EXP_TIME){
			// 経験値の加算を終了する

			ImportDollData(false);
			phaze = WND_RESULT_WAITKEY;
		}else{
			// 擬似的な経験値の付加・レベルアップの判定
			ApplyPseudoExpToDolls((float)timing/WND_RESULT_ADD_EXP_TIME);
		}
		break;
	case WND_RESULT_WAITKEY:
		if(g_input.pushedKey & (g_key.input[BTN_CHOOSE] | g_key.input[BTN_CANCEL])){
			phaze = WND_RESULT_LEVELUP;
		}
		break;
	case WND_RESULT_LEVELUP:
		if(w_dollNotice.GetState() == Window_Base::CLOSED){
			if(CheckDollNotice() != -1){
			}else{
				// 終わったら閉じる
				OnClose();
				phaze = WND_RESULT_CLOSING;
				Close(true);
			}
		}
		break;
	case WND_RESULT_CLOSING:
		break;
	}
	w_dollNotice.Update();
}
void Window_Selectable::Update(){
	// 共通アップデート
	Update_Common();
	// 選択時にウィンドウを閉じるかの判定
	CheckAutoClose();
	// キャンセル可能かどうかの判定
	CheckCancelable();
	switch(state){
	case UPDATING:
		// 更新
		switch(select.Move()){
		case SELECT2D_CHOOSE:
			result = select.index;
			if(autoClose){
				state = IDLE;
				Close();
			}
			break;
		case SELECT2D_CANCEL:
			if(cancelable){
				// キャンセルされた時の値を返す。
				result = indexOnCanceled;
				/*
				if(indexOnCanceled >= 0){
					select.index = indexOnCanceled;
				}
				*/
				state = IDLE;
				Close();
			}
			break;
		}
		break;
	case SUSPENDED:
		// SUSPENDED状態の判定
		state = UPDATING;
		break;
	}
}
void BWindow_ChooseFront::Update(){
	Update_Common();
	// ステートによる分岐
	switch(state){
	case UPDATING:
		// キャンセルで閉じられるように
		if(!isFirstArrange && (g_input.pushedKey & g_key.input[BTN_CANCEL])){
			// その場合は何も反映させない
			canceled = true;
			Close(true, false);
			return;
		}
		if(!cursorIsConfirm){
			// 最初に下キーの判定を行う
			if(s_main.GetRow(s_main.index) == s_main.row-1){
				if(GetSelectedDollNum() > 0){
					if((g_input.pushedKey & PAD_INPUT_DOWN) && canConfirm){
						cursorIsConfirm = true;
					}
				}
			}
			// 選択肢の分岐
			switch(s_main.Move()){
			case SELECT2D_CHOOSE:
				// クリックした時の動作
				OnChoosed(s_main.index);
				break;
			case SELECT2D_CANCEL:
				/*
				if(cancelable){
					select.index = SELECTRESULT_CANCELED;
					pWndCommand->SetPhaze(BWND_DOLLCOMMAND_PHAZE_MAIN);
					Close(true, false);
					// スキルの情報を表示するウィンドウを閉じる。
					pScene->CloseSkillAccLineWindow();
					break;
				}
				*/
				break;
			default:
				break;
			}
		}else{
			if(g_input.pushedKey & g_key.input[BTN_CHOOSE]){
				// 決定に合わせた上で決定キーを押すと決定
				for(int n=0; n<MAX_BATTLEDOLL; n++){
					pScene->SetDollIsFront(n, false);
				}
				for(int n=0; n<NUM_BATTLEDOLL_FRONT; n++){
					if(selectedIndex[n] != -1){
						pScene->SetDollIsFront(selectedIndex[n], true);
					}
				}
				if(pScene->AttachDollPtrToSprite()){
					state = IDLE;
					if(!isFirstArrange){
						arrangedInTurn = true;
					}
					isFirstArrange = false;
					canceled = false;
					Close();
				}
			}else if(g_input.pushedKey & PAD_INPUT_UP){
				cursorIsConfirm = false;
			}
		}
		if(g_input.pushedKey & g_key.input[BTN_SHOWINFO]){
			// 表示状態を情報キーで入れ替えることが出来る
			ChangeFullWindow(!isFullWindow);
		}
		break;
	case SUSPENDED:
		state = UPDATING;
		break;
	}
}