/// <summary>
        /// Builds the RoomModifierData represented by this builders's parameters recursively;
        /// </summary>
        /// <returns>The newly created RoomModifierData</returns>
        public CardUpgradeMaskData Build()
        {
            CardUpgradeMaskData cardUpgradeMaskData = new CardUpgradeMaskData();

            Type realEnumType = AccessTools.Inner(typeof(CardUpgradeMaskData), "CompareOperator");

            AccessTools.Field(typeof(CardUpgradeMaskData), "allowedCardPools").SetValue(cardUpgradeMaskData, this.AllowedCardPools);
            AccessTools.Field(typeof(CardUpgradeMaskData), "cardType").SetValue(cardUpgradeMaskData, this.CardType);
            AccessTools.Field(typeof(CardUpgradeMaskData), "costRange").SetValue(cardUpgradeMaskData, this.CostRange);
            AccessTools.Field(typeof(CardUpgradeMaskData), "disallowedCardPools").SetValue(cardUpgradeMaskData, this.DisallowedCardPools);
            AccessTools.Field(typeof(CardUpgradeMaskData), "excludedCardEffects").SetValue(cardUpgradeMaskData, this.ExcludedCardEffects);
            AccessTools.Field(typeof(CardUpgradeMaskData), "excludedCardEffectsOperator").SetValue(cardUpgradeMaskData, Enum.ToObject(realEnumType, this.ExcludedCardEffectsOperator));
            AccessTools.Field(typeof(CardUpgradeMaskData), "excludedCardTraits").SetValue(cardUpgradeMaskData, this.ExcludedCardTraits);
            AccessTools.Field(typeof(CardUpgradeMaskData), "excludedCardTraitsOperator").SetValue(cardUpgradeMaskData, Enum.ToObject(realEnumType, this.ExcludedCardTraitsOperator));
            AccessTools.Field(typeof(CardUpgradeMaskData), "excludedSizes").SetValue(cardUpgradeMaskData, this.ExcludedSizes);
            AccessTools.Field(typeof(CardUpgradeMaskData), "excludedStatusEffects").SetValue(cardUpgradeMaskData, this.ExcludedStatusEffects);
            AccessTools.Field(typeof(CardUpgradeMaskData), "excludedStatusEffectsOperator").SetValue(cardUpgradeMaskData, Enum.ToObject(realEnumType, this.ExcludedStatusEffectsOperator));
            AccessTools.Field(typeof(CardUpgradeMaskData), "excludedSubtypes").SetValue(cardUpgradeMaskData, this.ExcludedSubtypes);
            AccessTools.Field(typeof(CardUpgradeMaskData), "excludedSubtypesOperator").SetValue(cardUpgradeMaskData, Enum.ToObject(realEnumType, this.ExcludedSubtypesOperator));
            AccessTools.Field(typeof(CardUpgradeMaskData), "excludeNonAttackingMonsters").SetValue(cardUpgradeMaskData, this.ExcludeNonAttackingMonsters);
            AccessTools.Field(typeof(CardUpgradeMaskData), "excludeXCost").SetValue(cardUpgradeMaskData, this.ExcludeXCost);
            AccessTools.Field(typeof(CardUpgradeMaskData), "requiredCardEffects").SetValue(cardUpgradeMaskData, this.RequiredCardEffects);
            AccessTools.Field(typeof(CardUpgradeMaskData), "requiredCardEffectsOperator").SetValue(cardUpgradeMaskData, Enum.ToObject(realEnumType, this.RequiredCardEffectsOperator));
            AccessTools.Field(typeof(CardUpgradeMaskData), "requiredCardTraits").SetValue(cardUpgradeMaskData, this.RequiredCardTraits);
            AccessTools.Field(typeof(CardUpgradeMaskData), "requiredCardTraitsOperator").SetValue(cardUpgradeMaskData, Enum.ToObject(realEnumType, this.RequiredCardTraitsOperator));
            AccessTools.Field(typeof(CardUpgradeMaskData), "requiredSizes").SetValue(cardUpgradeMaskData, this.RequiredSizes);
            AccessTools.Field(typeof(CardUpgradeMaskData), "requiredStatusEffects").SetValue(cardUpgradeMaskData, this.RequiredStatusEffects);
            AccessTools.Field(typeof(CardUpgradeMaskData), "requiredStatusEffectsOperator").SetValue(cardUpgradeMaskData, Enum.ToObject(realEnumType, this.RequiredStatusEffectsOperator));
            AccessTools.Field(typeof(CardUpgradeMaskData), "requiredSubtypes").SetValue(cardUpgradeMaskData, this.RequiredSubtypes);
            AccessTools.Field(typeof(CardUpgradeMaskData), "requiredSubtypesOperator").SetValue(cardUpgradeMaskData, Enum.ToObject(realEnumType, this.RequiredSubtypesOperator));
            AccessTools.Field(typeof(CardUpgradeMaskData), "requireXCost").SetValue(cardUpgradeMaskData, this.RequireXCost);
            AccessTools.Field(typeof(CardUpgradeMaskData), "upgradeDisabledReason").SetValue(cardUpgradeMaskData, this.UpgradeDisabledReason);
            return(cardUpgradeMaskData);
        }
Esempio n. 2
0
        static void Postfix(ref bool __result, ref CardPool ___paramCardPool, CardUpgradeMaskData ___paramCardFilter, RelicManager relicManager, ref List <CardData> toProcessCards)
        {
            List <CardData> customCardsToAddToPool = CustomCardPoolManager.GetCardsForPoolSatisfyingConstraints(___paramCardPool.name, ___paramCardFilter, relicManager);

            toProcessCards.AddRange(customCardsToAddToPool);
            __result = toProcessCards.Count > 0;
        }
Esempio n. 3
0
        /// <summary>
        /// Gets a list of all cards added to the given card pool by mods
        /// which satisfy the constraints specified by the mask data passed in.
        /// Cards which naturally appear in the pool will not be returned.
        /// </summary>
        /// <param name="cardPoolID">ID of the card pool to get cards for</param>
        /// <param name="paramCardFilter">Constraints to satisfy</param>
        /// <param name="relicManager">a RelicManager</param>
        /// <returns>A list of cards added to the card pool with given ID by mods, all of which satisfy the given constraints.</returns>
        public static List <CardData> GetCardsForPoolSatisfyingConstraints(string cardPoolID, CardUpgradeMaskData paramCardFilter, RelicManager relicManager)
        {
            var allValidCards = GetCardsForPool(cardPoolID);
            var validCards    = new List <CardData>();

            foreach (CardData cardData in allValidCards)
            {
                if (paramCardFilter == null)
                {
                    validCards.Add(cardData);
                }
                else if (paramCardFilter.FilterCard <CardData>(cardData, relicManager))
                {
                    validCards.Add(cardData);
                }
            }
            return(validCards);
        }