Simplify T5 and T6 HUD overlays and service displays
This commit is contained in:
+49
-18
@@ -35,8 +35,9 @@ before copying the renamed scripts.
|
||||
- **Dynamic numbers use `SetValue`.** Repeatedly generating unique strings
|
||||
risks exhausting the text config-string pool; identical strings can be reused
|
||||
by the engine's [string lookup](https://github.com/MisaDev4/bo1-zombies-decompiled/blob/102f6992be332610aff587e681e3180b15f395bb/src/game_mp/g_utils_mp.cpp#L46).
|
||||
Composite HP uses numeric elements around a static slash. Help updates two
|
||||
multiline columns only on page changes, and record rows skip unchanged text.
|
||||
Composite HP uses numeric elements around a static slash and `HP` suffix;
|
||||
the group appears only while injured. Help reuses up to nine explicitly
|
||||
positioned command/description pairs, and record rows skip unchanged text.
|
||||
- **`NewClientHudElem(player)`, not `NewHudElem()`.** `NewHudElem` is
|
||||
globally owned; in co-op every player's HUD draws on top of every other
|
||||
player's. Fall back to `NewHudElem` only if elements don't render at all
|
||||
@@ -58,21 +59,39 @@ before copying the renamed scripts.
|
||||
Many BO1 maps pre-set `round_number = 1` at init, so the round watcher
|
||||
fires on transitions only and the timer row seeds on first spawn as a
|
||||
fallback.
|
||||
- **Connection-time HUD creation must not seed clocks.** The upper-right core
|
||||
is available to waiting spectators with placeholders. Timer updates retain
|
||||
- **Connection-time HUD creation must not seed clocks.** The unboxed core is
|
||||
available to waiting spectators with placeholders: timers upper left,
|
||||
branding top center and zombies/health bottom center. Timer updates retain
|
||||
their existing spawn/round lifecycle, independently of element creation.
|
||||
- **One service window per player.** Common owns fixed geometry, ordered
|
||||
four-command help pages, record display state and cleanup. Help pauses record
|
||||
page time; `.leaders` during help replaces the pending replay from page one.
|
||||
Keep both services independent of the HUD module. The core never moves or
|
||||
resizes when a service opens, and the AFK indicator uses its reserved footer.
|
||||
- **Visibility is separate from updates.** HUD owns the exact, case-insensitive
|
||||
`.hud` chat command and its help entry. Common's core wrappers register each
|
||||
element and preserve its intended alpha behind a per-player visibility mask;
|
||||
health and AFK changes use `set_core_alpha()`. Hidden data/timers keep updating
|
||||
until game over freezes them. Help, records and stock elements remain separate.
|
||||
Visibility defaults on, survives death/respawn during the connection/map, and
|
||||
resets on reconnect or map restart. AFK protection is unaffected.
|
||||
- **One service view per player.** Common owns the unboxed upper-right service
|
||||
area, ordered help rows, record display state and cleanup. Help shows all
|
||||
nine installed commands; extra registrations use nine rows per page. Help
|
||||
pauses record page time; `.leaders` during help replaces the pending replay
|
||||
from page one. Keep both services independent of the HUD module. Services
|
||||
never reposition the core, and AFK remains centered above the zombie count.
|
||||
- **Bound HUD element counts, including hidden elements.** Core + AFK use
|
||||
15 + 1 archived elements; the service uses 19 nonarchived elements regardless
|
||||
of command/page count. Help reuses two multiline columns and one muted column
|
||||
backdrop. Hiding an element does not free its slot. The
|
||||
11 + 1 archived elements. Common allocates only the active service view:
|
||||
19 nonarchived elements for nine-command help (20 with a multi-page counter),
|
||||
or four for records (five with a multi-page counter), and none while idle.
|
||||
Switching help/record views destroys the previous view first; pages reuse
|
||||
its elements. Keep the controller and pending requests separate from element
|
||||
lifetime so paused records resume normally. Both engines use explicit help
|
||||
rows; BO1 can concatenate newline-separated HUD text. Hiding an element does
|
||||
not free its slot. The previous 24-element persistent service allocation was
|
||||
consistent with the reported core corruption after records first appeared.
|
||||
The exact live T5 SP capacity remains unverified. The
|
||||
[BO1 HUD update](https://github.com/MisaDev4/bo1-zombies-decompiled/blob/102f6992be332610aff587e681e3180b15f395bb/src/game/g_hudelem.cpp#L2596)
|
||||
shows 31 slots per bucket; this is not proof of current Plutonium stock HUD
|
||||
usage, which still needs live validation.
|
||||
comes from an MP-based reconstruction and is not proof of T5 SP limits or
|
||||
current Plutonium stock usage. Validate automatic records, help, view switches
|
||||
and dismissal alongside stock notifications and other installed HUD mods;
|
||||
the core must remain intact throughout and after every service closes.
|
||||
- **Game-over trigger is level-scope, raced across three candidate
|
||||
notifies** (`end_game` / `game_ended` / `intermission`) since BO1 maps
|
||||
are inconsistent. Per-player triggers do not work — `self waittill("death")`
|
||||
@@ -80,9 +99,21 @@ before copying the renamed scripts.
|
||||
polling `self.health` misses the zero-crossing (health is rewritten during
|
||||
the game-over sequence).
|
||||
|
||||
HUD `1.2.0`, leaderboard `1.1.0` and AFK `1.0.1` require matching common `1.2.0+`.
|
||||
Install the changed scripts together and restart the map. There is no new
|
||||
native-plugin/backend dependency or full server-process restart requirement.
|
||||
HUD `1.4.0` and AFK `1.2.0` require matching common `1.4.0+`. Update all three
|
||||
where installed and restart the map. Leaderboard `1.1.0` remains compatible.
|
||||
The full help order is `.help`, `.hud`, `.afk`, `.back`, `.join`, `.leaders`,
|
||||
`.b`, `.d`, `.w`: one page of nine commands, with full `<amount|all>` bank
|
||||
syntax. `.hud` is absent when HUD is omitted. Records use right-aligned
|
||||
`Map record · Round N` and up to three bounded holder lines, with no footer
|
||||
and no single-page counter. Both views retain 12-second page timing.
|
||||
Fullscreen X/Y overlay anchors use direct normalized `640 × 480` coordinates.
|
||||
Dynamic health fills use `make_overlay_width()` like their tracks. Apply
|
||||
`int()` after `max()` in that helper: native `max()` returns a float, but
|
||||
`SetShader` requires an integer width. Legacy panel helpers and their `0.75`
|
||||
horizontal conversion remain available for existing consumers. Font scale is
|
||||
at least `1.0`. Numeric HP appears only while injured; the core and services
|
||||
have no panel backgrounds. There is no new Plutonium/native-plugin/backend
|
||||
dependency or full server-process restart requirement.
|
||||
Run the [shared HUD checks](../../README.md#hud-validation); portable fixtures
|
||||
do not replace T5 live loading, layout and lifecycle validation.
|
||||
|
||||
@@ -91,7 +122,7 @@ do not replace T5 live loading, layout and lifecycle validation.
|
||||
| File | Role | Fires notifies | Reads notifies |
|
||||
|---|---|---|---|
|
||||
| `tws_t5_common` | Shared config, HUD helpers, paginated `.help`, service window, spawn-handler registry, single connect listener + dispatcher | — | `say`, game-end notifications |
|
||||
| `tws_t5_hud` | Upper-right core: branding, timer row, zombie count, HP and health bar | `hud_round_changed`, `hud_match_started`, `hud_game_over` | (internal) |
|
||||
| `tws_t5_hud` | Unboxed core overlays and private `.hud` visibility toggle | `hud_round_changed`, `hud_match_started`, `hud_game_over` | `say`, internal notifications |
|
||||
| `tws_t5_afk` | `.afk` / `.back` chat toggle, owns its [AFK] indicator | — | — |
|
||||
| `tws_t5_join` | `.join` for spectators who have not played on this connection | — | `say`, `end_game`, `game_ended`, `intermission` |
|
||||
| `tws_t5_lock` | Lobby `g_password` lock at milestone round (`tws_lock_round`, default 20) | — | `hud_round_changed`, `hud_game_over` |
|
||||
|
||||
Reference in New Issue
Block a user