//---------------------------------------------------------------------------- /*! * @brief 主人公スキル発動タッチ処理: */ //---------------------------------------------------------------------------- public void OnHeroToutch() { // メニューオープンタイミングのチェック bool isOpen = InGameUtil.ChkInGameOpenWindowTiming(); if (isOpen == false) { return; } // チュートリアル中の発動禁止処理. if (BattleParam.IsTutorial()) { if (BattleSceneManager.Instance.isTutorialForbidLimitBreak(GlobalDefine.PartyCharaIndex.HERO)) { return; } } LocalSaveOption cOption = LocalSaveManager.Instance.LoadFuncOption(); if (cOption.m_OptionConfirmAS == (int)LocalSaveDefine.OptionConfirmAS.ON) { // ヒーロースキル発動確認ウィンドウを開く if (InGameMenuManagerQuest2.Instance != null) { InGameMenuManagerQuest2.Instance.OpenSkillMenu(GlobalDefine.PartyCharaIndex.HERO, 0, m_HeroTotalSkillPrv); } } else { // ヒーロースキルを即時発動 BattleParam.RequestLBS(GlobalDefine.PartyCharaIndex.HERO); } }
//---------------------------------------------------------------------------- /*! * @brief スキル発動OKボタンタッチ処理 */ //---------------------------------------------------------------------------- public void OnSkillYes() { if (m_OkDisable == true) { SoundUtil.PlaySE(SEID.SE_MENU_NG); return; } if (InGameUtil.isQuest2() == true) { changePartyUnitParent(false); } if (m_CharaIdx == GlobalDefine.PartyCharaIndex.HERO) { m_newSkill.setupHeroSkill(0); } else { m_newSkill.setupLimitBreakSkill(0, 0); } m_InGameMenuQuest2.Skill_menu_active = false; m_InGameMenuQuest2.Menu_bg_active = false; m_SkillMenuActive = false; SoundUtil.PlaySE(SEID.SE_MENU_OK); m_MenuButton.color = Color.white; UnityUtil.SetObjectEnabled(m_MenuButtonMask, false); BattleParam.RequestLBS(m_CharaIdx); }
/// <summary> /// リミットブレイクスキル発動ボタンが押された /// </summary> /// <param name="my_owner_object"></param> public void OnPushLimitBreakSkillButton(GameObject my_owner_object) { for (int idx = 0; idx < (int)GlobalDefine.PartyCharaIndex.MAX; idx++) { GameObject wrk_button = m_MemberObject[idx]; if (wrk_button == my_owner_object) { BattleParam.RequestLBS((GlobalDefine.PartyCharaIndex)idx); break; } } }
public void update(float delta_time) { if (m_IsPlaying) { if (m_IsDebugStopMode) { bool mouse_button = Input.GetMouseButton(0); if (mouse_button) { BattleParam.setAutoPlayState(BattleParam.AutoPlayState.CANCEL); m_IsPlaying = false; m_AutoPlayPhase = AutoPlayPhase.NOT_INPUT_PHASE; return; } } BattleParam.BattlePhase battle_phase = BattleParam.getBattlePhase(); if (battle_phase == BattleParam.BattlePhase.INPUT || battle_phase == BattleParam.BattlePhase.INPUT_HANDLING ) { if (m_IsFullField) { return; } Vector2 hand_pos = new Vector2(2.0f, 5.0f); //画面外の見えない位置に初期化 bool is_touching = false; switch (m_AutoPlayPhase) { case AutoPlayPhase.NOT_INPUT_PHASE: { // オートプレイの停止判定 if (m_AI.isStopAutoPlay()) { BattleParam.setAutoPlayState(BattleParam.AutoPlayState.CANCEL); m_IsPlaying = false; m_AutoPlayPhase = AutoPlayPhase.NOT_INPUT_PHASE; m_IsFullField = false; return; } // プレイヤーフェイズに戻ってきたときにここに来る. m_Timer = 1.0f; m_AutoPlayPhase = AutoPlayPhase.START_WAIT; } break; case AutoPlayPhase.START_WAIT: { m_Timer -= delta_time; if (m_Timer <= 0.0f) { m_PanelInfo = new AI.PanelInfo(); m_PanelInfo.m_HandElements = new MasterDataDefineLabel.ElementType[m_BattleCardManager.m_HandArea.getCardMaxCount()]; m_PanelInfo.m_NextElements = new MasterDataDefineLabel.ElementType[m_BattleCardManager.m_NextArea.getCardMaxCount()]; m_PanelInfo.m_FieldElements = new AI.CostInfo[m_BattleCardManager.m_FieldAreas.getFieldAreaCountMax()]; for (int field_idx = 0; field_idx < m_PanelInfo.m_FieldElements.Length; field_idx++) { m_PanelInfo.m_FieldElements[field_idx] = new AI.CostInfo(m_BattleCardManager.m_FieldAreas.getFieldArea(field_idx).getCardMaxCount()); } m_PanelInfo.m_FieldCosts = new int[m_PanelInfo.m_FieldElements.Length]; m_PanelInfo.m_IsBoosts = new bool[m_PanelInfo.m_FieldElements.Length]; // 思考ルーチン初期化 m_AI.initThink(_updatePanelInfo()); // リミブレスキルをチェック GlobalDefine.PartyCharaIndex limit_break_skill_caster = m_AI.getLimitBreakSkillCaster(); if (BattleParam.IsEnableLBS(limit_break_skill_caster) == false) { limit_break_skill_caster = GlobalDefine.PartyCharaIndex.ERROR; } if (limit_break_skill_caster >= GlobalDefine.PartyCharaIndex.LEADER && limit_break_skill_caster <= GlobalDefine.PartyCharaIndex.FRIEND ) { // リミブレスキル発動 BattleParam.RequestLBS(limit_break_skill_caster); m_AutoPlayPhase = AutoPlayPhase.NOT_INPUT_PHASE; m_IsFullField = false; } else { // パネル操作開始 m_PanelPutTimer = 0.0f; m_PanelPutCountGoal = m_AI.getPanelPutCount(); m_PanelPutCountCurrent = 0; float count_down_time = BattleSceneManager.Instance.PRIVATE_FIELD.calcCountDownTime(); if (count_down_time < COUNT_DOWN_TIME) { count_down_time = COUNT_DOWN_TIME; } m_PanelPutInterval = count_down_time / m_PanelPutCountGoal * (1.0f + 1.0f / m_PanelPutCountGoal); m_AutoPlayPhase = AutoPlayPhase.CARD_GET; } } } break; case AutoPlayPhase.CARD_GET: { m_PanelPutTimer += delta_time; float card_get_time = m_PanelPutCountCurrent * m_PanelPutInterval; // カードを掴む時刻 if (m_PanelPutTimer >= card_get_time) { if (m_BattleCardManager != null) { if (m_BattleCardManager.m_FieldAreas.getFieldArea(0).isFull() && m_BattleCardManager.m_FieldAreas.getFieldArea(1).isFull() && m_BattleCardManager.m_FieldAreas.getFieldArea(2).isFull() && m_BattleCardManager.m_FieldAreas.getFieldArea(3).isFull() && m_BattleCardManager.m_FieldAreas.getFieldArea(4).isFull() ) { BattleSceneManager.Instance.PRIVATE_FIELD.skipCountDown(); m_IsFullField = true; m_AutoPlayPhase = AutoPlayPhase.NOT_INPUT_PHASE; return; } } // カウントダウンスキップ判定 if (m_AI.isSkipCountDown()) { BattleSceneManager.Instance.PRIVATE_FIELD.skipCountDown(); m_AutoPlayPhase = AutoPlayPhase.NOT_INPUT_PHASE; m_IsFullField = false; return; } // 思考ルーチン呼び出し int hand_index = 0; int field_index = 0; m_AI.execThink(ref hand_index, ref field_index, _updatePanelInfo()); m_StartPosition = new Vector2(hand_index, 1.0f - 0.3f); m_GoalPosition = new Vector2(field_index, 0.0f - 0.5f); hand_pos = m_StartPosition; is_touching = true; float card_put_time = (m_PanelPutCountCurrent + 1) * m_PanelPutInterval - CARD_PUT_TIME; // カードを置く時刻 m_Duration = card_put_time - m_PanelPutTimer; m_Duration = Mathf.Max(m_Duration, 0.0f); m_Duration = Mathf.Min(m_Duration, CARD_MOVE_TIME_MAX); m_Timer = 0.0f; m_AutoPlayPhase = AutoPlayPhase.CARD_MOVE; } } break; case AutoPlayPhase.CARD_MOVE: { m_PanelPutTimer += delta_time; m_Timer += delta_time; if (m_Timer < m_Duration) { float t = m_Timer / m_Duration; Vector2 vec = m_GoalPosition - m_StartPosition; vec.x *= t * t; // 横方向は動き始めをゆっくりにする(2枚以上を掴まないようにするため) vec.y *= t; hand_pos = m_StartPosition + vec; is_touching = true; } else { hand_pos = m_GoalPosition; is_touching = true; m_AutoPlayPhase = AutoPlayPhase.CARD_PUT; } } break; case AutoPlayPhase.CARD_PUT: // タッチしていないフレームが最低1フレームはあるようにするための処理 { m_PanelPutTimer += delta_time; m_PanelPutCountCurrent++; hand_pos = m_GoalPosition; is_touching = false; m_AutoPlayPhase = AutoPlayPhase.CARD_GET; } break; } BattleSceneManager.Instance.setOverrideTouchMode(BattleSceneManager.Instance.getCardFieldScreenPos(hand_pos.x, hand_pos.y), is_touching); } else { m_AutoPlayPhase = AutoPlayPhase.NOT_INPUT_PHASE; m_IsFullField = false; } } else { m_AutoPlayPhase = AutoPlayPhase.NOT_INPUT_PHASE; m_IsFullField = false; } }
/// <summary> /// ヒーロースキル(必殺技)発動ボタンが押された /// </summary> public void OnPushHeroSkillButton() { BattleParam.RequestLBS(GlobalDefine.PartyCharaIndex.HERO); }