public MasterDataDefineLabel.EnemyACTPatternSelectType Get_timing_type(int index)
    {
        MasterDataDefineLabel.EnemyACTPatternSelectType ret_val = MasterDataDefineLabel.EnemyACTPatternSelectType.NONE;

        switch (index)
        {
        case 0:
            ret_val = timing_type;
            break;
        }

        return(ret_val);
    }
    /// <summary>
    /// 現在の条件を満たした敵行動テーブルを検索
    /// </summary>
    /// <param name="battle_total_turn"></param>
    /// <returns></returns>
    private MasterDataEnemyActionTable searchCurrentMasterDataEnemyActionTable(int battle_total_turn)
    {
        if (m_BattleEnemy == null)
        {
            return(null);
        }

        MasterDataParamEnemy enemy_param = m_BattleEnemy.getMasterDataParamEnemy();

        if (enemy_param == null)
        {
            return(null);
        }

        List <MasterDataEnemyActionTable> enemy_action_tables = new List <MasterDataEnemyActionTable>();

        {
            int[] table_id_array =
            {
                enemy_param.act_table1,
                enemy_param.act_table2,
                enemy_param.act_table3,
                enemy_param.act_table4,
                enemy_param.act_table5,
                enemy_param.act_table6,
                enemy_param.act_table7,
                enemy_param.act_table8
            };

            for (int idx = 0; idx < table_id_array.Length; idx++)
            {
                MasterDataEnemyActionTable enemy_action_table = BattleParam.m_MasterDataCache.useEnemyActionTable((uint)table_id_array[idx]);
                if (enemy_action_table != null)
                {
                    enemy_action_tables.Add(enemy_action_table);
                }
            }

            // 優先度、降順にソート
            enemy_action_tables.Sort((a, b) => b.timing_priority - a.timing_priority);
        }

        MasterDataEnemyActionTable ret_val = null;

        for (int priority_idx = 0; priority_idx < enemy_action_tables.Count; priority_idx++)
        {
            MasterDataEnemyActionTable enemy_action_table = enemy_action_tables[priority_idx];

            bool is_cond = true;
            for (int cond_idx = 0; cond_idx < enemy_action_table.Get_timing_type_count(); cond_idx++)
            {
                MasterDataDefineLabel.EnemyACTPatternSelectType timing_type = enemy_action_table.Get_timing_type(cond_idx);
                int timing_type_param = enemy_action_table.Get_timing_type_param(cond_idx);

                switch (timing_type)
                {
                case MasterDataDefineLabel.EnemyACTPatternSelectType.HP:
                    if (checkTimingHPRate(timing_type_param) == false)
                    {
                        is_cond = false;
                    }
                    break;

                case MasterDataDefineLabel.EnemyACTPatternSelectType.HP_UNDER:
                    if (checkTimingHPRateUnder(timing_type_param) == false)
                    {
                        is_cond = false;
                    }
                    break;

                case MasterDataDefineLabel.EnemyACTPatternSelectType.TURN:
                    if (checkTimingTotalTurn(battle_total_turn, timing_type_param) == false)
                    {
                        is_cond = false;
                    }
                    break;
                }

                if (is_cond == false)
                {
                    break;
                }
            }

            if (is_cond)
            {
                ret_val = enemy_action_table;
                break;
            }
        }

        return(ret_val);
    }