From 377ce9030eff14f553784fea55843627ce76e9c3 Mon Sep 17 00:00:00 2001 From: HighFlyer222 <66063913+HighFlyer-222@users.noreply.github.com> Date: Thu, 1 May 2025 15:17:14 +0200 Subject: [PATCH 1/2] Dynamic tech branch angle --- src/Managers/Main.cs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/Managers/Main.cs b/src/Managers/Main.cs index ec3b5d5..94cf3c6 100644 --- a/src/Managers/Main.cs +++ b/src/Managers/Main.cs @@ -129,6 +129,40 @@ private static void GameModeScreen_Init(GameModeScreen __instance) } } + [HarmonyPrefix] + [HarmonyPatch(typeof(TechView), nameof(TechView.CreateNode))] + public static bool TechView_CreateNode(TechData data, TechItem parentItem, float angle, TechView __instance) { + float num = 360 / GameManager.GameState.GameLogicData.GetTechData(TechData.Type.Basic).techUnlocks.Count; + float num2 = 0f; + if (parentItem != null) + { + num2 = angle + num * (data.techUnlocks.Count - 1) / 2f; + } + GameLogicData gameLogicData = GameManager.GameState.GameLogicData; + TribeData tribeData = gameLogicData.GetTribeData(GameManager.LocalPlayer.tribe); + foreach (TechData techData in data.techUnlocks) + { + if (gameLogicData.TryGetData(techData.type, out TechData techData2)) + { + TechData @override = GameManager.GameState.GameLogicData.GetOverride(techData, tribeData); + TechItem techItem = __instance.CreateTechItem(@override, parentItem, num2); + __instance.currTechIdx++; + if (@override.techUnlocks != null && @override.techUnlocks.Count > 0) + { + __instance.CreateNode(@override, techItem, num2); + } + num2 -= num; + } + } + Il2CppSystem.Action onItemsRefreshed = __instance.OnItemsRefreshed; + if (onItemsRefreshed == null) + { + return false; + } + onItemsRefreshed.Invoke(__instance); + return false; + } + internal static void Init() { stopwatch.Start(); From 9de1fd77b1cac376c685b85846ff7ceb21b76e1e Mon Sep 17 00:00:00 2001 From: HighFlyer222 <66063913+HighFlyer-222@users.noreply.github.com> Date: Thu, 1 May 2025 15:40:12 +0200 Subject: [PATCH 2/2] Tech branch fixes --- src/Managers/Main.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Managers/Main.cs b/src/Managers/Main.cs index 94cf3c6..ae86f5b 100644 --- a/src/Managers/Main.cs +++ b/src/Managers/Main.cs @@ -131,12 +131,12 @@ private static void GameModeScreen_Init(GameModeScreen __instance) [HarmonyPrefix] [HarmonyPatch(typeof(TechView), nameof(TechView.CreateNode))] - public static bool TechView_CreateNode(TechData data, TechItem parentItem, float angle, TechView __instance) { - float num = 360 / GameManager.GameState.GameLogicData.GetTechData(TechData.Type.Basic).techUnlocks.Count; - float num2 = 0f; + public static bool TechView_CreateNode(TechView __instance, TechData data, TechItem parentItem, float angle) { + float baseAngle = 360 / GameManager.GameState.GameLogicData.GetTechData(TechData.Type.Basic).techUnlocks.Count; + float childAngle = 0f; if (parentItem != null) { - num2 = angle + num * (data.techUnlocks.Count - 1) / 2f; + childAngle = angle + baseAngle * (data.techUnlocks.Count - 1) / 2f; } GameLogicData gameLogicData = GameManager.GameState.GameLogicData; TribeData tribeData = gameLogicData.GetTribeData(GameManager.LocalPlayer.tribe); @@ -145,13 +145,13 @@ public static bool TechView_CreateNode(TechData data, TechItem parentItem, float if (gameLogicData.TryGetData(techData.type, out TechData techData2)) { TechData @override = GameManager.GameState.GameLogicData.GetOverride(techData, tribeData); - TechItem techItem = __instance.CreateTechItem(@override, parentItem, num2); + TechItem techItem = __instance.CreateTechItem(@override, parentItem, childAngle); __instance.currTechIdx++; if (@override.techUnlocks != null && @override.techUnlocks.Count > 0) { - __instance.CreateNode(@override, techItem, num2); + __instance.CreateNode(@override, techItem, childAngle); } - num2 -= num; + childAngle -= baseAngle; } } Il2CppSystem.Action onItemsRefreshed = __instance.OnItemsRefreshed;