コード例 #1
0
ファイル: StokerPlugin.cs プロジェクト: crazyjackel/Stoker
 //I probably could convert these functions to be generic and the selected objects to a type dictionary... but I am lazy, so too bad.
 public void OnClickCardState(StokerPlugin plugin, SelectionButton <CardState> obj, CardState item)
 {
     //Sets the Selected Card State to this
     plugin.selectedCardState = item;
     //Update old Card State's GameObj's color
     if (plugin.selectedCardStateGameobject != null)
     {
         plugin.selectedCardStateGameobject.button.colors = getGreyColorBlock();
     }
     //Set Selected Card State to this
     plugin.selectedCardStateGameobject = obj;
     //Update Colors
     obj.button.colors    = getRedColorBlock();
     selectedUpgradeData  = null;
     selectedUpgradeState = null;
     if (plugin.selectedUpgradeStateGameobject != null)
     {
         plugin.selectedUpgradeStateGameobject.button.colors = getGreyColorBlock();
         plugin.selectedUpgradeStateGameobject = null;
     }
     if (plugin.selectedUpgradeDataGameobject != null)
     {
         plugin.selectedUpgradeDataGameobject.button.colors = getGreyColorBlock();
         plugin.selectedUpgradeDataGameobject = null;
     }
     selectedCardState.UpdateCardBodyText(currentSave);
     UpdateUpgrades();
     UpdateUpgradeDatabaseByCardState(selectedCardState);
     //Prevents a desync due to deck issues.
     if (!IsInit)
     {
         DeckChangedNotification(currentSave.GetDeckState(), currentSave.GetVisibleDeckCount());
         IsInit = true;
     }
 }
コード例 #2
0
        public static void LoadSaveState(StokerSaveState saveState, SaveManager save)
        {
            if (save != null && saveState != null)
            {
                //remove all cards except for champion

                var deckState = save.GetDeckState();
                if (deckState != null)
                {
                    deckState.RemoveAll(x => !x.IsChampionCard());
                    List <IDeckNotifications> deckNotifications = (List <IDeckNotifications>)AccessTools.Field(typeof(SaveManager), "deckNotifications").GetValue(save);
                    deckNotifications.ForEach(rn => rn.DeckChangedNotification(deckState, save.GetVisibleDeckCount()));
                }
                save.RemoveAllRelics();
                if (saveState.relics != null)
                {
                    foreach (var relic in saveState.relics)
                    {
                        if (relic != null)
                        {
                            var relicData = save.GetAllGameData().FindCollectableRelicData(relic);
                            if (relicData != null)
                            {
                                save.AddRelic(relicData);
                            }
                        }
                    }
                }
                if (saveState.cards != null)
                {
                    foreach (var card in saveState.cards)
                    {
                        if (card.cardName != null || card.cardName != "")
                        {
                            var cardData = save.GetAllGameData().FindCardData(card.cardName);
                            var spawn    = cardData.GetSpawnCharacterData();

                            if (cardData != null && (spawn == null || (spawn != null && !spawn.IsChampion())))
                            {
                                var state = save.AddCardToDeck(cardData);
                                if (card.upgradeNames != null)
                                {
                                    foreach (string upgrade in card.upgradeNames)
                                    {
                                        if (upgrade != "")
                                        {
                                            CardUpgradeState cardUpgradeState = Activator.CreateInstance <CardUpgradeState>();
                                            CardUpgradeData  data             = save.GetAllGameData().FindCardUpgradeData(upgrade);
                                            cardUpgradeState.Setup(data);
                                            state.Upgrade(cardUpgradeState, null);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #3
0
        public CardUpgradeData Build()
        {
            CardUpgradeData cardUpgradeData = ScriptableObject.CreateInstance <CardUpgradeData>();

            foreach (var builder in this.TraitDataUpgradeBuilders)
            {
                this.TraitDataUpgrades.Add(builder.Build());
            }
            foreach (var builder in this.TriggerUpgradeBuilders)
            {
                this.TriggerUpgrades.Add(builder.Build());
            }
            foreach (var builder in this.CardTriggerUpgradeBuilders)
            {
                this.CardTriggerUpgrades.Add(builder.Build());
            }
            foreach (var builder in this.RoomModifierUpgradeBuilders)
            {
                this.RoomModifierUpgrades.Add(builder.Build());
            }
            foreach (var builder in this.FiltersBuilders)
            {
                this.Filters.Add(builder.Build());
            }
            foreach (var builder in this.UpgradesToRemoveBuilders)
            {
                this.UpgradesToRemove.Add(builder.Build());
            }

            AccessTools.Field(typeof(CardUpgradeData), "bonusDamage").SetValue(cardUpgradeData, this.BonusDamage);
            AccessTools.Field(typeof(CardUpgradeData), "bonusHeal").SetValue(cardUpgradeData, this.BonusHeal);
            AccessTools.Field(typeof(CardUpgradeData), "bonusHP").SetValue(cardUpgradeData, this.BonusHP);
            AccessTools.Field(typeof(CardUpgradeData), "bonusSize").SetValue(cardUpgradeData, this.BonusSize);
            AccessTools.Field(typeof(CardUpgradeData), "cardTriggerUpgrades").SetValue(cardUpgradeData, this.CardTriggerUpgrades);
            AccessTools.Field(typeof(CardUpgradeData), "costReduction").SetValue(cardUpgradeData, this.CostReduction);
            AccessTools.Field(typeof(CardUpgradeData), "filters").SetValue(cardUpgradeData, this.Filters);
            AccessTools.Field(typeof(CardUpgradeData), "hideUpgradeIconOnCard").SetValue(cardUpgradeData, this.HideUpgradeIconOnCard);
            AccessTools.Field(typeof(CardUpgradeData), "removeTraitUpgrades").SetValue(cardUpgradeData, this.RemoveTraitUpgrades);
            AccessTools.Field(typeof(CardUpgradeData), "roomModifierUpgrades").SetValue(cardUpgradeData, this.RoomModifierUpgrades);
            AccessTools.Field(typeof(CardUpgradeData), "statusEffectUpgrades").SetValue(cardUpgradeData, this.StatusEffectUpgrades);
            AccessTools.Field(typeof(CardUpgradeData), "traitDataUpgrades").SetValue(cardUpgradeData, this.TraitDataUpgrades);
            AccessTools.Field(typeof(CardUpgradeData), "triggerUpgrades").SetValue(cardUpgradeData, this.TriggerUpgrades);
            BuilderUtils.ImportStandardLocalization(this.UpgradeDescriptionKey, this.UpgradeDescription);
            AccessTools.Field(typeof(CardUpgradeData), "upgradeDescriptionKey").SetValue(cardUpgradeData, this.UpgradeDescriptionKey);
            if (this.UpgradeIconPath != null && this.UpgradeIconPath != "")
            {
                AccessTools.Field(typeof(CardUpgradeData), "upgradeIcon").SetValue(cardUpgradeData, CustomAssetManager.LoadSpriteFromPath(this.BaseAssetPath + "/" + this.UpgradeIconPath));
            }
            BuilderUtils.ImportStandardLocalization(this.UpgradeNotificationKey, this.UpgradeNotification);
            AccessTools.Field(typeof(CardUpgradeData), "upgradeNotificationKey").SetValue(cardUpgradeData, this.UpgradeNotificationKey);
            AccessTools.Field(typeof(CardUpgradeData), "upgradesToRemove").SetValue(cardUpgradeData, this.UpgradesToRemove);
            BuilderUtils.ImportStandardLocalization(this.UpgradeTitleKey, this.UpgradeTitle);
            AccessTools.Field(typeof(CardUpgradeData), "upgradeTitleKey").SetValue(cardUpgradeData, this.UpgradeTitleKey);
            AccessTools.Field(typeof(CardUpgradeData), "useUpgradeHighlightTextTags").SetValue(cardUpgradeData, this.UseUpgradeHighlightTextTags);
            AccessTools.Field(typeof(CardUpgradeData), "xCostReduction").SetValue(cardUpgradeData, this.XCostReduction);

            cardUpgradeData.name = UpgradeTitleKey;
            Traverse.Create(cardUpgradeData).Field("id").SetValue(UpgradeTitleKey);

            // If CardUpgrades are not added to allGameData, there are many troubles.
            var field       = Traverse.Create(ProviderManager.SaveManager.GetAllGameData()).Field("cardUpgradeDatas");
            var upgradeList = field.GetValue <List <CardUpgradeData> >();

            upgradeList.Add(cardUpgradeData);
            field.SetValue(upgradeList);

            return(cardUpgradeData);
        }
コード例 #4
0
ファイル: StokerPlugin.cs プロジェクト: crazyjackel/Stoker
        public static string GetUpgradeText(CardUpgradeData arg)
        {
            string val = arg.GetUpgradeTitleKey().Localize(null);

            if (val.Length == 0)
            {
                for (int i = 0; i < arg.GetTraitDataUpgrades().Count; i++)
                {
                    val += arg.GetTraitDataUpgrades()[i].GetTraitStateName() + ((i != arg.GetTraitDataUpgrades().Count - 1) ? ", " : "");
                }
                if (val.Length != 0 && arg.GetStatusEffectUpgrades().Count > 0)
                {
                    val += " & ";
                }
                for (int j = 0; j < arg.GetStatusEffectUpgrades().Count; j++)
                {
                    val += StatusEffectManager.GetLocalizedName(arg.GetStatusEffectUpgrades()[j].statusId, arg.GetStatusEffectUpgrades()[j].count)
                           + ((j != arg.GetStatusEffectUpgrades().Count - 1) ? ", " : "");
                }
                if (val.Length != 0 && arg.GetTriggerUpgrades().Count > 0)
                {
                    val += " & ";
                }
                for (int k = 0; k < arg.GetTriggerUpgrades().Count; k++)
                {
                    val += CharacterTriggerData.GetKeywordText(arg.GetTriggerUpgrades()[k].GetTrigger())
                           + ": "
                           + arg.GetTriggerUpgrades()[k].GetDescriptionKey().Localize(null)
                           + ((k != arg.GetTriggerUpgrades().Count - 1) ? ", " : "");
                }
                if (val.Length != 0 && arg.GetCardTriggerUpgrades().Count > 0)
                {
                    val += " & ";
                }
                for (int l = 0; l < arg.GetCardTriggerUpgrades().Count; l++)
                {
                    CardTriggerTypeMethods.GetLocalizedName(arg.GetCardTriggerUpgrades()[l].GetTrigger(), out string text);
                    val += text
                           + ": "
                           + arg.GetCardTriggerUpgrades()[l].GetDescriptionKey().Localize(null);
                }
                if (arg.GetBonusDamage() > 0)
                {
                    if (val.Length != 0)
                    {
                        val += " ";
                    }
                    val += "Bonus Damage: " + arg.GetBonusDamage();
                }
                if (arg.GetBonusHeal() > 0)
                {
                    if (val.Length != 0)
                    {
                        val += "\n";
                    }
                    val += "Bonus Heal: " + arg.GetBonusHeal();
                }
                if (arg.GetBonusHP() > 0)
                {
                    if (val.Length != 0)
                    {
                        val += "\n";
                    }
                    val += "Bonus HP: " + arg.GetBonusHP();
                }
                if (arg.GetBonusSize() > 0)
                {
                    if (val.Length != 0)
                    {
                        val += "\n";
                    }
                    val += "Bonus Size: " + arg.GetBonusSize();
                }
                if (arg.GetCostReduction() < 99 && arg.GetCostReduction() != 0)
                {
                    if (val.Length != 0)
                    {
                        val += "\n";
                    }
                    val += "Reduce Cost: " + arg.GetCostReduction();
                }
                if (arg.GetXCostReduction() > 0)
                {
                    if (val.Length != 0)
                    {
                        val += "\n";
                    }
                    val += "Reduce X Cost: " + arg.GetXCostReduction();
                }
            }
            if (val.Length == 0)
            {
                val = arg.GetUpgradeDescriptionKey().Localize(null);
            }
            if (val.Length == 0)
            {
                val = arg.name;
            }
            val = RemoveTags(val);
            return(val);
        }
コード例 #5
0
ファイル: StokerPlugin.cs プロジェクト: crazyjackel/Stoker
 private string GetUpgradeDataName(CardUpgradeData arg)
 {
     return(GetUpgradeText(arg));
 }
コード例 #6
0
ファイル: StokerPlugin.cs プロジェクト: crazyjackel/Stoker
 public void OnClickUpgradeData(StokerPlugin plugin, SelectionButton <CardUpgradeData> obj, CardUpgradeData item)
 {
     plugin.selectedUpgradeData = item;
     if (plugin.selectedUpgradeDataGameobject != null)
     {
         Color color = new Color(74f / 255, 78f / 255, 84f / 255);
         plugin.selectedUpgradeDataGameobject.button.colors = getGreyColorBlock();
     }
     plugin.selectedUpgradeDataGameobject = obj;
     obj.button.colors = getRedColorBlock();
 }