public void MonsterDataReflect(IMonsterData monsterData, IMonsterData enemyMonsterData)
    {
        //技をTextに反映
        for (int i = 0; i < commandParts_.GetCommandWindowTextsCount(); ++i)
        {
            commandParts_.CommandWindowChoiceTextChange(i, " " + t13.Utility.StringFullSpaceBackTamp(monsterData.GetSkillDatas(i).skillName_, 7));
        }

        //文字の色の変更
        //for (int i = 0; i < commandParts_.GetCommandWindowTextsCount(); ++i) {
        //	int simillarResult = enemyMonsterData.ElementSimillarCheckerForValue(monsterData.GetSkillDatas(i).elementType_);
        //
        //	if (simillarResult == 0) commandParts_.GetCommandWindowTexts(i).color = new Color32(195, 195, 195, 255);
        //	else if (simillarResult == 1) commandParts_.GetCommandWindowTexts(i).color = new Color32(52, 130, 207, 255);
        //	else if (simillarResult == 2) commandParts_.GetCommandWindowTexts(i).color = new Color32(50, 50, 50, 255);
        //	else if (simillarResult == 3) commandParts_.GetCommandWindowTexts(i).color = new Color32(207, 52, 112, 255);
        //}
        //for (int i = 0; i < commandParts_.GetCommandWindowTextsCount(); ++i) {
        //	commandParts_.CommandWindowChoiceColorChange(i, monsterData.GetSkillDatas(i).elementType_.GetColor());
        //}

        //技のフレームの変更
        for (int i = 0; i < skillFrameSprites_.Count; ++i)
        {
            skillFrameSprites_[i].sprite = monsterData.GetSkillDatas(i).elementType_.GetSkillFrameSprite();
        }
    }
    public IProcessState Update(BattleManager mgr)
    {
        if (AllEventManager.GetInstance().EventUpdate())
        {
            eventEnd_ = true;
        }

        //敵の思考時間の処理
        EnemyBattleData.GetInstance().ThinkingTimeCounter();

        //思考時間が終わっていたら
        if (EnemyBattleData.GetInstance().ThinkingTimeEnd() &&
            eventEnd_)
        {
            int commandRandomResult = AllSceneManager.GetInstance().GetRandom().Next(0, 100);

            //エネミーの行動の決定
            if (commandRandomResult < EnemyTrainerData.GetInstance().GetAttackRate())
            {
            }
            else if (commandRandomResult < EnemyTrainerData.GetInstance().GetAttackRate() + EnemyTrainerData.GetInstance().GetTradeRate())
            {
                //タイプ相性の測定
                int[] typeSimillarResult = new int[2] {
                    0, 0
                };
                int[] monsterNumbers = new int[2] {
                    1, 2
                };

                //先頭以外で測定
                for (int i = 0; i < EnemyBattleData.GetInstance().GetMonsterDatasLength() - 1; ++i)
                {
                    //戦えたら、None以外だったら
                    if (EnemyBattleData.GetInstance().GetMonsterDatas(i).battleActive_ &&
                        EnemyBattleData.GetInstance().GetMonsterDatas(i).tribesData_.monsterNumber_ != 0)
                    {
                        {
                            int simillarResult = PlayerBattleData.GetInstance().GetMonsterDatas(0).ElementSimillarCheckerForValue(EnemyBattleData.GetInstance().GetMonsterDatas(i).tribesData_.firstElement_);

                            typeSimillarResult[i] += simillarResult;
                        }
                        {
                            int simillarResult = PlayerBattleData.GetInstance().GetMonsterDatas(0).ElementSimillarCheckerForValue(EnemyBattleData.GetInstance().GetMonsterDatas(i).tribesData_.secondElement_);

                            typeSimillarResult[i] += simillarResult;
                        }
                    }
                }

                //タイプ相性が良い順にソート
                t13.Utility.SimpleHiSort2Index(typeSimillarResult, monsterNumbers);

                //交換するモンスターの選択
                for (int i = 0; i < monsterNumbers.Length; ++i)
                {
                    //Noneまたは、戦えなかったら
                    if (EnemyBattleData.GetInstance().GetMonsterDatas(monsterNumbers[i]).tribesData_.monsterNumber_ == (int)MonsterTribesDataNumber.None ||
                        !EnemyBattleData.GetInstance().GetMonsterDatas(monsterNumbers[i]).battleActive_
                        )
                    {
                        continue;
                    }

                    EnemyBattleData.GetInstance().changeMonsterNumber_ = monsterNumbers[i];

                    EnemyBattleData.GetInstance().changeMonsterActive_ = true;

                    //ループの終了
                    i = monsterNumbers.Length;
                }
            }

            //現在、場に出ているモンスターのデータの取得
            IMonsterData enemyMD  = EnemyBattleData.GetInstance().GetMonsterDatas(EnemyBattleData.GetInstance().changeMonsterNumber_);
            IMonsterData playerMD = PlayerBattleData.GetInstance().GetMonsterDatas(0);

            const int EFFECT_ATTACK_SIZE  = 4;
            int       nowEffectAttackSize = 0;
            int[]     skillDamages        = new int[EFFECT_ATTACK_SIZE] {
                0, 0, 0, 0,
            };
            int[] skillNumbers = new int[EFFECT_ATTACK_SIZE] {
                0, 0, 0, 0,
            };

            //攻撃技の威力計算
            for (int i = 0; i < enemyMD.GetSkillSize(); ++i)
            {
                //HPへのダメージ技以外だったら
                if (enemyMD.GetSkillDatas(i).effectValueType_.state_ != EffectValueTypeState.HitPointDamage)
                {
                    continue;
                }

                skillDamages[nowEffectAttackSize] = MonsterData.TestDamageCalculate(enemyMD, playerMD, enemyMD.GetSkillDatas(i));
                skillNumbers[nowEffectAttackSize] = i;
                nowEffectAttackSize += 1;
            }

            //ダメージ量を大きい順にソート
            for (int i = 0; i < nowEffectAttackSize - 1; ++i)
            {
                for (int j = i + 1; j < nowEffectAttackSize; ++j)
                {
                    if (skillDamages[i] < skillDamages[j])
                    {
                        {
                            int tmp = skillDamages[i];
                            skillDamages[i] = skillDamages[j];
                            skillDamages[j] = tmp;
                        }
                        {
                            int tmp = skillNumbers[i];
                            skillNumbers[i] = skillNumbers[j];
                            skillNumbers[j] = tmp;
                        }
                    }
                }
            }

            //一番の火力の高い技を選択
            for (int i = 0; i < skillNumbers.Length; ++i)
            {
                //if (enemyMD.GetSkillDatas(skillNumbers[i]).nowPlayPoint_ > 0) {
                //	mgr.enemySelectSkillNumber_ = skillNumbers[i];
                //	i = skillNumbers.Length;
                //}
                mgr.enemySelectSkillNumber_ = skillNumbers[i];
                i = skillNumbers.Length;
            }

            //こんらん状態であれば
            if (enemyMD.battleData_.HaveAbnormalType(AbnormalType.Confusion))
            {
                //2/10の確立
                if (AllSceneManager.GetInstance().GetRandom().Next(0, 10) < 3)
                {
                    mgr.enemySelectSkillNumber_ = AllSceneManager.GetInstance().GetRandom().Next(0, skillNumbers.Length);
                }
            }

            //気まぐれで変化
            //3/10の確立
            if (AllSceneManager.GetInstance().GetRandom().Next(0, 10) < 3)
            {
                mgr.enemySelectSkillNumber_ = AllSceneManager.GetInstance().GetRandom().Next(0, skillNumbers.Length);
            }

            //dpが100以上だったら
            if (EnemyBattleData.GetInstance().GetDreamPoint() >= 100)
            {
                //先頭がパワーアップしていなかったら
                if (!EnemyBattleData.GetInstance().GetMonsterDatas(0).battleData_.HaveAbnormalType(AbnormalType.Hero))
                {
                    //パワーアップするか否かのフラグの設定
                    EnemyBattleData.GetInstance().dreamSyncronize_ = true;
                }
            }

            //ppの消費
            //ISkillData enemySkillData = enemyMD.GetSkillDatas(mgr.enemySelectSkillNumber_);
            //enemySkillData.nowPlayPoint_ -= 1;

            eventEnd_ = false;

            return(mgr.nowProcessState().NextProcess());
        }

        //やけどのダメージ処理
        if (mgr.BurnsDamageProcess(EnemyBattleData.GetInstance(), mgr.GetEnemyStatusInfoParts(), mgr.GetEnemyMonsterParts()))
        {
            return(new CommandEventExecuteProcess());
        }

        if (EnemyBattleData.GetInstance().PoinsonCounter())
        {
            //どくのダメージ処理
            mgr.PoisonDamageProcess(EnemyBattleData.GetInstance(), mgr.GetEnemyStatusInfoParts(), mgr.GetEnemyMonsterParts());
            if (mgr.PoisonDamageDown())
            {
                return(new CommandEventExecuteProcess());
            }
        }

        return(this);
    }
    public IProcessState Update(BattleManager mgr)
    {
        ////DPの演出のイベント
        //mgr.PlayerEnemyStatusInfoPartsDPEffect();

        //ウィンドウの表示
        mgr.GetNovelWindowParts().gameObject.SetActive(true);

        //ウェイト
        AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime());

        //パワーアップしていたら
        if (PlayerBattleData.GetInstance().dreamSyncronize_ == true)
        {
            //dpの初期化
            PlayerBattleData.GetInstance().DreamPointReset();
            PlayerBattleData.GetInstance().dreamSyncronize_ = false;

            //ゆめの文字色の変更
            mgr.GetDreamCommandSprite().color = new Color32(255, 255, 255, 255);

            //DPの演出のイベント
            mgr.GetPlayerDreamPointInfoParts().DPEffectEventSet(PlayerBattleData.GetInstance().GetDreamPoint());

            //ウェイト
            AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime());

            //BGMの音量の減少
            AllEventManager.GetInstance().BGMAudioVolumeChangeEventSet(0.15f);

            //パワーアップの演出
            mgr.GetDreamEffectParts().DreamSyncronizeEventSet(PlayerBattleData.GetInstance().GetMonsterDatas(0), new Vector3(-13.0f, 0.8f, -1.0f), new Vector3(13.0f, 0.8f, -1.0f));

            //画像の変更
            {
                List <Sprite> sprites = new List <Sprite>();
                sprites.Add(PlayerBattleData.GetInstance().GetMonsterDatas(0).tribesData_.backDreamTex_);

                AllEventManager.GetInstance().EventSpriteRendererSet(mgr.GetPlayerMonsterParts().GetEventMonsterSprite(), sprites);
                AllEventManager.GetInstance().EventSpriteRenderersUpdateExecuteSet(EventSpriteRendererEventManagerExecute.SpriteSet);
                AllEventManager.GetInstance().AllUpdateEventExecute();
            }

            //BGMの変更
            AllEventManager.GetInstance().BGMAudioClipChangeEventSet(ResourcesSoundsLoader.GetInstance().GetSounds(SoundsPathSupervisor.GetInstance().GetPathDreamers_Rock()));

            //BGMの再生
            AllEventManager.GetInstance().BGMAudioVolumeChangeEventSet(0.3f);
            AllEventManager.GetInstance().BGMAudioPlayEventSet();

            //能力変化の更新
            string abnormalStateContext = new AddAbnormalTypeState(AddAbnormalType.Hero).AddAbnormalTypeExecute(PlayerBattleData.GetInstance().GetMonsterDatas(0));

            //文字列のイベント
            AllEventManager.GetInstance().EventTextSet(mgr.GetNovelWindowParts().GetNovelWindowEventText(), abnormalStateContext);
            AllEventManager.GetInstance().EventTextsUpdateExecuteSet(EventTextEventManagerExecute.CharaUpdate);
            AllEventManager.GetInstance().AllUpdateEventExecute(mgr.GetEventContextUpdateTime());

            //状態異常のイベントのセット
            PlayerBattleData.GetInstance().GetMonsterDatas(0).battleData_.AbnormalSetStatusInfoPartsEventSet(mgr.GetPlayerStatusInfoParts());

            //ウェイト
            AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime());

            //ねむりの終了処理
            mgr.SleepProcessEnd();

            //ウェイト
            AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime());
        }

        //パワーアップしていたら
        if (EnemyBattleData.GetInstance().dreamSyncronize_ == true)
        {
            //dpの初期化
            EnemyBattleData.GetInstance().DreamPointReset();
            EnemyBattleData.GetInstance().dreamSyncronize_ = false;

            //DPの演出のイベント
            mgr.GetEnemyDreamPointInfoParts().DPEffectEventSet(EnemyBattleData.GetInstance().GetDreamPoint());

            //ウェイト
            AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime());

            //BGMの音量の減少
            AllEventManager.GetInstance().BGMAudioVolumeChangeEventSet(0.15f);

            //パワーアップの演出
            mgr.GetDreamEffectParts().DreamSyncronizeEventSet(EnemyBattleData.GetInstance().GetMonsterDatas(0), new Vector3(13.0f, 0.8f, -1.0f), new Vector3(-13.0f, 0.8f, -1.0f));

            //画像の変更
            {
                List <Sprite> sprites = new List <Sprite>();
                sprites.Add(EnemyBattleData.GetInstance().GetMonsterDatas(0).tribesData_.frontDreamTex_);

                AllEventManager.GetInstance().EventSpriteRendererSet(mgr.GetEnemyMonsterParts().GetEventMonsterSprite(), sprites);
                AllEventManager.GetInstance().EventSpriteRenderersUpdateExecuteSet(EventSpriteRendererEventManagerExecute.SpriteSet);
                AllEventManager.GetInstance().AllUpdateEventExecute();
            }

            //BGMの再生
            AllEventManager.GetInstance().BGMAudioVolumeChangeEventSet(0.3f);

            //能力変化の更新
            string abnormalStateContext = new AddAbnormalTypeState(AddAbnormalType.Hero).AddAbnormalTypeExecute(EnemyBattleData.GetInstance().GetMonsterDatas(0));

            //文字列のイベント
            AllEventManager.GetInstance().EventTextSet(mgr.GetNovelWindowParts().GetNovelWindowEventText(), abnormalStateContext);
            AllEventManager.GetInstance().EventTextsUpdateExecuteSet(EventTextEventManagerExecute.CharaUpdate);
            AllEventManager.GetInstance().AllUpdateEventExecute(mgr.GetEventContextUpdateTime());

            //状態異常のイベントのセット
            EnemyBattleData.GetInstance().GetMonsterDatas(0).battleData_.AbnormalSetStatusInfoPartsEventSet(mgr.GetEnemyStatusInfoParts());

            //ウェイト
            AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime());
        }

        //交換されていたら
        if (PlayerBattleData.GetInstance().changeMonsterActive_ == true)
        {
            PlayerBattleData.GetInstance().MonsterChangeEventSet(mgr);
        }

        //交換されていたら
        if (EnemyBattleData.GetInstance().changeMonsterActive_ == true)
        {
            EnemyBattleData.GetInstance().MonsterChangeEventSet(mgr);
        }

        //現在、場に出ているモンスターのデータの取得
        IMonsterData enemyMonsterData  = EnemyBattleData.GetInstance().GetMonsterDatas(0);
        IMonsterData playerMonsterData = PlayerBattleData.GetInstance().GetMonsterDatas(0);

        //現在、場に出ているモンスターの選択技のデータの取得
        ISkillData enemySkillData  = enemyMonsterData.GetSkillDatas(mgr.enemySelectSkillNumber_);
        ISkillData playerSkillData = playerMonsterData.GetSkillDatas(mgr.playerSelectSkillNumber_);

        //技の優先度で行動順を決める
        if (enemySkillData.triggerPriority_ < playerSkillData.triggerPriority_)
        {
            //プレイヤーの戦闘処理
            SkillResultSet(
                mgr
                , mgr.GetPlayerEffectParts()
                , mgr.GetEnemyEffectParts()
                , mgr.GetEnemyMonsterParts()
                , mgr.GetPlayerStatusInfoParts()
                , mgr.GetEnemyStatusInfoParts()
                , mgr.GetPlayerDreamPointInfoParts()
                , mgr.GetEnemyDreamPointInfoParts()
                , PlayerBattleData.GetInstance()
                , EnemyBattleData.GetInstance()
                , playerMonsterData, playerSkillData, enemyMonsterData
                );
            //エネミーの戦闘処理
            SkillResultSet(
                mgr
                , mgr.GetEnemyEffectParts()
                , mgr.GetPlayerEffectParts()
                , mgr.GetPlayerMonsterParts()
                , mgr.GetEnemyStatusInfoParts()
                , mgr.GetPlayerStatusInfoParts()
                , mgr.GetEnemyDreamPointInfoParts()
                , mgr.GetPlayerDreamPointInfoParts()
                , EnemyBattleData.GetInstance()
                , PlayerBattleData.GetInstance()
                , enemyMonsterData, enemySkillData, playerMonsterData
                );
        }
        else if (enemySkillData.triggerPriority_ > playerSkillData.triggerPriority_)
        {
            //エネミーの戦闘処理
            SkillResultSet(
                mgr
                , mgr.GetEnemyEffectParts()
                , mgr.GetPlayerEffectParts()
                , mgr.GetPlayerMonsterParts()
                , mgr.GetEnemyStatusInfoParts()
                , mgr.GetPlayerStatusInfoParts()
                , mgr.GetEnemyDreamPointInfoParts()
                , mgr.GetPlayerDreamPointInfoParts()
                , EnemyBattleData.GetInstance()
                , PlayerBattleData.GetInstance()
                , enemyMonsterData, enemySkillData, playerMonsterData
                );
            //プレイヤーの戦闘処理
            SkillResultSet(
                mgr
                , mgr.GetPlayerEffectParts()
                , mgr.GetEnemyEffectParts()
                , mgr.GetEnemyMonsterParts()
                , mgr.GetPlayerStatusInfoParts()
                , mgr.GetEnemyStatusInfoParts()
                , mgr.GetPlayerDreamPointInfoParts()
                , mgr.GetEnemyDreamPointInfoParts()
                , PlayerBattleData.GetInstance()
                , EnemyBattleData.GetInstance()
                , playerMonsterData, playerSkillData, enemyMonsterData
                );
        }
        //素早さで行動順を決める
        else if ((enemyMonsterData.RealSpeed() * enemyMonsterData.battleData_.RealSpeedParameterRank()) < (playerMonsterData.RealSpeed() * playerMonsterData.battleData_.RealSpeedParameterRank()))
        {
            //プレイヤーの戦闘処理
            SkillResultSet(
                mgr
                , mgr.GetPlayerEffectParts()
                , mgr.GetEnemyEffectParts()
                , mgr.GetEnemyMonsterParts()
                , mgr.GetPlayerStatusInfoParts()
                , mgr.GetEnemyStatusInfoParts()
                , mgr.GetPlayerDreamPointInfoParts()
                , mgr.GetEnemyDreamPointInfoParts()
                , PlayerBattleData.GetInstance()
                , EnemyBattleData.GetInstance()
                , playerMonsterData, playerSkillData, enemyMonsterData
                );
            //エネミーの戦闘処理
            SkillResultSet(
                mgr
                , mgr.GetEnemyEffectParts()
                , mgr.GetPlayerEffectParts()
                , mgr.GetPlayerMonsterParts()
                , mgr.GetEnemyStatusInfoParts()
                , mgr.GetPlayerStatusInfoParts()
                , mgr.GetEnemyDreamPointInfoParts()
                , mgr.GetPlayerDreamPointInfoParts()
                , EnemyBattleData.GetInstance()
                , PlayerBattleData.GetInstance()
                , enemyMonsterData, enemySkillData, playerMonsterData
                );
        }
        else if ((enemyMonsterData.RealSpeed() * enemyMonsterData.battleData_.RealSpeedParameterRank()) == (playerMonsterData.RealSpeed() * playerMonsterData.battleData_.RealSpeedParameterRank()))
        {
            if (AllSceneManager.GetInstance().GetRandom().Next(0, 2) < 1)
            {
                //プレイヤーの戦闘処理
                SkillResultSet(
                    mgr
                    , mgr.GetPlayerEffectParts()
                    , mgr.GetEnemyEffectParts()
                    , mgr.GetEnemyMonsterParts()
                    , mgr.GetPlayerStatusInfoParts()
                    , mgr.GetEnemyStatusInfoParts()
                    , mgr.GetPlayerDreamPointInfoParts()
                    , mgr.GetEnemyDreamPointInfoParts()
                    , PlayerBattleData.GetInstance()
                    , EnemyBattleData.GetInstance()
                    , playerMonsterData, playerSkillData, enemyMonsterData
                    );
                //エネミーの戦闘処理
                SkillResultSet(
                    mgr
                    , mgr.GetEnemyEffectParts()
                    , mgr.GetPlayerEffectParts()
                    , mgr.GetPlayerMonsterParts()
                    , mgr.GetEnemyStatusInfoParts()
                    , mgr.GetPlayerStatusInfoParts()
                    , mgr.GetEnemyDreamPointInfoParts()
                    , mgr.GetPlayerDreamPointInfoParts()
                    , EnemyBattleData.GetInstance()
                    , PlayerBattleData.GetInstance()
                    , enemyMonsterData, enemySkillData, playerMonsterData
                    );
            }
            else
            {
                //エネミーの戦闘処理
                SkillResultSet(
                    mgr
                    , mgr.GetEnemyEffectParts()
                    , mgr.GetPlayerEffectParts()
                    , mgr.GetPlayerMonsterParts()
                    , mgr.GetEnemyStatusInfoParts()
                    , mgr.GetPlayerStatusInfoParts()
                    , mgr.GetEnemyDreamPointInfoParts()
                    , mgr.GetPlayerDreamPointInfoParts()
                    , EnemyBattleData.GetInstance()
                    , PlayerBattleData.GetInstance()
                    , enemyMonsterData, enemySkillData, playerMonsterData
                    );
                //プレイヤーの戦闘処理
                SkillResultSet(
                    mgr
                    , mgr.GetPlayerEffectParts()
                    , mgr.GetEnemyEffectParts()
                    , mgr.GetEnemyMonsterParts()
                    , mgr.GetPlayerStatusInfoParts()
                    , mgr.GetEnemyStatusInfoParts()
                    , mgr.GetPlayerDreamPointInfoParts()
                    , mgr.GetEnemyDreamPointInfoParts()
                    , PlayerBattleData.GetInstance()
                    , EnemyBattleData.GetInstance()
                    , playerMonsterData, playerSkillData, enemyMonsterData
                    );
            }
        }
        else
        {
            //エネミーの戦闘処理
            SkillResultSet(
                mgr
                , mgr.GetEnemyEffectParts()
                , mgr.GetPlayerEffectParts()
                , mgr.GetPlayerMonsterParts()
                , mgr.GetEnemyStatusInfoParts()
                , mgr.GetPlayerStatusInfoParts()
                , mgr.GetEnemyDreamPointInfoParts()
                , mgr.GetPlayerDreamPointInfoParts()
                , EnemyBattleData.GetInstance()
                , PlayerBattleData.GetInstance()
                , enemyMonsterData, enemySkillData, playerMonsterData
                );
            //プレイヤーの戦闘処理
            SkillResultSet(
                mgr
                , mgr.GetPlayerEffectParts()
                , mgr.GetEnemyEffectParts()
                , mgr.GetEnemyMonsterParts()
                , mgr.GetPlayerStatusInfoParts()
                , mgr.GetEnemyStatusInfoParts()
                , mgr.GetPlayerDreamPointInfoParts()
                , mgr.GetEnemyDreamPointInfoParts()
                , PlayerBattleData.GetInstance()
                , EnemyBattleData.GetInstance()
                , playerMonsterData, playerSkillData, enemyMonsterData
                );
        }

        //白紙に
        AllEventManager.GetInstance().EventTextSet(mgr.GetNovelWindowParts().GetNovelWindowEventText(), " ");
        AllEventManager.GetInstance().EventTextsUpdateExecuteSet(EventTextEventManagerExecute.CharaUpdate);
        AllEventManager.GetInstance().AllUpdateEventExecute();
        //ウェイト
        AllEventManager.GetInstance().EventWaitSet(0.5f);

        //イベントの最後
        AllEventManager.GetInstance().EventFinishSet();

        //交換判定の初期化
        PlayerBattleData.GetInstance().changeMonsterActive_ = false;
        EnemyBattleData.GetInstance().changeMonsterActive_  = false;

        return(mgr.nowProcessState().NextProcess());
    }