static bool Prefix(ref TMP_InputField ___m_InputNameField, ref Button ___m_Build) { if (!Main.enabled) { return(true); } if (!Main.settings.currencyFallback) { return(true); } try { bool canAfford = KingdomCurrencyFallback.CanSpend(KingdomRoot.Instance.SettlementBPCost); if (canAfford) { canAfford = !___m_InputNameField.text.Empty(); } ___m_Build.interactable = canAfford; return(false); } catch (Exception ex) { Main.Error(ex); return(true); } }
static void Postfix(int cost, bool format, ref string __result) { try { if (!Main.enabled) { return; } if (!Main.settings.currencyFallback) { return; } if (!KingdomCurrencyFallback.CanSpend(cost)) { return; } string costFormat = KingdomCurrencyFallback.costFormat; string costSplitFormat = KingdomCurrencyFallback.costSplitFormat; var originalFormat = (!format) ? KingdomUIRoot.Instance.Texts.KingdomProjectStartBPCostStartLabelFormat : KingdomUIRoot.Instance.Texts.KingdomProjectStartBPCostFormat; Tuple <int, int> costSplit = KingdomCurrencyFallback.SplitCost(cost); if (costSplit.Item2 == 0) { __result = string.Format(costFormat, string.Format(originalFormat, costSplit.Item1)); } else { __result = string.Format(costSplitFormat, string.Format(originalFormat, costSplit.Item1), costSplit.Item2); } } catch (Exception ex) { Main.Error(ex); return; } }
static bool Prefix(SettlementState __instance, ref bool __result, BlueprintSettlementBuilding building, int ___m_SlotsLeft) { try { if (!Main.enabled) { return(true); } if (!Main.settings.currencyFallback) { return(true); } if (!KingdomCurrencyFallback.CanSpend(__instance.GetActualCost(building))) { UberDebug.LogSystem("[KingdomResolution] SettlementState_CanBuild_Patch: Cannot spend"); __result = false; return(false); } SpecialSlotType specialSlot = building.SpecialSlot; if (specialSlot != SpecialSlotType.None) { if (__instance.IsSpecialSlotFilled(specialSlot)) { return(false); } } else if (___m_SlotsLeft < building.SlotCount) { return(false); } __result = CanBuildByLevel(__instance, building); return(false); } catch (Exception ex) { Main.Error(ex); return(true); } }
static void Postfix(TextMeshProUGUI ___m_DescText, GlobalMapLocation ___m_Location, GameObject ___m_StandartControllers, GameObject ___m_OkControllers) { try { if (!Main.enabled) { return; } if (!Main.settings.currencyFallback) { return; } LocationData.ResourceStateType resource = ___m_Location.Data.Resource; if (resource == ResourceStateType.CantClaimWrongRegion) { return; } if (resource != ResourceStateType.CanClaim) { return; } if (!KingdomCurrencyFallback.CanSpend(KingdomRoot.Instance.DefaultMapResourceCost)) { return; } string resourceCostSplitFormat = KingdomCurrencyFallback.resourceCostSplitFormat; UITextGlobalMap globalMap = Game.Instance.BlueprintRoot.LocalizedTexts.UserInterfacesText.GlobalMap; Tuple <int, int> costSplit = KingdomCurrencyFallback.SplitCost(KingdomRoot.Instance.DefaultMapResourceCost); if (costSplit.Item2 == 0) { return; } var bpText = string.Format(resourceCostSplitFormat, costSplit.Item1, costSplit.Item2); ___m_DescText.text = string.Format(globalMap.ResourceAvailable, bpText, KingdomState.Instance.BuildPoints); ___m_StandartControllers.SetActive(true); ___m_OkControllers.SetActive(false); } catch (Exception ex) { Main.Error(ex); } }
static bool Prefix(SettlementState __instance, SettlementBuilding building, ref SettlementBuilding __result, BuildingsCollection ___m_Buildings) { try { if (!Main.enabled) { return(true); } if (!Main.settings.currencyFallback) { return(true); } if (!building.IsFinished || !___m_Buildings.HasFact(building) || !building.Blueprint.UpgradesTo) { return(false); } if (!KingdomCurrencyFallback.CanSpend(__instance.GetActualCost(building.Blueprint.UpgradesTo))) { UberDebug.LogWarning("Cannot upgrade " + building.Blueprint + ": not enough BP"); return(false); } KingdomCurrencyFallback.SpendPoints(__instance.GetActualCost(building.Blueprint)); SettlementBuilding result = ___m_Buildings.Upgrade(building); __instance.Update(); EventBus.RaiseEvent((ISettlementBuildUpdate h) => h.OnBuildUpdate(building)); __result = result; return(false); } catch (Exception ex) { Main.Error(ex); return(true); } }
static bool Prefix(KingdomUIEventWindowFooter __instance, ref bool __result, KingdomEventUIView kingdomEventView, ref bool enable) { try { if (!Main.enabled) { return(true); } if (!Main.settings.currencyFallback) { return(true); } enable = false; if (kingdomEventView.Task == null) { __result = false; return(false); } if (kingdomEventView.Task.IsStarted) { __result = false; return(false); } enable = (kingdomEventView.Task.AssignedLeader != null); if (enable && kingdomEventView.CostInBP > 0) { enable = KingdomCurrencyFallback.CanSpend(kingdomEventView.CostInBP); } if (enable && !KingdomTimelineManager.CanAdvanceTime()) { enable = !IsSpendRulerTimeDays(__instance); } __result = true; return(false); } catch (Exception ex) { Main.Error(ex); return(true); } }
static bool Prefix(SettlementState __instance, ref bool __result, BlueprintSettlementBuilding building) { try { if (!Main.enabled) { return(true); } if (!Main.settings.currencyFallback) { return(true); } __result = KingdomCurrencyFallback.CanSpend(__instance.GetActualCost(building)) && building.MinLevel <= __instance.Level && __instance.Buildings.Any(b => b.Blueprint.UpgradesTo == building); return(false); } catch (Exception ex) { Main.Error(ex); return(true); } }