mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 10:24:02 +00:00
feat(ui): render the Cockpit instruments, route and vision selector from a store
The Cockpit controller no longer writes the HUD's instruments, the flight plan card, the visor's destination arrow or the vision selector. It keeps them as plain state, starting from cockpitInstrumentState.js, and publishes copies to the gev-cockpit store: the instruments on every HUD update, the route only when it changed, the vision selector when the mode changes. CockpitView renders the callsign, aircraft meta and emergency mark, speed and altitude rims and ticks, compass tape, clock, position, HUD layer, destination arrow and vision selector; a new CockpitRoute component renders the flight plan card inside the briefing card. The odometer readouts become CockpitRollingValue components. Their throttle and digit roll move unchanged from setCockpitRollingValue into cockpitRollingValue.js: every accepted reading restamps the throttle, a change inside it is dropped, and each accepted change draws fresh glyphs so the roll animation restarts. A rim tick with no reading still hides where it stood, and a hidden arrow keeps its last angle and label. In a dev build the HUD's Vue patch costs about 0.5 ms per update (1.4 ms at 4x CPU throttle), against 0.4 ms (2.1 ms) for the DOM writes it replaces, at about 10 updates a second.
This commit is contained in:
1 parent
ffe14e50f5
commit
a2bca0fb22
29 files changed
+1089
-404
No files matched your search
+12
-6
@@ -130,12 +130,18 @@ They contain no application state.
|
||||
Cockpit (in progress: `CockpitBriefing` renders the briefing card's
|
||||
pages, cycle toggle, regional news and local conditions, and
|
||||
`CockpitContext` the Contact card's scope, navigation, counts, nearest
|
||||
contact and weather toggle, from the `gev-cockpit` store that the Cockpit
|
||||
controller publishes to, starting from `cockpitBriefPages.js` and
|
||||
`cockpitContextState.js`, which both read; the controls keep the
|
||||
controller's listeners, and the cards' visibility, collapse and layout
|
||||
stay with the controller. The signal rows, the route card, the
|
||||
instruments and the radio controls follow; the signal rows become a
|
||||
contact and weather toggle, `CockpitView` the instruments, destination
|
||||
arrow and vision selector, and `CockpitRoute` the flight plan card, from
|
||||
the `gev-cockpit` store that the Cockpit controller publishes to,
|
||||
starting from `cockpitBriefPages.js`, `cockpitContextState.js` and
|
||||
`cockpitInstrumentState.js`, which both read; the odometer readouts
|
||||
(`CockpitRollingValue`) keep their throttle and roll in
|
||||
`cockpitRollingValue.js`. The instruments publish on every HUD update
|
||||
(about 10 Hz); in a dev build their Vue patch costs about 0.5 ms, close
|
||||
to the DOM writes it replaced. The controls keep the controller's
|
||||
listeners, and the cards' visibility, collapse and layout stay with the
|
||||
controller. The signal rows and the radio controls follow; the signal
|
||||
rows become a
|
||||
component that keeps their focus-safe reorder, since a keyed Vue list
|
||||
would move the focused row and drop focus several times a second).
|
||||
Layers that write into the right rail directly gain a slot instead.
|
||||
|
||||
Reference in new issue
Block a user