From 745e1f77be009e9c9ea16a0d203bb33dccf96711 Mon Sep 17 00:00:00 2001 From: tyukara Date: Mon, 19 Jul 2021 22:24:27 +0900 Subject: [PATCH 1/3] add UI text m17n --- BetterStats/BetterStats.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/BetterStats/BetterStats.cs b/BetterStats/BetterStats.cs index 1d909ee..ed3e2a4 100644 --- a/BetterStats/BetterStats.cs +++ b/BetterStats/BetterStats.cs @@ -265,14 +265,14 @@ private static EnhancedUIProductEntryElements EnhanceUIProductEntry(UIProductEnt __instance.consumeUnitLabel.GetComponent().anchoredPosition = new Vector2(initialXOffset + valuesWidth + 4, -4); var maxProductionLabel = CopyText(__instance.productLabel, new Vector2(maxOffset, 0)); - maxProductionLabel.text = "Theoretical Max"; + maxProductionLabel.text = "Theoretical Max".Translate(); var maxProductionValue = CopyText(__instance.productText, new Vector2(maxOffset, 0)); maxProductionValue.text = "0"; var maxProductionUnit = CopyText(__instance.productUnitLabel, new Vector2(maxOffset, 0)); maxProductionUnit.text = "/min"; var maxConsumptionLabel = CopyText(__instance.consumeLabel, new Vector2(maxOffset, 0)); - maxConsumptionLabel.text = "Theoretical Max"; + maxConsumptionLabel.text = "Theoretical Max".Translate(); var maxConsumptionValue = CopyText(__instance.consumeText, new Vector2(maxOffset, 0)); maxConsumptionValue.text = "0"; var maxConsumptionUnit = CopyText(__instance.consumeUnitLabel, new Vector2(maxOffset, 0)); @@ -280,14 +280,14 @@ private static EnhancedUIProductEntryElements EnhanceUIProductEntry(UIProductEnt var counterProductionLabel = CopyText(__instance.productLabel, new Vector2(-initialXOffset, 0)); counterProductionLabel.GetComponent().sizeDelta = new Vector2(60, 40); - counterProductionLabel.text = "Producers"; + counterProductionLabel.text = "Producers".Translate(); var counterProductionValue = CopyText(__instance.productText, new Vector2(-initialXOffset, 0)); counterProductionValue.GetComponent().sizeDelta = new Vector2(60, 40); counterProductionValue.text = "0"; var counterConsumptionLabel = CopyText(__instance.consumeLabel, new Vector2(-initialXOffset, 0)); counterConsumptionLabel.GetComponent().sizeDelta = new Vector2(60, 40); - counterConsumptionLabel.text = "Consumers"; + counterConsumptionLabel.text = "Consumers".Translate(); var counterConsumptionValue = CopyText(__instance.consumeText, new Vector2(-initialXOffset, 0)); counterConsumptionValue.GetComponent().sizeDelta = new Vector2(60, 40); counterConsumptionValue.text = "0"; @@ -369,7 +369,7 @@ public static void UIProductionStatWindow__OnOpen_Postfix(UIProductionStatWindow rectTxt.anchoredPosition = new Vector2(20, 0); Text text = rectTxt.gameObject.AddComponent(); - text.text = "Display /sec"; + text.text = "Display /sec".Translate(); text.fontStyle = FontStyle.Normal; text.fontSize = 14; text.verticalOverflow = VerticalWrapMode.Overflow; @@ -418,7 +418,7 @@ public static void UIProductionStatWindow__OnOpen_Postfix(UIProductionStatWindow _placeholder.alignment = TextAnchor.MiddleLeft; _placeholder.supportRichText = false; _placeholder.horizontalOverflow = HorizontalWrapMode.Overflow; - _placeholder.text = "Filter"; + _placeholder.text = "Filter".Translate(); (_placeholder.transform as RectTransform).sizeDelta = new Vector2(90, 30); (_placeholder.transform as RectTransform).anchoredPosition = new Vector2(5, 0); From 0704036d1132239f2e038eed5f63ca0a8745b189 Mon Sep 17 00:00:00 2001 From: tyukara Date: Tue, 17 Aug 2021 20:10:10 +0900 Subject: [PATCH 2/3] hand merge --- BetterStats/BetterStats.cs | 105 +++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 52 deletions(-) diff --git a/BetterStats/BetterStats.cs b/BetterStats/BetterStats.cs index ed3e2a4..fd66d89 100644 --- a/BetterStats/BetterStats.cs +++ b/BetterStats/BetterStats.cs @@ -33,7 +33,7 @@ public class EnhancedUIProductEntryElements private static ConfigEntry lackOfProductionRatioTrigger; private static ConfigEntry consumptionToProductionRatioTrigger; private static Dictionary counter = new Dictionary(); - private static bool displaySec = true; + private static bool displaySec = false; private static GameObject txtGO, chxGO, filterGO; private static Texture2D texOff = Resources.Load("ui/textures/sprites/icons/checkbox-off"); private static Texture2D texOn = Resources.Load("ui/textures/sprites/icons/checkbox-on"); @@ -53,7 +53,7 @@ public class EnhancedUIProductEntryElements private static int lastStatTimer; private static Dictionary enhancements = new Dictionary(); - private static UIProductionStatWindow statWindow; + private static UIStatisticsWindow statWindow; internal void Awake() { @@ -114,15 +114,8 @@ private static void ClearEnhancedUIProductEntries() { if (statWindow == null) return; - //wipe all productentry as we have heavily modified the layout - foreach (var entry in statWindow.entryPool) - { - entry.Destroy(); - } - - enhancements.Clear(); - statWindow.entryPool.Clear(); + statWindow.entryList.ResetListStatus(); } private static Text CopyText(Text original, Vector2 positionDelta) @@ -197,8 +190,9 @@ private static float ReverseFormat(string value) private static EnhancedUIProductEntryElements EnhanceUIProductEntry(UIProductEntry __instance) { - __instance.itemIcon.transform.parent.GetComponent().sizeDelta = new Vector2(80, 80); - __instance.itemIcon.transform.parent.GetComponent().anchoredPosition = new Vector2(22, 12); + var parent = __instance.itemIcon.transform.parent; + parent.GetComponent().sizeDelta = new Vector2(80, 80); + parent.GetComponent().anchoredPosition = new Vector2(22, 12); __instance.favoriteBtn1.GetComponent().anchoredPosition = new Vector2(26, -32); __instance.favoriteBtn2.GetComponent().anchoredPosition = new Vector2(49, -32); @@ -211,7 +205,7 @@ private static EnhancedUIProductEntryElements EnhanceUIProductEntry(UIProductEnt itemNameRect.anchorMax = new Vector2(1f, 0); itemNameRect.anchoredPosition = new Vector2(0, 0); - __instance.itemIcon.transform.parent.GetComponent().sizeDelta = new Vector2(80, 80); + parent.GetComponent().sizeDelta = new Vector2(80, 80); __instance.itemName.resizeTextForBestFit = true; __instance.itemName.resizeTextMaxSize = 14; @@ -314,8 +308,8 @@ private static EnhancedUIProductEntryElements EnhanceUIProductEntry(UIProductEnt return enhancement; } - [HarmonyPostfix, HarmonyPatch(typeof(UIProductionStatWindow), "_OnOpen")] - public static void UIProductionStatWindow__OnOpen_Postfix(UIProductionStatWindow __instance) + [HarmonyPostfix, HarmonyPatch(typeof(UIStatisticsWindow), "_OnOpen")] + public static void UIStatisticsWindow__OnOpen_Postfix(UIStatisticsWindow __instance) { if (statWindow == null) { @@ -324,19 +318,23 @@ public static void UIProductionStatWindow__OnOpen_Postfix(UIProductionStatWindow if (chxGO != null) return; - var favoritesLabel = GameObject.Find("UI Root/Overlay Canvas/In Game/Windows/Production Stat Window/product-bg/top/favorite-text"); + var favoritesLabel = GameObject.Find("UI Root/Overlay Canvas/In Game/Windows/Statistics Window/product-bg/top/favorite-text"); if (favoritesLabel != null) { favoritesLabel.SetActive(false); + Console.WriteLine($"favorites label set inactive"); + } + else + { + Console.WriteLine($"favorites label not found"); } - sprOn = Sprite.Create(texOn, new Rect(0, 0, texOn.width, texOn.height), new Vector2(0.5f, 0.5f)); sprOff = Sprite.Create(texOff, new Rect(0, 0, texOff.width, texOff.height), new Vector2(0.5f, 0.5f)); chxGO = new GameObject("displaySec"); RectTransform rect = chxGO.AddComponent(); - rect.SetParent(__instance.productRankBox.transform.parent, false); + rect.SetParent(__instance.productSortBox.transform.parent, false); rect.anchorMax = new Vector2(0, 1); rect.anchorMin = new Vector2(0, 1); @@ -382,7 +380,7 @@ public static void UIProductionStatWindow__OnOpen_Postfix(UIProductionStatWindow filterGO = new GameObject("filterGo"); RectTransform rectFilter = filterGO.AddComponent(); - rectFilter.SetParent(__instance.productRankBox.transform.parent, false); + rectFilter.SetParent(__instance.productSortBox.transform.parent, false); rectFilter.anchorMax = new Vector2(0, 1); rectFilter.anchorMin = new Vector2(0, 1); @@ -435,51 +433,52 @@ public static void UIProductionStatWindow__OnOpen_Postfix(UIProductionStatWindow __instance.ComputeDisplayEntries(); }); - chxGO.transform.SetParent(__instance.productRankBox.transform.parent, false); + chxGO.transform.SetParent(__instance.productSortBox.transform.parent, false); txtGO.transform.SetParent(chxGO.transform, false); - filterGO.transform.SetParent(__instance.productRankBox.transform.parent, false); + filterGO.transform.SetParent(__instance.productSortBox.transform.parent, false); } - [HarmonyPostfix, HarmonyPatch(typeof(UIProductionStatWindow), "AddToDisplayEntries")] - public static void UIProductionStatWindow_AddToDisplayEntries_Prefix(UIProductionStatWindow __instance) + [HarmonyPostfix, HarmonyPatch(typeof(UIProductEntryList), "FilterEntries")] + public static void UIProductEntryList_FilterEntries_Postfix(UIProductEntryList __instance) { if (filterStr == "") return; - __instance.displayEntries.RemoveAll((data) => + var uiProductEntryList = __instance; + for (int pIndex = uiProductEntryList.entryDatasCursor - 1; pIndex >= 0; --pIndex) { - var proto = LDB.items.Select(data[0]); + UIProductEntryData entryData = uiProductEntryList.entryDatas[pIndex]; + var proto = LDB.items.Select(entryData.itemId); - if (proto.name.IndexOf(filterStr, StringComparison.OrdinalIgnoreCase) >= 0) + if (proto.name.IndexOf(filterStr, StringComparison.OrdinalIgnoreCase) < 0) { - return false; + uiProductEntryList.Swap(pIndex, uiProductEntryList.entryDatasCursor - 1); + --uiProductEntryList.entryDatasCursor; } - return true; - }); + } } - [HarmonyPrefix, HarmonyPatch(typeof(UIProductionStatWindow), "_OnUpdate")] - public static void UIProductionStatWindow__OnUpdate_Prefix(UIProductionStatWindow __instance) + [HarmonyPrefix, HarmonyPatch(typeof(UIStatisticsWindow), "_OnUpdate")] + public static void UIStatisticsWindow__OnUpdate_Prefix(UIStatisticsWindow __instance) { if (statWindow == null) { statWindow = __instance; } - if (lastStatTimer != __instance.statTimeLevel && (__instance.statTimeLevel == 5 || lastStatTimer == 5)) - { - ClearEnhancedUIProductEntries(); - } - lastStatTimer = __instance.statTimeLevel; + lastStatTimer = __instance.timeLevel; } - [HarmonyPostfix, HarmonyPatch(typeof(UIProductEntry), "UpdateProduct")] - public static void UIProductEntry_UpdateProduct_Postfix(UIProductEntry __instance) + [HarmonyPostfix, HarmonyPatch(typeof(UIProductEntry), "_OnUpdate")] + public static void UIProductEntry__OnUpdate_Postfix(UIProductEntry __instance) { - if (__instance.productionStatWindow.statTimeLevel == 5) return; - - if (!enhancements.TryGetValue(__instance, out EnhancedUIProductEntryElements enhancement)) + if (__instance.productionStatWindow == null || !__instance.productionStatWindow.isProductionTab) return; + if (!__instance.productionStatWindow.isProductionTab) + { + return; + } + if (!enhancements.TryGetValue(__instance, out EnhancedUIProductEntryElements enhancement)) { enhancement = EnhanceUIProductEntry(__instance); @@ -520,9 +519,9 @@ public static void UIProductEntry_UpdateProduct_Postfix(UIProductEntry __instanc enhancement.maxProductionUnit.text = enhancement.maxConsumptionUnit.text = unit; - if (counter.ContainsKey(__instance.itemId)) + if (counter.ContainsKey(__instance.entryData.itemId)) { - var productMetrics = counter[__instance.itemId]; + var productMetrics = counter[__instance.entryData.itemId]; float maxProductValue = productMetrics.production / divider; float maxConsumeValue = productMetrics.consumption / divider; maxProduction = FormatMetric(maxProductValue); @@ -557,12 +556,12 @@ public static void UIProductEntry_UpdateProduct_Postfix(UIProductEntry __instanc enhancement.maxConsumptionValue.color = new Color( 1f, 1f, .25f, .5f); } - [HarmonyPrefix, HarmonyPatch(typeof(UIProductionStatWindow), "ComputeDisplayEntries")] - public static void UIProductionStatWindow_ComputeDisplayEntries_Prefix(UIProductionStatWindow __instance) + [HarmonyPrefix, HarmonyPatch(typeof(UIStatisticsWindow), "ComputeDisplayEntries")] + public static void UIProductionStatWindow_ComputeDisplayEntries_Prefix(UIStatisticsWindow __instance) { counter.Clear(); - if (__instance.targetIndex == -1) + if (__instance.astroFilter == -1) { int factoryCount = __instance.gameData.factoryCount; for (int i = 0; i < factoryCount; i++) @@ -570,18 +569,18 @@ public static void UIProductionStatWindow_ComputeDisplayEntries_Prefix(UIProduct AddPlanetFactoryData(__instance.gameData.factories[i]); } } - else if (__instance.targetIndex == 0) + else if (__instance.astroFilter == 0) { AddPlanetFactoryData(__instance.gameData.localPlanet.factory); } - else if (__instance.targetIndex % 100 > 0) + else if (__instance.astroFilter % 100 > 0) { - PlanetData planetData = __instance.gameData.galaxy.PlanetById(__instance.targetIndex); + PlanetData planetData = __instance.gameData.galaxy.PlanetById(__instance.astroFilter); AddPlanetFactoryData(planetData.factory); } - else if (__instance.targetIndex % 100 == 0) + else if (__instance.astroFilter % 100 == 0) { - int starId = __instance.targetIndex / 100; + int starId = __instance.astroFilter / 100; StarData starData = __instance.gameData.galaxy.StarById(starId); for (int j = 0; j < starData.planetCount; j++) { @@ -743,12 +742,14 @@ public static void AddPlanetFactoryData(PlanetFactory planetFactory) } } + + var collectorsWorkCost = Traverse.Create().Field("collectorsWorkCost").GetValue(); + for (int i = 1; i < transport.stationCursor; i++) { var station = transport.stationPool[i]; if (station == null || station.id != i || !station.isCollector) continue; - double collectorsWorkCost = transport.collectorsWorkCost; double gasTotalHeat = planetFactory.planet.gasTotalHeat; float collectSpeedRate = (gasTotalHeat - collectorsWorkCost > 0.0) ? ((float)((miningSpeedScale * gasTotalHeat - collectorsWorkCost) / (gasTotalHeat - collectorsWorkCost))) : 1f; From 1f0bd1760ace495f9b9e45e8e079e79290a9b797 Mon Sep 17 00:00:00 2001 From: tyukara Date: Wed, 18 Aug 2021 10:36:46 +0900 Subject: [PATCH 3/3] update upstream v1.3.1 --- BetterStats/BetterStats.cs | 8 ++++---- BetterStats/Properties/AssemblyInfo.cs | 6 +++--- BetterStats/manifest.json | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/BetterStats/BetterStats.cs b/BetterStats/BetterStats.cs index fd66d89..96e73e1 100644 --- a/BetterStats/BetterStats.cs +++ b/BetterStats/BetterStats.cs @@ -184,7 +184,7 @@ private static float ReverseFormat(string value) } catch (FormatException ex) { - throw new ArgumentException("Invalid format String : '" + value+"' (parsed as "+numericValue+" * "+multiplier+")", nameof(value), ex); + throw new ArgumentException("Invalid format String : '" + value + "' (parsed as " + numericValue + " * " + multiplier + ")", nameof(value), ex); } } @@ -550,7 +550,7 @@ public static void UIProductEntry__OnUpdate_Postfix(UIProductEntry __instance) enhancement.maxConsumptionValue.color = enhancement.counterConsumptionValue.color = __instance.consumeText.color; if (alertOnLackOfProduction) - enhancement.maxProductionValue.color = __instance.consumeText.color = new Color(1f,.25f,.25f,.5f); + enhancement.maxProductionValue.color = __instance.consumeText.color = new Color(1f, .25f, .25f, .5f); if (warnOnHighMaxConsumption) enhancement.maxConsumptionValue.color = new Color( 1f, 1f, .25f, .5f); @@ -743,14 +743,14 @@ public static void AddPlanetFactoryData(PlanetFactory planetFactory) } - var collectorsWorkCost = Traverse.Create().Field("collectorsWorkCost").GetValue(); + double gasTotalHeat = planetFactory.planet.gasTotalHeat; + var collectorsWorkCost = transport.collectorsWorkCost; for (int i = 1; i < transport.stationCursor; i++) { var station = transport.stationPool[i]; if (station == null || station.id != i || !station.isCollector) continue; - double gasTotalHeat = planetFactory.planet.gasTotalHeat; float collectSpeedRate = (gasTotalHeat - collectorsWorkCost > 0.0) ? ((float)((miningSpeedScale * gasTotalHeat - collectorsWorkCost) / (gasTotalHeat - collectorsWorkCost))) : 1f; for (int j = 0; j < station.collectionIds.Length; j++) diff --git a/BetterStats/Properties/AssemblyInfo.cs b/BetterStats/Properties/AssemblyInfo.cs index 904973d..ee8e50c 100644 --- a/BetterStats/Properties/AssemblyInfo.cs +++ b/BetterStats/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -28,5 +28,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("1.2.0")] -[assembly: AssemblyFileVersion("1.2.0")] +[assembly: AssemblyVersion("1.3.1")] +[assembly: AssemblyFileVersion("1.3.1")] diff --git a/BetterStats/manifest.json b/BetterStats/manifest.json index 7991ba5..dd8dee9 100644 --- a/BetterStats/manifest.json +++ b/BetterStats/manifest.json @@ -1,7 +1,7 @@ { "name": "BetterStats", "description": "Add more information to the production stats panel", - "version_number": "1.2.0", + "version_number": "1.3.1", "dependencies": ["xiaoye97-BepInEx-5.4.5"], "website_url": "https://github.com/DysonSphereMod/QOL" }