Exemplo n.º 1
0
    public List <ModuleMech> GetMechByType(MechTypes mechType)
    {
        List <ModuleMech> mechs;

        switch (mechType)
        {
        case MechTypes.All:
            mechs = Mechs;
            break;

        case MechTypes.Soldier:
            mechs = Soldiers;
            break;

        case MechTypes.Hero:
            mechs = Heroes;
            break;

        default:
            mechs = Mechs;
            break;
        }

        return(mechs);
    }
Exemplo n.º 2
0
    public void KillMechs(int count, List <int> mechIds, BattlePlayer callerPlayer, TargetRange targetRange, TargetSelect targetSelect, int exceptMechId = -1)
    {
        List <BattlePlayer> battlePlayers = GetMechsPlayerByTargetRange(targetRange, callerPlayer);
        MechTypes           mechType      = GetMechTypeByTargetRange(targetRange);

        switch (targetSelect)
        {
        case TargetSelect.All:
        {
            KillMechs(GetMechsByType(battlePlayers, mechType));
            break;
        }

        case TargetSelect.Multiple:
        {
            List <ModuleMech> mechs = new List <ModuleMech>();
            foreach (int mechId in mechIds)
            {
                mechs.Add(GetMech(mechId));
            }

            KillMechs(mechs);

            break;
        }

        case TargetSelect.MultipleRandom:
        {
            List <ModuleMech> mechs = new List <ModuleMech>();
            foreach (ModuleMech mech in Utils.GetRandomFromList(GetMechsByType(battlePlayers, mechType), count))
            {
                mechs.Add(mech);
            }

            KillMechs(mechs);

            break;
        }

        case TargetSelect.Single:
        {
            KillMechs(new List <ModuleMech> {
                    GetMech(mechIds[0])
                });
            break;
        }

        case TargetSelect.SingleRandom:
        {
            KillMechs(new List <ModuleMech> {
                    GetRandomMech(battlePlayers, mechType, exceptMechId)
                });
            break;
        }
        }
    }
Exemplo n.º 3
0
    public int CountAliveMechExcept(List <BattlePlayer> players, MechTypes mechType, int exceptMechId)
    {
        int count = 0;

        foreach (BattlePlayer battlePlayer in players)
        {
            count += battlePlayer.BattleGroundManager.CountAliveMechExcept(mechType, exceptMechId);
        }

        return(count);
    }
Exemplo n.º 4
0
    public void SideEffect_MechAction(Action <ModuleMech> action, BattlePlayer callerPlayer, int count, List <int> mechIds, TargetRange targetRange, TargetSelect targetSelect, int exceptMechId = -1)
    {
        List <BattlePlayer> battlePlayers = GetMechsPlayerByTargetRange(targetRange, callerPlayer);
        MechTypes           mechType      = GetMechTypeByTargetRange(targetRange);

        switch (targetSelect)
        {
        case TargetSelect.All:
        {
            foreach (ModuleMech mech in GetMechsByType(battlePlayers, mechType).ToArray())
            {
                action(mech);
            }

            break;
        }

        case TargetSelect.Multiple:
        {
            foreach (int mechId in mechIds)
            {
                action(GetMech(mechId));
            }

            break;
        }

        case TargetSelect.MultipleRandom:
        {
            foreach (ModuleMech mech in Utils.GetRandomFromList(GetMechsByType(battlePlayers, mechType), count))
            {
                action(mech);
            }

            break;
        }

        case TargetSelect.Single:
        {
            if (mechIds.Count > 0)
            {
                action(GetMech(mechIds[0]));
            }

            break;
        }

        case TargetSelect.SingleRandom:
        {
            action(GetRandomMech(battlePlayers, mechType, exceptMechId));
            break;
        }
        }
    }
Exemplo n.º 5
0
    public ModuleMech GetRandomMech(List <BattlePlayer> players, MechTypes mechType, int exceptMechId)
    {
        List <ModuleMech> mechs = GetMechsByType(players, mechType);

        if (mechs.Count == 0)
        {
            return(null);
        }
        else
        {
            int    aliveCount = CountAliveMechExcept(players, mechType, exceptMechId);
            Random rd         = new Random();
            return(GetAliveMechExcept(rd.Next(0, aliveCount), mechs, exceptMechId));
        }
    }
Exemplo n.º 6
0
    public ModuleMech GetRandomAliveMechExcept(MechTypes mechType, int exceptMechId)
    {
        int    count     = CountAliveMechExcept(mechType, exceptMechId);
        Random rd        = new Random();
        int    ranResult = rd.Next(0, count);

        if (ranResult < count)
        {
            return(GetRandomMech(mechType, exceptMechId));
        }
        else
        {
            return(GetRandomMech(mechType, exceptMechId));
        }
    }
Exemplo n.º 7
0
    public ModuleMech GetRandomMech(MechTypes mechType, int exceptMechId)
    {
        List <ModuleMech> mechs = GetMechByType(mechType);

        if (mechs.Count == 0)
        {
            return(null);
        }
        else
        {
            int    aliveCount = CountAliveMechExcept(mechType, exceptMechId);
            Random rd         = new Random();
            return(GameManager.GetAliveMechExcept(rd.Next(0, aliveCount), mechs, exceptMechId));
        }
    }
Exemplo n.º 8
0
    public ModuleMech GetRandomAliveMechExcept(MechTypes mechType, int exceptMechId)
    {
        int    countA    = PlayerA.BattleGroundManager.CountAliveMechExcept(mechType, exceptMechId);
        int    countB    = PlayerB.BattleGroundManager.CountAliveMechExcept(mechType, exceptMechId);
        Random rd        = new Random();
        int    ranResult = rd.Next(0, countA + countB);

        if (ranResult < countA)
        {
            return(PlayerA.BattleGroundManager.GetRandomMech(mechType, exceptMechId));
        }
        else
        {
            return(PlayerB.BattleGroundManager.GetRandomMech(mechType, exceptMechId));
        }
    }
Exemplo n.º 9
0
    public int CountAliveMechExcept(MechTypes mechType, int exceptMechId)
    {
        List <ModuleMech> mechs = GetMechByType(mechType);

        int count = 0;

        foreach (ModuleMech mech in mechs)
        {
            if (!mech.M_IsDead && mech.M_MechID != exceptMechId)
            {
                count++;
            }
        }

        return(count);
    }
Exemplo n.º 10
0
    public static MechTypes GetMechTypeByTargetRange(TargetRange targetRange)
    {
        MechTypes mechType = MechTypes.None;

        if ((targetRange & TargetRange.Heroes) == targetRange) // 若是Heroes子集
        {
            mechType = MechTypes.Hero;
        }

        if ((targetRange & TargetRange.Soldiers) == targetRange) // 若是Soldiers子集
        {
            mechType = MechTypes.Soldier;
        }
        else
        {
            mechType = MechTypes.All;
        }

        return(mechType);
    }
Exemplo n.º 11
0
        private void SetMechTypes(Asn1Element sequence)
        {
            for (var i = 0; i < sequence.Count; i++)
            {
                var element = sequence[i];

                for (var j = 0; j < element.Count; j++)
                {
                    var childNode = element[j];

                    if (childNode.ContextSpecificTag == MechType.ContextTag)
                    {
                        MechTypes.Add(new MechType(childNode.AsString()));
                    }
                }
            }

            if (MechTypes.Count == 1 && MechTypes.Any(m => m.Oid == MechType.NTLM))
            {
                throw new NotSupportedException("NTLM is not supported");
            }
        }
Exemplo n.º 12
0
    public List <ModuleMech> GetMechsByType(List <BattlePlayer> players, MechTypes mechType)
    {
        List <ModuleMech> mechs = new List <ModuleMech>();

        foreach (BattlePlayer BattlePlayer in players)
        {
            switch (mechType)
            {
            case MechTypes.All:
                mechs.AddRange(BattlePlayer.BattleGroundManager.Mechs.ToArray());
                break;

            case MechTypes.Soldier:
                mechs.AddRange(BattlePlayer.BattleGroundManager.Soldiers.ToArray());
                break;

            case MechTypes.Hero:
                mechs.AddRange(BattlePlayer.BattleGroundManager.Heroes.ToArray());
                break;
            }
        }

        return(mechs);
    }