From 91f494b3ae5db5df68e7fde496e74e7daf5546d5 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 13 Jun 2026 19:07:22 +0100 Subject: [PATCH] Route input settings through state commits --- .voidbot/state/aetheria.cc | Bin 45963 -> 46286 bytes Aetheria.State/README.md | 7 ++++--- Assets/Scripts/Gameplay/ActionGameManager.cs | 2 +- .../UI/InputScreen/InputDisplayLayout.cs | 7 ++++--- Assets/Scripts/UI/Menu/InventoryPanel.cs | 2 +- docs/aetheria-perfect-machine-map.md | 9 ++++++++- 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/.voidbot/state/aetheria.cc b/.voidbot/state/aetheria.cc index f39ef4129cf1f299dfa9fc709d582f488debbb8d..aa6d960111bb86c5a63faef099926dd56f80f2c2 100644 GIT binary patch delta 1276 zcmZ8hOKTKC5N0d5W@8b7A#Se4E&3z|2drx$A z2FH7kjXf;vwDYgl*>A;rjrx(Gv#ZP3W!q${)^pU?)~{(V&e??nYYy7}+e0GFOi70d zQNTDC5f>F;A_5i~E=6gaDZq#u4MI*prV&gPL9+zy%+vNMNEJ`G;WY%NAwiLWMq{Xn zhOo*+1$FQ;j2TZB|6O$t4T}**Sq(3;y39<6%7ozwmZXU5Fu{~?^Czg6!bH|E>IaYT zEZ1qw>iHu`GQ$jN7_sxyyRK_sG*oMXOK{{(^vFF4o+JdG{!7hoWth>M0VD#7vypu8 z73zv=w1Ih0Cd7s)Dw$QP_T!!H_UAO53tkx%uK(iXMPxMxkvrWQ$~d$uXvi#%2nuRc zP8cBU+}ICKcC2M(gUYhmom0SKg)FKAPI7H@@G%#BD53v`%xS-P_k3nDg>Y@CV@cH9 z3tjai2&Hj`c(l1ORi-ckQ%~tL%-OUo;zApm39<}bEb>;zGGsCNNjR$*r>HbY)igo} zZvhN7j%O_qF+|>O<7oL=vDoJD{1YsDY=wtQi+1bMI z&?T0Vx1m%~{@(jc5D1e?mL%m`@mQ(rk_fJSaPNh}@?y6=eRBVn74fitH|{x<4m-OW zCi@7j@|bAH9)Zho-|`$gi<+y@v3d=HcUa>QiV&S9cHzOyrb6MW9SC;V_p^I%l}sRZi>YO%LaKXSPUA2$_SbCxwxuJ|(>XS0SVcdzd!L_apZ6q6 zO%m@jXKksGa69~H`@)Uqn>K80y|zEv_B6iI<>|G5+ji4I`rJA^y~i8JXq|oZI%(C9 Yb^AKJnOau!2W{c&n=cz$#lG&b{}tla{r~^~ delta 1084 zcmZuwPi#y<7|-sCC=L!q588YQQipm{N=h%PiKGWfqd4?7``)+v#=bW*X69|}#U8kb zM8c2=4Tlo62=+>xT!~}P4&p}QB60A|yeg6&b~E3+nQwmoz7Jok*S=I=KCHT5_xoxG z$L4NSw!8P$tD!tJ8cJEaSeE72O&bQQi!;694f|a8%~`>1XV`$u63BQPVJ2f8)U#+U z7fsr)pU2oj$_&&I1tgeDiwRf>rwd_uj{jenfTYl@o*}5v2+W^Otgxxn^crZ)85ag7 z(H+0Hy~_pI6v1{B^_?m*JH_G@51d175R7G({uLJ(J&H5N^OYa#J`9||imU?+0w;Rd z7%l}UEja570_o3~jOxEhra5jihN_>`;Y6$`3O=d>R)FW}0HlZ7obLR?q_CY1%jYaw>k zDy+X+n*cj#u!{9S9Bi#;1uD&jrTa_~C@-^?1-bkuIi=?|rQK#qDIwaLvuHL%p^Ql) z7J+`Mhine_w2VzS+kHNK^L zat8+f&5mL=jV>=zKvu>a>)+K|z6+J755en3tUIm#&cq)60Q>cj-Q!o2wG`KE2+ z(OA_odPdSGK58D^&EDsQEtSeqHyQQ2+WjH-dUS|pb~pXDZhUB2)7*BW4^H$JA8hIK zd+t+hho5Qptv2AkKY8odmBa3PZKwPA)cC4)q#XWusauv|_ loadout.Name == blueprint.Name); LoadoutBlueprints.Add(blueprint); diff --git a/Assets/Scripts/UI/InputScreen/InputDisplayLayout.cs b/Assets/Scripts/UI/InputScreen/InputDisplayLayout.cs index cccaceb90..8e7f69faa 100644 --- a/Assets/Scripts/UI/InputScreen/InputDisplayLayout.cs +++ b/Assets/Scripts/UI/InputScreen/InputDisplayLayout.cs @@ -494,12 +494,12 @@ public class InputDisplayLayout : MonoBehaviour } keyPress.Disable(); - SaveLayout(); + QueueRuntimeInputSettingsCommit(); } - private void SaveLayout() + private void QueueRuntimeInputSettingsCommit() { - Debug.LogWarning("Keyboard layout persistence belongs to the Verse state spine. Layout edits are runtime-only until Aetheria.State is available as a Unity runtime package."); + ActionGameManager.QueueRuntimePlayerSettingsCommit(); } private void OnEnable() @@ -558,6 +558,7 @@ public class InputDisplayLayout : MonoBehaviour { ActionGameManager.RuntimePlayerSettings.InputSettings.ActionBarInputs.Remove(buttonMapping.Button.InputSystemPath); } + QueueRuntimeInputSettingsCommit(); AssignColor(buttonMapping); }); diff --git a/Assets/Scripts/UI/Menu/InventoryPanel.cs b/Assets/Scripts/UI/Menu/InventoryPanel.cs index e94d2e03b..a974eca10 100644 --- a/Assets/Scripts/UI/Menu/InventoryPanel.cs +++ b/Assets/Scripts/UI/Menu/InventoryPanel.cs @@ -170,7 +170,7 @@ public class InventoryPanel : MonoBehaviour, IPointerClickHandler ContextMenu.AddOption("Save Loadout", () => { - GameManager.SaveLoadout(EntitySerializer.CaptureBlueprint(_displayedEntity)); + GameManager.QueueRuntimeLoadoutTemplateCommit(EntitySerializer.CaptureBlueprint(_displayedEntity)); }); if (GameManager.LoadoutBlueprints.Any()) diff --git a/docs/aetheria-perfect-machine-map.md b/docs/aetheria-perfect-machine-map.md index 0cfa20b5d..ba56201f6 100644 --- a/docs/aetheria-perfect-machine-map.md +++ b/docs/aetheria-perfect-machine-map.md @@ -69,7 +69,8 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. name, tutorial flag, story-file hash cursors, gameplay formatting, graphics preferences, input binding overrides, and action-bar inputs. Unity's menu and input screens mutate `RuntimePlayerSettings` in memory and queue typed Verse - commits; the in-memory projection is not portable state authority. + commits through the shared player-settings commit primitive; the in-memory + projection is not portable state authority. - `Aetheria.State` now exposes typed node put/get ports for run state, zone state, and entity snapshots. The state smoke writes a run referencing a zone, a zone referencing an entity snapshot, and an entity snapshot carrying @@ -640,6 +641,9 @@ First Aetheria surfaces to publish: `RuntimePlayerSettings`; `AetheriaPlayerSettings` remains the typed Verse state document owner, while Unity only keeps a session projection and queues typed player-settings commits. + - Done: route input-screen binding/action-bar edits through the typed + player-settings commit primitive now that the Unity state package is live; + the stale runtime-only keyboard layout warning is gone. - Remaining: delete or quarantine old cache abstractions that no longer protect an invariant once catalog migration has a typed reader. @@ -688,6 +692,9 @@ First Aetheria surfaces to publish: `EntitySerializer.Unpack` hits. - Unity runtime settings projection is now `RuntimePlayerSettings`; live Unity source has no standalone `PlayerSettings` class/property/method symbols. +- Input binding and action-bar edits now queue the same typed player-settings + commit path as menu settings changes; the old `SaveLayout` runtime-only + warning is gone. - `Aetheria.State.Smoke` proves the provider-owned Eve command bridge drains `gamecult.eve.command.v1` envelopes, accepts advertised refresh commands, rejects unknown commands, persists `AetheriaEveCommandDrainStatus`, and exposes