/// <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); }
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; }
/// <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); }