Example #1
0
        /// <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);
        }
Example #2
0
        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();
        }
Example #3
0
        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);
        }
Example #5
0
        /// <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();
        }