public static PlayErrors.Marshaled_SourceEntityInfo ConvertFromSourceEntityInfo(PlayErrors.SourceEntityInfo sourceInfo)
 {
     return(new PlayErrors.Marshaled_SourceEntityInfo {
         requirementsMap = sourceInfo.requirementsMap, id = sourceInfo.id, cost = sourceInfo.cost, attack = sourceInfo.attack, minAttackRequirement = sourceInfo.minAttackRequirement, maxAttackRequirement = sourceInfo.maxAttackRequirement, raceRequirement = sourceInfo.raceRequirement, numMinionSlotsRequirement = sourceInfo.numMinionSlotsRequirement, numMinionSlotsWithTargetRequirement = sourceInfo.numMinionSlotsWithTargetRequirement, minTotalMinionsRequirement = sourceInfo.minTotalMinionsRequirement, minFriendlyMinionsRequirement = sourceInfo.minFriendlyMinionsRequirement, minEnemyMinionsRequirement = sourceInfo.minEnemyMinionsRequirement, numTurnsInPlay = sourceInfo.numTurnsInPlay, numAttacksThisTurn = sourceInfo.numAttacksThisTurn, numWindfury = sourceInfo.numWindfury, cardType = sourceInfo.cardType,
         zone = sourceInfo.zone, isSecret = sourceInfo.isSecret, isDuplicateSecret = sourceInfo.isDuplicateSecret, isExhausted = sourceInfo.isExhausted, isMasterPower = sourceInfo.isMasterPower, isActionPower = sourceInfo.isActionPower, isActivatePower = sourceInfo.isActivatePower, isAttackPower = sourceInfo.isAttackPower, isFrozen = sourceInfo.isFrozen, hasBattlecry = sourceInfo.hasBattlecry, canAttack = sourceInfo.canAttack, entireEntourageInPlay = sourceInfo.entireEntourageInPlay, hasCharge = sourceInfo.hasCharge, isChoiceMinion = sourceInfo.isChoiceMinion, cannotAttackHeroes = sourceInfo.cannotAttackHeroes
     });
 }
Example #2
0
    public PlayErrors.SourceEntityInfo ConvertToSourceInfo(PlayErrors.PlayRequirementInfo playRequirementInfo, Entity parent)
    {
        List <string> entourageCardIDs = this.GetEntityDef().GetEntourageCardIDs();
        List <string> list2            = new List <string>();
        int           num = 0;
        ZoneMgr       mgr = ZoneMgr.Get();

        if (mgr != null)
        {
            ZonePlay play = mgr.FindZoneOfType <ZonePlay>(Player.Side.FRIENDLY);
            if (play != null)
            {
                foreach (Card card in play.GetCards())
                {
                    Entity entity = card.GetEntity();
                    if (entity != null)
                    {
                        list2.Add(entity.GetCardId());
                    }
                }
            }
            ZonePlay play2 = mgr.FindZoneOfType <ZonePlay>(Player.Side.OPPOSING);
            if (play2 != null)
            {
                foreach (Card card2 in play2.GetCards())
                {
                    Entity entity2 = card2.GetEntity();
                    if ((entity2 != null) && entity2.IsMinion())
                    {
                        num++;
                    }
                }
            }
        }
        PlayErrors.SourceEntityInfo info = new PlayErrors.SourceEntityInfo {
            requirementsMap = playRequirementInfo.requirementsMap,
            id     = base.GetEntityId(),
            cost   = base.GetCost(),
            attack = base.GetATK(),
            minAttackRequirement                = playRequirementInfo.paramMinAtk,
            maxAttackRequirement                = playRequirementInfo.paramMaxAtk,
            raceRequirement                     = playRequirementInfo.paramRace,
            numMinionSlotsRequirement           = playRequirementInfo.paramNumMinionSlots,
            numMinionSlotsWithTargetRequirement = playRequirementInfo.paramNumMinionSlotsWithTarget,
            minTotalMinionsRequirement          = playRequirementInfo.paramMinNumTotalMinions,
            minFriendlyMinionsRequirement       = playRequirementInfo.paramMinNumFriendlyMinions,
            minEnemyMinionsRequirement          = playRequirementInfo.paramMinNumEnemyMinions,
            numTurnsInPlay     = base.GetNumTurnsInPlay(),
            numAttacksThisTurn = base.GetNumAttacksThisTurn(),
            numWindfury        = base.GetWindfury(),
            cardType           = base.GetCardType(),
            zone              = base.GetZone(),
            isSecret          = base.IsSecret(),
            isDuplicateSecret = false
        };
        if (info.isSecret)
        {
            Player player = GameState.Get().GetPlayer(base.GetControllerId());
            if (player != null)
            {
                foreach (string str in player.GetSecretDefinitions())
                {
                    if (this.GetCardId().Equals(str, StringComparison.OrdinalIgnoreCase))
                    {
                        info.isDuplicateSecret = true;
                        break;
                    }
                }
            }
        }
        info.isExhausted           = base.IsExhausted();
        info.isMasterPower         = (base.GetZone() == TAG_ZONE.HAND) || base.IsHeroPower();
        info.isActionPower         = TAG_ZONE.HAND == base.GetZone();
        info.isActivatePower       = (base.GetZone() == TAG_ZONE.PLAY) || base.IsHeroPower();
        info.isAttackPower         = base.IsHero() || (!base.IsHeroPower() && (TAG_ZONE.PLAY == base.GetZone()));
        info.isFrozen              = base.IsFrozen();
        info.hasBattlecry          = base.HasBattlecry();
        info.canAttack             = base.CanAttack();
        info.entireEntourageInPlay = false;
        if (entourageCardIDs.Count > 0)
        {
            info.entireEntourageInPlay = list2.Count > 0;
 public Marshaled_PlayErrorsParams(PlayErrors.SourceEntityInfo sourceInfo, PlayErrors.PlayerInfo playerInfo, PlayErrors.GameStateInfo gameInfo)
 {
     this.source = PlayErrors.Marshaled_SourceEntityInfo.ConvertFromSourceEntityInfo(sourceInfo);
     this.player = PlayErrors.Marshaled_PlayerInfo.ConvertFromPlayerInfo(playerInfo);
     this.game   = PlayErrors.Marshaled_GameStateInfo.ConvertFromGameStateInfo(gameInfo);
 }