//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; } }
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); } } } } } } } } }
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); }
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); }
private string GetUpgradeDataName(CardUpgradeData arg) { return(GetUpgradeText(arg)); }
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(); }