// 将所有玩家的所有行动加载到战斗序列当中
    public void FetchActionFromBattleInfoSet(BattleSequence ParaBattleSequence)
    {
        for (int i = 0; i < PlayerNum; i++)
        {
            PlayerBattleInfoSet CurrentPlayerBattleInfoSet = PlayerBattleInfoSetOfPlayID[PlayerIDOfIndex[i]];

            CurrentPlayerBattleInfoSet.FetchActionFromPlayerBattleInfoSet(ParaBattleSequence);
        }
    }
    // 为所有玩家的所有行动计算初始冷却时间
    public void InitializeCumulativeCooldownTime()
    {
        float MaxRange = GetMaxRangeInAllAction();

        for (int i = 0; i < PlayerNum; i++)
        {
            PlayerBattleInfoSet CurrentPlayerBattleInfoSet = PlayerBattleInfoSetOfPlayID[PlayerIDOfIndex[i]];

            CurrentPlayerBattleInfoSet.InitializeCumulativeCooldownTime(MaxRange);
        }
    }
    public void DubugDisplay()
    {
        Debug.Log("**********************************************************");
        for (int i = 0; i < PlayerNum; i++)
        {
            PlayerBattleInfoSet CurrentPlayerBattleInfoSet = PlayerBattleInfoSetOfPlayID[PlayerIDOfIndex[i]];

            Debug.Log("Player " + PlayerIDOfIndex[i] + " MaxRange " + PlayerBattleInfoSetOfPlayID[PlayerIDOfIndex[i]].GetMaxRange());

            CurrentPlayerBattleInfoSet.DebugDisplay();
        }
        Debug.Log("**********************************************************");
    }
    public PlayerBattleInfoSet GetPlayerBattleInfoSetByPlayerID(int PlayerID)
    {
        if (PlayerBattleInfoSetOfPlayID.ContainsKey(PlayerID) == true)
        {
            return(PlayerBattleInfoSetOfPlayID[PlayerID]);
        }
        else
        {
            PlayerBattleInfoSet NewPlayerBattleInfoSet = new PlayerBattleInfoSet();
            NewPlayerBattleInfoSet.SetOwner(PlayerID);

            AddPlayerBattleInfoSet(NewPlayerBattleInfoSet);
            return(PlayerBattleInfoSetOfPlayID[PlayerID]);
        }
    }
    public void AddPlayerBattleInfoSet(PlayerBattleInfoSet NewPlayerBattleInfoSet)
    {
        if (PlayerBattleInfoSetOfPlayID.ContainsKey(NewPlayerBattleInfoSet.GetOwner()) == true)
        {
            Debug.Log("Add PlayerBattleInfoSet Fail~ There already have one with same key value.");
        }
        else
        {
            PlayerBattleInfoSetOfPlayID.Add(NewPlayerBattleInfoSet.GetOwner(), new PlayerBattleInfoSet());
            PlayerBattleInfoSetOfPlayID[NewPlayerBattleInfoSet.GetOwner()] = NewPlayerBattleInfoSet;

            PlayerIDOfIndex.Add(PlayerNum, NewPlayerBattleInfoSet.GetOwner());
            PlayerNum++;
        }
    }
    // 根据执行单位和执行单位使用的武器获取所有可攻击的单位类型(属于敌方的并且符合武器目标筛选标旗的单位类型)
    public List <UnitTypeInfo> FindAvaliableEnemyUnitTypes(Unit ExecuteUnit, Weapon ExecuteUnitWeapon)
    {
        List <UnitTypeInfo> Res = new List <UnitTypeInfo>();

        for (int i = 0; i < PlayerNum; i++)
        {
            // 如果执行单位的所有者视当前玩家为敌人
            if (MainDiplomacyManager.GetDiplomacy(ExecuteUnit.GetUnitOwner(), PlayerIDOfIndex[i]) == 0)
            {
                PlayerBattleInfoSet CurrentPlayerBattleInfoSet = PlayerBattleInfoSetOfPlayID[PlayerIDOfIndex[i]];

                CurrentPlayerBattleInfoSet.FindAvaliableEnemyUnitTypes(ExecuteUnitWeapon, Res);
            }
        }

        return(Res);
    }