From e9a29e7837f790297511e5c439c42cf97f02c00a Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 14 Jun 2026 04:18:14 +0100 Subject: [PATCH] Use typed thermal properties without DTO fallback --- .voidbot/state/aetheria.cc | Bin 62625 -> 62899 bytes .../UI/Properties Panel/PropertiesPanel.cs | 19 +++++++----------- docs/aetheria-perfect-machine-map.md | 9 +++++---- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/.voidbot/state/aetheria.cc b/.voidbot/state/aetheria.cc index 3bfe95ce4c4e2c79c07de608ff0e529ce6898cb7..10df3bb1ab5a11d54f84a9e93046ec4d9a9e09fb 100644 GIT binary patch delta 1305 zcmZ`(&1;h}7}wR04McS6$|lM)59(xV*G@a9B7%zSAREPtJ(;~t+qg8zlDylBNQIpQ zFY*eCASf#HB+7f+Nn~F1;zeN~coOFX!T-SL{c5K}=%M{J$@BY4p8QDpKU1$3JGw?s z9Usn|7|WOLZr$sBug%FUb8woHL0-ak9bbOolk8E+S`cK|}+Uwo=YP_M|?q+dP zOGUM1)JzgVIoKN2b;3buYN)WpGATev;8Iknh6>@_z!Y(&!6Hbj#A(2VD-%#_ly$f` z^W5Qt)mMHMU13?B0<*LZOc+I-@GvHzHMAK|)s&P?Yqlmh%K#DO7K9ut5{U_ig5&C0 z3e&V7%ub9o#|;_oN<{_WQx;qRC57GWfmPNr4U7DOw}5 zOzOZgWRG83h(WJG(+ZDl8cgH^omWlH9A;5ZXyVa?!vH8^Yq+US&|g%rE{}DF8&_9| zLo=^Q7{EAM!qBaN`_h#fMcwnZ9Z4+0aV?mdba@%-azFb0H_H*91}f=mNFk(`KaR%v;?RgF*}+Jc`MmtYYr6G4UirE9A@O2x}WpOj=zyIOAV*?SM*VPT~$7-@THz=FezkE1* zJ7xvp^~gpYcCf2puvGPTR0Cd8*+?vztEJ^;VVY3+C>7<(f6ww<# znf5*`AMVaYZ_emQ>6s-}^JUYt_v?F)-}~<7R(ORW#?Q!*3f_^Iv4WwHrtxRL?(FJJ z4)8vv`l9!#kjsVd)AH(@7|2I}Ol|XC{7})BLVm=9wFle7{e`^uJC*i7uf6Sxw~XXU Fe*jYb=0E@d delta 984 zcmZXTPe@cj9LLi&QxFOBPe{_QOM&RRZZ4XZmzK&(x)_n*VSI1i?$~=XkC}OHuLvnG z9RjiG+967eE*TFx1VKdI?GmgM2z6-NF5Npc^WJV+-QI70zxn+>zwh@=R82jqq&C(Y z_hrXNhSMXX>SwA)y>Gl%i%+Nz)gHxCHN7}^|3EWpJDWQ8y#v6n{@fx|dh z961u(LxOm|i~sJPhSNzFh`s_oCl($6Q6&CgF>qbbGld`yvCw6yX>=-SVlmHSHjyFB zBZ2Gp5Vij=@X&P-5?R+kU&7#U=7B6?kfD!lwcX!y%FqI5rS!VQ)GS?oIYk#Sm5hfV zIikYBJfYG(sE|Cc5*j^Ft)A>!5|U`xd2HkW$$+`GR)q&t5*Wx1CC+G zCOuJTNm=09AQ3NM88e%fb;A0RL%Y|jaceK2L^PNN=U8Y_48&P1jlqLP{sc|?rllT? zr5*t7`#%O6I`EM!iu5x?t!N|o($<2ekyRuVtIWl|{Oo-sAi Mx9Z#0`blo~H?7EXbN~PV diff --git a/Assets/Scripts/UI/Properties Panel/PropertiesPanel.cs b/Assets/Scripts/UI/Properties Panel/PropertiesPanel.cs index c283b62dc..26ec8d2e1 100644 --- a/Assets/Scripts/UI/Properties Panel/PropertiesPanel.cs +++ b/Assets/Scripts/UI/Properties Panel/PropertiesPanel.cs @@ -405,18 +405,15 @@ public class PropertiesPanel : MonoBehaviour return Math.Max(item.Durability, 1f); } - private static (float minimum, float maximum) GetThermalRange(AetheriaRuntimeCatalogItem typedItem, EquippableItemData legacyData) + private static (float minimum, float maximum) GetThermalRange(AetheriaRuntimeCatalogItem typedItem) { if (typedItem != null && typedItem.MaximumTemperature > typedItem.MinimumTemperature) return ((float)typedItem.MinimumTemperature, (float)typedItem.MaximumTemperature); - if (legacyData != null && legacyData.MaximumTemperature > legacyData.MinimumTemperature) - return (legacyData.MinimumTemperature, legacyData.MaximumTemperature); - return (0f, 1f); } - private static BezierCurve GetThermalPerformanceCurve(AetheriaRuntimeCatalogItem typedItem, EquippableItemData legacyData) + private static BezierCurve GetThermalPerformanceCurve(AetheriaRuntimeCatalogItem typedItem) { if (typedItem?.ThermalPerformanceCurveKeys != null && typedItem.ThermalPerformanceCurveKeys.Count > 0) { @@ -432,7 +429,7 @@ public class PropertiesPanel : MonoBehaviour }; } - return legacyData?.HeatPerformanceCurve ?? new BezierCurve + return new BezierCurve { Keys = new[] { @@ -540,9 +537,8 @@ public class PropertiesPanel : MonoBehaviour } var typedItem = FindTypedPropertyItem(item.EquippableItem); - var gearData = GameManager.ItemManager.GetData(item.EquippableItem); - var thermalRange = GetThermalRange(typedItem, gearData); - var thermalCurve = GetThermalPerformanceCurve(typedItem, gearData); + var thermalRange = GetThermalRange(typedItem); + var thermalCurve = GetThermalPerformanceCurve(typedItem); var statusSheet = AddStatSheet(); if (item.EquippableItem.Durability < .01f) statusSheet.AddStat("Durability", () => "Item Destroyed!"); @@ -587,9 +583,8 @@ public class PropertiesPanel : MonoBehaviour Title.text = GetTitle(gear); AddSpacer(); var typedItem = FindTypedPropertyItem(gear); - var gearData = GameManager.ItemManager.GetData(gear); - var thermalRange = GetThermalRange(typedItem, gearData); - var thermalCurve = GetThermalPerformanceCurve(typedItem, gearData); + var thermalRange = GetThermalRange(typedItem); + var thermalCurve = GetThermalPerformanceCurve(typedItem); var statusSheet = AddStatSheet(); statusSheet.AddStat("Durability", () => $"{(int)(gear.Durability / GetMaxDurability(gear) * 100)}%"); var heatCurve = AddCurveField(); diff --git a/docs/aetheria-perfect-machine-map.md b/docs/aetheria-perfect-machine-map.md index 465c5c027..f7e4f682c 100644 --- a/docs/aetheria-perfect-machine-map.md +++ b/docs/aetheria-perfect-machine-map.md @@ -182,8 +182,9 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. The item properties panel also reads typed catalog title names, descriptions, manufacturer, base mass, max durability, thermal bounds, and thermal performance curve keys for basic item presentation without hydrating legacy - DTOs; legacy `ItemData` hydration remains only for behavior reflection and - fallback projection when typed curve rows are incomplete. Inventory selection highlighting now uses typed item + DTOs; legacy `ItemData` hydration remains only for behavior stat reflection. + Incomplete typed thermal curve rows render a neutral fallback curve instead + of hydrating legacy `EquippableItemData`. Inventory selection highlighting now uses typed item shape cells only for UI tint geometry; incomplete typed rows produce no selected-cell mask instead of falling back to legacy `ItemData.Shape`. Inventory cargo cell tint now uses typed hardpoint facets only; incomplete @@ -656,8 +657,8 @@ First Aetheria surfaces to publish: - Done: import typed thermal bounds and move schematic HUD heat-fill ranges onto typed catalog rows. - Done: import typed thermal performance curve keys and move PropertiesPanel - thermal curve presentation onto typed catalog rows; legacy thermal curves - are fallback projection only for incomplete imported rows. + thermal curve presentation onto typed catalog rows; incomplete typed rows + use a neutral fallback curve instead of hydrating legacy thermal DTOs. - Done: remove the loot pickup presentation fallback to legacy `ItemData`; typed category/name rows now decide pickup visuals and scan labels, and missing typed rows render generic unknown gear pickup presentation.