コード例 #1
0
        public static MoreSpecificMobCardType GetMoreSpecificCardType(Handcard hc, SpecificCardType specificCardType)
        {
            switch (specificCardType)
            {
            case SpecificCardType.MobsRanger:
                return((IsShortDistance(hc)) ? MoreSpecificMobCardType.ShortDistance : MoreSpecificMobCardType.LongDistance);

            case SpecificCardType.MobsTank:
                return(IsMobsBuildingAttacker(hc) ? MoreSpecificMobCardType.BuildingAttacker : IsFlying(hc) ?
                       MoreSpecificMobCardType.Flying : MoreSpecificMobCardType.NotFlying);

            case SpecificCardType.MobsFlying:
                return(IsMobsDamageDealer(hc) ? MoreSpecificMobCardType.DamageDealer : MoreSpecificMobCardType.Flying);

            case SpecificCardType.MobsDamageDealer:
                return((IsMobsAOE(hc)) ? MoreSpecificMobCardType.AOEGround : (IsMobsFlyingAttack(hc)) ? MoreSpecificMobCardType.FlyingAttack
                                                : (IsFlying(hc)) ? MoreSpecificMobCardType.Flying : MoreSpecificMobCardType.NotFlying);

            case SpecificCardType.MobsBigGroup:

                break;

            case SpecificCardType.MobsAOE:
                return((IsAOEAll(hc)) ? MoreSpecificMobCardType.AOEAll : MoreSpecificMobCardType.AOEGround);

            case SpecificCardType.MobsBuildingAttacker:

                break;

            case SpecificCardType.MobsFlyingAttack:

                break;
            }
            return(MoreSpecificMobCardType.None);
        }
コード例 #2
0
        public static IEnumerable <Handcard> GetOwnHandCards(Playfield p, boardObjType cardType, SpecificCardType sCardType, MoreSpecificMobCardType msCardType = MoreSpecificMobCardType.None)
        {
            var cardsOfType = p.ownHandCards.Where(n => n.card.type == cardType).ToArray();

            if (cardsOfType.Length == 0)
            {
                return(cardsOfType);
            }

            Func <Handcard, bool> @delegate   = (n) => true;
            Func <Handcard, bool> @msDelegate = (n) => true;

            switch (sCardType)
            {
            case SpecificCardType.All:
                break;

            // Mobs
            case SpecificCardType.MobsTank:
                @delegate = IsMobsTank;
                break;

            case SpecificCardType.MobsRanger:
                @delegate = IsMobsRanger;
                break;

            case SpecificCardType.MobsBigGroup:
                @delegate = IsMobsBigGroup;
                break;

            case SpecificCardType.MobsDamageDealer:
                @delegate = IsMobsDamageDealer;
                break;

            case SpecificCardType.MobsBuildingAttacker:
                @delegate = IsMobsBuildingAttacker;
                break;

            case SpecificCardType.MobsFlyingAttack:
                @delegate = IsMobsFlyingAttack;
                break;

            // Buildings
            case SpecificCardType.BuildingsDefense:
                @delegate = IsBuildingsDefense;     // TODO: Define
                break;

            case SpecificCardType.BuildingsAttack:
                @delegate = IsBuildingsAttack;     // TODO: Define
                break;

            case SpecificCardType.BuildingsSpawning:
                @delegate = IsBuildingsSpawning;
                break;

            case SpecificCardType.BuildingsMana:
                @delegate = (n) => false;
                break;     // TODO: ManaProduction

            // Spells
            case SpecificCardType.SpellsDamaging:
                @delegate = IsSpellsDamaging;
                break;

            case SpecificCardType.SpellsNonDamaging:
                @delegate = IsSpellsNonDamaging;
                break;

            case SpecificCardType.SpellsTroopSpawning:
                @delegate = IsSpellsTroopSpawning;     // TODO: Check
                break;

            case SpecificCardType.SpellsBuffs:
                @delegate = IsSpellBuff;     // TODO: Check
                break;

            default:
                @delegate = (n) => false;
                break;
            }

            switch (msCardType)
            {
            case MoreSpecificMobCardType.None:
                break;

            case MoreSpecificMobCardType.ShortDistance:
                @msDelegate = IsShortDistance;
                break;

            case MoreSpecificMobCardType.LongDistance:
                @msDelegate = IsLongDistance;
                break;

            case MoreSpecificMobCardType.BuildingAttacker:
                @msDelegate = IsBuildingsAttack;
                break;

            case MoreSpecificMobCardType.AOEGround:
                @msDelegate = IsAOEGround;
                break;

            case MoreSpecificMobCardType.AOEAll:
                @msDelegate = IsAOEAll;
                break;

            case MoreSpecificMobCardType.FlyingAttack:
                @msDelegate = IsMobsFlyingAttack;
                break;

            case MoreSpecificMobCardType.Flying:
                @msDelegate = IsFlying;
                break;

            case MoreSpecificMobCardType.NotFlying:
                @msDelegate = IsNotFlying;
                break;

            case MoreSpecificMobCardType.DamageDealer:
                @msDelegate = IsMobsDamageDealer;
                break;

            case MoreSpecificMobCardType.NoBigGroup:
                @msDelegate = IsNoBigGroup;
                break;
            }

            if (@msDelegate == null)
            {
                return(cardsOfType.Where(@delegate).ToArray());
            }
            else
            {
                return(cardsOfType.Where(@delegate).Where(msDelegate).ToArray());
            }
        }