From 44705dcc75097d2ad876145004241d318646a308 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Tue, 25 Feb 2025 16:14:12 +0100 Subject: [PATCH] Add multi-buy functionality for block purchasing --- Projects/TerraTech/TerraTech/Class1.cs | 7 ++ Projects/TerraTech/TerraTech/MultiBuy.cs | 71 +++++++++++++++++++ Projects/TerraTech/TerraTech/TerraTech.csproj | 1 + Projects/TerraTech/TerraTech/log.cs | 14 ++++ 4 files changed, 93 insertions(+) create mode 100644 Projects/TerraTech/TerraTech/MultiBuy.cs create mode 100644 Projects/TerraTech/TerraTech/log.cs diff --git a/Projects/TerraTech/TerraTech/Class1.cs b/Projects/TerraTech/TerraTech/Class1.cs index c4df6ad..8994b77 100644 --- a/Projects/TerraTech/TerraTech/Class1.cs +++ b/Projects/TerraTech/TerraTech/Class1.cs @@ -16,6 +16,9 @@ namespace TerraTech { public static ConfigEntry debug; public static ConfigEntry debugBuyAll; + public static ConfigEntry debugMultiBuy; + public static ConfigEntry multiBuyAmount; + public static ConfigEntry xpMultiplier; public static ConfigEntry moneyMultiplier; public static ConfigEntry heartbeatIntervalMultiplier; @@ -27,6 +30,10 @@ namespace TerraTech { public void Awake() { debug = Config.Bind("General", "Debug", false); debugBuyAll = Config.Bind("General", "Debug Buy All", false); + debugMultiBuy = Config.Bind("General", "Debug Multi Buy", false); + multiBuyAmount = + Config.Bind("General", "Multi Buy Amount", 10, + new ConfigDescription("Multi Buy Amount", new AcceptableValueRange(1, 10000))); float min = 0.01f; float max = 32f; diff --git a/Projects/TerraTech/TerraTech/MultiBuy.cs b/Projects/TerraTech/TerraTech/MultiBuy.cs new file mode 100644 index 0000000..b36129b --- /dev/null +++ b/Projects/TerraTech/TerraTech/MultiBuy.cs @@ -0,0 +1,71 @@ +using System; +using System.Reflection; +using HarmonyLib; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace TerraTech { + [HarmonyPatch] + public class MultiBuy { + public static UIShopBlockSelect panel; + public static Traverse panelTraverse; + + [HarmonyPostfix] + [HarmonyPatch(typeof(UIShopBlockSelect), "OnSpawn")] + public static void PostfixCreate(UIShopBlockSelect __instance) { + panel = __instance; + if (Main.debugBuyAll.Value) + Console.WriteLine("UISnapshotPanel.OnPool: {0}", __instance); + panelTraverse = Traverse.Create(__instance); + var placeButton = panelTraverse.Field("m_PurchaseBlockButton").GetValue