void GenerateKeywordsText()
        {
            keywordsText = "";
            for (int KeywordIdx = 1; KeywordIdx <= (int)ConvergeKeyword._Last; KeywordIdx <<= 1)
            {
                if (keywords.HasFlag((ConvergeKeyword)KeywordIdx))
                {
                    if (keywordsText != "")
                    {
                        keywordsText += ", ";
                    }

                    ConvergeKeyword keyword = (ConvergeKeyword)KeywordIdx;
                    switch (keyword)
                    {
                    case ConvergeKeyword.CantBlock:
                        keywordsText += "Can't Block";
                        break;

                    case ConvergeKeyword.DoubleStrike:
                        keywordsText += "Double Strike";
                        break;

                    case ConvergeKeyword.FirstStrike:
                        keywordsText += "First Strike";
                        break;

                    default:
                        keywordsText += (ConvergeKeyword)KeywordIdx;
                        break;
                    }
                }
            }
        }
        public ConvergeObject(ConvergeCardSpec original, ConvergeZone zone)
        {
            this.original  = original;
            this.art       = original.art;
            this.power     = original.power;
            this.toughness = original.toughness;
            this.keywords  = original.keywords;
            GenerateKeywordsText();
            this.owner      = zone.owner;
            this.controller = owner;
            this.originalActivatedAbilities = new List <ConvergeActivatedAbility>();
            foreach (ConvergeActivatedAbilitySpec spec in original.activatedAbilities)
            {
                originalActivatedAbilities.Add(new ConvergeActivatedAbility(spec, this));
            }
            activatedAbilities = originalActivatedAbilities;

            this.originalTriggeredAbilities = new List <ConvergeTriggeredAbility>();
            foreach (ConvergeTriggeredAbilitySpec spec in original.triggeredAbilities)
            {
                originalTriggeredAbilities.Add(new ConvergeTriggeredAbility(spec, this));
            }
            this.triggeredAbilities = originalTriggeredAbilities;
            MoveZone(zone);
        }
 public ConvergeEffect_Upgrade(int power, int toughness, ConvergeKeyword keywords, ConvergeObject source, Texture2D new_art, ConvergeDuration duration) : base(source, duration)
 {
     this.power     = power;
     this.toughness = toughness;
     this.keywords  = keywords;
     this.new_art   = new_art;
 }
        public static ConvergeKeyword ToKeywords(this JSONArray template)
        {
            ConvergeKeyword result = 0;

            foreach (string name in template.asStrings())
            {
                result |= (ConvergeKeyword)Enum.Parse(typeof(ConvergeKeyword), name);
            }
            return(result);
        }
 void UpdateUpgrades()
 {
     power     = original.power;
     toughness = original.toughness;
     keywords  = original.keywords;
     art       = original.art;
     foreach (ConvergeEffect_Upgrade upgradeEffect in upgradeEffects)
     {
         power     += upgradeEffect.power;
         toughness += upgradeEffect.toughness;
         keywords  |= upgradeEffect.keywords;
         if (upgradeEffect.new_art != null)
         {
             art = upgradeEffect.new_art;
         }
     }
     GenerateKeywordsText();
 }
        public ConvergeCommand_Upgrade(JSONArray template, ContentManager Content)
        {
            patients        = ConvergeSelector.New(template.getProperty(1));
            powerAmount     = ConvergeCalculation.New(template.getProperty(2));
            toughnessAmount = ConvergeCalculation.New(template.getProperty(3));
            if (template.Length >= 5)
            {
                keywords = template.getArray(4).ToKeywords();
            }

            if (template.Length >= 6)
            {
                duration = (ConvergeDuration)Enum.Parse(typeof(ConvergeDuration), template.getString(5));
            }
            else
            {
                duration = ConvergeDuration.Permanent;
            }

            if (template.Length >= 7)
            {
                new_art = Content.Load <Texture2D>(template.getString(6));
            }
        }