/// <summary> /// Builds the ClassData represented by this builder's parameters recursively /// and registers it and its components with the appropriate managers. /// </summary> /// <returns>The newly registered ClassData</returns> public ClassData BuildAndRegister() { var classData = this.Build(); CustomClassManager.RegisterCustomClass(classData); return(classData); }
public static void Create() { // Basic Card Stats ChampionCardDataBuilder railyard = new ChampionCardDataBuilder { Cost = 0, Champion = BuildUnit(), ChampionIconPath = "Clan Assets/Icon_ClassSelect_Werewolf.png", ChampionSelectedCue = "", StarterCardData = CustomCardManager.GetCardDataByID("Claws_StarterCard"), CardID = IDName, Name = "Shengar the Vicious", //OverrideDescriptionKey = IDName + "_Desc", LinkedClass = CustomClassManager.GetClassDataByID(ClawsClan.ID), ClanID = ClawsClan.ID, CardPoolIDs = new List <string> { }, CardType = CardType.Monster, TargetsRoom = true, AssetPath = "Clan Assets/hero/werewolfchampion_card.png", }; // Do this to complete railyard.BuildAndRegister(); }
public static void RegisterBanner() { CardPool cardPool = UnityEngine.ScriptableObject.CreateInstance <CardPool>(); var cardDataList = (Malee.ReorderableArray <CardData>)AccessTools.Field(typeof(CardPool), "cardDataList").GetValue(cardPool); cardDataList.Add(CustomCardManager.GetCardDataByID("Direclaws_Devilhound")); cardDataList.Add(CustomCardManager.GetCardDataByID("Direclaws_Witherclaw")); new RewardNodeDataBuilder() { RewardNodeID = "Horde_UnitBanner", MapNodePoolIDs = new List <string> { VanillaMapNodePoolIDs.RandomChosenMainClassUnit, VanillaMapNodePoolIDs.RandomChosenSubClassUnit }, Name = "Dire Claws Banner", Description = "Recruit a Dire Claws unit.", RequiredClass = CustomClassManager.GetClassDataByID(ClawsClan.ID), ControllerSelectedOutline = "Clan Assets/selection_outlines.png", FrozenSpritePath = "Clan Assets/POI_Map_Clan_CHorde_Frozen.png", EnabledSpritePath = "Clan Assets/POI_Map_Clan_CHorde_Enabled.png", EnabledVisitedSpritePath = "Clan Assets/POI_Map_Clan_CHorde_Enabled.png", DisabledSpritePath = "Clan Assets/POI_Map_Clan_CHorde_Disabled.png", DisabledVisitedSpritePath = "Clan Assets/POI_Map_Clan_CHorde_VisitedDisabled.png", GlowSpritePath = "Clan Assets/MSK_Map_Clan_CHorde_01.png", MapIconPath = "Clan Assets/POI_Map_Clan_CHorde_Enabled.png", MinimapIconPath = "Clan Assets/Icon_MiniMap_ClanBanner.png", SkipCheckInBattleMode = true, OverrideTooltipTitleBody = false, NodeSelectedSfxCue = "Node_Banner", RewardBuilders = new List <IRewardDataBuilder> { new DraftRewardDataBuilder() { DraftRewardID = "Horde_UnitsDraft", _RewardSpritePath = "Clan Assets/POI_Map_Clan_CHorde_Enabled.png", _RewardTitleKey = "Dire Claws Banner", _RewardDescriptionKey = "Choose a unit!", Costs = new int[] { 100 }, _IsServiceMerchantReward = false, DraftPool = cardPool, ClassType = (RunState.ClassType) 7, DraftOptionsCount = 2, RarityFloorOverride = CollectableRarity.Common } } }.BuildAndRegister(); }
/// <summary> /// Builds the RelicData represented by this builder's parameters recursively; /// all Builders represented in this class's various fields will also be built. /// </summary> /// <returns>The newly created RelicData</returns> public CollectableRelicData Build() { foreach (var builder in this.EffectBuilders) { this.Effects.Add(builder.Build()); } if (this.LinkedClass == null) { this.LinkedClass = CustomClassManager.GetClassDataByID(this.ClanID); } var relicData = ScriptableObject.CreateInstance <CollectableRelicData>(); AccessTools.Field(typeof(GameData), "id").SetValue(relicData, this.CollectableRelicID); relicData.name = this.CollectableRelicID; // RelicData fields BuilderUtils.ImportStandardLocalization(this.DescriptionKey, this.Description); AccessTools.Field(typeof(RelicData), "descriptionKey").SetValue(relicData, this.DescriptionKey); AccessTools.Field(typeof(RelicData), "effects").SetValue(relicData, this.Effects); if (this.IconPath != null) { Sprite iconSprite = CustomAssetManager.LoadSpriteFromPath(this.FullAssetPath); AccessTools.Field(typeof(RelicData), "icon").SetValue(relicData, iconSprite); } BuilderUtils.ImportStandardLocalization(this.NameKey, this.Name); AccessTools.Field(typeof(RelicData), "nameKey").SetValue(relicData, this.NameKey); AccessTools.Field(typeof(RelicData), "relicActivatedKey").SetValue(relicData, this.RelicActivatedKey); AccessTools.Field(typeof(RelicData), "relicLoreTooltipKeys").SetValue(relicData, this.RelicLoreTooltipKeys); // CollectableRelicData fields AccessTools.Field(typeof(CollectableRelicData), "fromStoryEvent").SetValue(relicData, this.FromStoryEvent); AccessTools.Field(typeof(CollectableRelicData), "isBossGivenRelic").SetValue(relicData, this.IsBossGivenRelic); AccessTools.Field(typeof(CollectableRelicData), "linkedClass").SetValue(relicData, this.LinkedClass); AccessTools.Field(typeof(CollectableRelicData), "rarity").SetValue(relicData, this.Rarity); AccessTools.Field(typeof(CollectableRelicData), "unlockLevel").SetValue(relicData, this.UnlockLevel); return(relicData); }
/// <summary> /// Builds the CardData represented by this builder's parameters recursively; /// i.e. all CardEffectBuilders in EffectBuilders will also be built. /// </summary> /// <returns>The newly created CardData</returns> public CardData Build() { foreach (var builder in this.EffectBuilders) { this.Effects.Add(builder.Build()); } foreach (var builder in this.TraitBuilders) { this.Traits.Add(builder.Build()); } foreach (var builder in this.EffectTriggerBuilders) { this.EffectTriggers.Add(builder.Build()); } foreach (var builder in this.TriggerBuilders) { this.Triggers.Add(builder.Build()); } var allGameData = ProviderManager.SaveManager.GetAllGameData(); if (this.LinkedClass == null) { this.LinkedClass = CustomClassManager.GetClassDataByID(this.ClanID); } CardData cardData = ScriptableObject.CreateInstance <CardData>(); var guid = GUIDGenerator.GenerateDeterministicGUID(this.CardID); AccessTools.Field(typeof(CardData), "id").SetValue(cardData, guid); cardData.name = this.CardID; if (this.CardArtPrefabVariantRef == null) { if (this.CardArtPrefabVariantRefBuilder == null) { if (this.BundleLoadingInfo != null) { this.BundleLoadingInfo.PluginPath = this.BaseAssetPath; this.CardArtPrefabVariantRefBuilder = new AssetRefBuilder { AssetLoadingInfo = this.BundleLoadingInfo }; } else { var assetLoadingInfo = new AssetLoadingInfo() { FilePath = this.AssetPath, PluginPath = this.BaseAssetPath, AssetType = AssetRefBuilder.AssetTypeEnum.CardArt }; this.CardArtPrefabVariantRefBuilder = new AssetRefBuilder { AssetLoadingInfo = assetLoadingInfo }; } } this.CardArtPrefabVariantRef = this.CardArtPrefabVariantRefBuilder.BuildAndRegister(); } AccessTools.Field(typeof(CardData), "cardArtPrefabVariantRef").SetValue(cardData, this.CardArtPrefabVariantRef); AccessTools.Field(typeof(CardData), "cardLoreTooltipKeys").SetValue(cardData, this.CardLoreTooltipKeys); AccessTools.Field(typeof(CardData), "cardType").SetValue(cardData, this.CardType); AccessTools.Field(typeof(CardData), "cost").SetValue(cardData, this.Cost); AccessTools.Field(typeof(CardData), "costType").SetValue(cardData, this.CostType); AccessTools.Field(typeof(CardData), "effects").SetValue(cardData, this.Effects); AccessTools.Field(typeof(CardData), "effectTriggers").SetValue(cardData, this.EffectTriggers); AccessTools.Field(typeof(CardData), "fallbackData").SetValue(cardData, this.FallbackData); AccessTools.Field(typeof(CardData), "ignoreWhenCountingMastery").SetValue(cardData, this.IgnoreWhenCountingMastery); AccessTools.Field(typeof(CardData), "linkedClass").SetValue(cardData, this.LinkedClass); AccessTools.Field(typeof(CardData), "linkedMasteryCard").SetValue(cardData, this.LinkedMasteryCard); if (this.Name != null) { // Use Name field for all languages // This should be changed in the future to add proper localization support to custom content CustomLocalizationManager.ImportSingleLocalization(this.NameKey, "Text", "", "", "", "", this.Name, this.Name, this.Name, this.Name, this.Name, this.Name); } AccessTools.Field(typeof(CardData), "nameKey").SetValue(cardData, this.NameKey); if (this.Description != null) { // Use Description field for all languages // This should be changed in the future to add proper localization support to custom content CustomLocalizationManager.ImportSingleLocalization(this.OverrideDescriptionKey, "Text", "", "", "", "", this.Description, this.Description, this.Description, this.Description, this.Description, this.Description); } AccessTools.Field(typeof(CardData), "overrideDescriptionKey").SetValue(cardData, this.OverrideDescriptionKey); AccessTools.Field(typeof(CardData), "rarity").SetValue(cardData, this.Rarity); AccessTools.Field(typeof(CardData), "sharedMasteryCards").SetValue(cardData, this.SharedMasteryCards); if (this.SpriteCache != null) { AccessTools.Field(typeof(CardData), "spriteCache").SetValue(cardData, this.SpriteCache); } AccessTools.Field(typeof(CardData), "startingUpgrades").SetValue(cardData, this.StartingUpgrades); AccessTools.Field(typeof(CardData), "targetless").SetValue(cardData, this.Targetless); AccessTools.Field(typeof(CardData), "targetsRoom").SetValue(cardData, this.TargetsRoom); foreach (CardTraitData cardTraitData in this.Traits) { AccessTools.Field(typeof(CardTraitData), "paramCardData").SetValue(cardTraitData, cardData); } AccessTools.Field(typeof(CardData), "traits").SetValue(cardData, this.Traits); AccessTools.Field(typeof(CardData), "triggers").SetValue(cardData, this.Triggers); AccessTools.Field(typeof(CardData), "unlockLevel").SetValue(cardData, this.UnlockLevel); return(cardData); }
public static void BuildAndRegister() { new ClassDataBuilder { ClassID = ID, Name = "Test Clan", Description = "Test Clan Description", SubclassDescription = "Test Clan Sub Description", CardStyle = ClassCardStyle.Stygian, IconAssetPaths = new List <string> { "assets/testclan-small.png", //It can be - or _ depending the name of the image you downloaded "assets/testclan-large.png", //It can be - or _ depending the name of the image you downloaded "assets/testclan-large.png", //It can be - or _ depending the name of the image you downloaded "assets/testclan-silhouette.png" //It can be - or _ depending the name of the image you downloaded }, UiColor = new Color(0.1f, 0.8f, 0.8f, 1f), UiColorDark = new Color(0.05f, 0.5f, 0.5f, 1f), }.BuildAndRegister(); CardPool cardPool = UnityEngine.ScriptableObject.CreateInstance <CardPool>(); var cardDataList = (Malee.ReorderableArray <CardData>)AccessTools.Field(typeof(CardPool), "cardDataList").GetValue(cardPool); //cardDataList.Add(CustomCardManager.GetCardDataByID(BlueEyesWhiteDragon.ID)); //cardDataList.Add(CustomCardManager.GetCardDataByID(DragonCostume.ID)); new RewardNodeDataBuilder() { RewardNodeID = ID, MapNodePoolIDs = new List <string> { VanillaMapNodePoolIDs.RandomChosenMainClassUnit, VanillaMapNodePoolIDs.RandomChosenSubClassUnit }, Name = "Test Clan Banner", Description = "Offers units from the illustrious Test Clan", RequiredClass = CustomClassManager.GetClassDataByID(TestClan.ID), FrozenSpritePath = "assets/TestClanBanner_Frozen.png", EnabledSpritePath = "assets/TestClanBanner_Enabled.png", DisabledSpritePath = "assets/TestClanBanner_Disabled.png", DisabledVisitedSpritePath = "assets/TestClanBanner_Disabled_Visited.png", GlowSpritePath = "assets/TestClanBanner_Glow.png", MapIconPath = "assets/TestClanBanner_Enabled.png", MinimapIconPath = "assets/TestClanBanner_Minimap.png", SkipCheckInBattleMode = true, OverrideTooltipTitleBody = false, NodeSelectedSfxCue = "Node_Banner", ControllerSelectedOutline = "assets/TestClanBanner_Glow.png", //Highlight banners if using a controller. RewardBuilders = new List <IRewardDataBuilder> { new DraftRewardDataBuilder() { DraftRewardID = RewardNodeID, _RewardSpritePath = "assets/TestClanBanner_Enabled.png", _RewardTitleKey = "Test Clan Banner", _RewardDescriptionKey = "Choose a card!", Costs = new int[] { 100 }, _IsServiceMerchantReward = false, DraftPool = cardPool, ClassType = (RunState.ClassType) 7, DraftOptionsCount = 2, RarityFloorOverride = CollectableRarity.Uncommon } } }.BuildAndRegister(); var championCharacterBuilder = new CharacterDataBuilder { CharacterID = CharacterID, Name = "K.Aqua", Size = 1, Health = 10, AttackDamage = 5, AssetPath = "assets/kaqua_character.png" }; new ChampionCardDataBuilder() { Champion = championCharacterBuilder, ChampionIconPath = "assets/kaqua.png", StarterCardData = CustomCardManager.GetCardDataByID(VanillaCardIDs.Torch), CardID = ID, Name = "K.Aqua", ClanID = TestClan.ID, AssetPath = "assets/kaqua.png" }.BuildAndRegister(); }