Repository navigation
Dock terminal lobby - #522
Merged
Merged
Conversation
Resizable bezel pieces at 1x (9-slice frame, deck with hazard-post ends, keycaps in idle/hover/pressed/disabled, lamps, grille, button tray), bezel.json describing their insets and positions, and lobby_terminal.css classes that assemble them at an integer scale. Ready lamps are cropped from icons/hud/lobby/collapse_expand.dmi.
A BROWSER control over the map pane renders the LobbyTerminal tgui interface for new players. The terminal datum declares the section procs for crews, shipyard and housing, shared code-lockout and join-lock helpers, and the data contract in types.ts. term.tsx holds the text-grid primitives the tabs draw with. The classic HUD lobby stays underneath as the fallback.
Lists player outposts with their admission mode and residents, moves the player in through join_outpost (which now takes an entered code instead of prompting), rate-limits wrong outpost codes through the shared lobby code limiter, and lets players ask INVITE outposts to take them in. The wiki pages for new players, the shipyard and ship parts describe the terminal.
One line per crew with the record beside it: memo, berths with SIGN ON, CODE and NOTE + APPLY for locked crews, PING CREW when every berth is taken. SIGN ON is a direct join with no popups. It checks the popcap queue and stops (the old path printed 'Server is full' and joined anyway), job bans and playtime off the UI tick, the cryo rejoin wait, admin-disabled late join and the shared join lock. Wrong codes go through the shared lockout, and a new code on the ship resets it.
The shipyard section sends the hull catalog after the player opens it, sends each hull's preview images on demand, and caches parts and ownership off the UI tick. COMMISSION rebuilds the bill on the server, spends it once and records every unlock, then launches with the crew answer the terminal collected. spend_parts now refunds the classes it already took when a later class fails.
The batched spritesheet failed for the whole round when the first player reached the lobby before the asset subsystem had run. The five buttons now go out as PNGs cut from bottom_buttons.dmi in the terminal's own asset.
SHIPYARD home with new ship, requisition and saved ship cards drawn from their floor plans; the hull registry and record; FIT with the live composited yard preview on a viewscreen and the slot being edited outlined; and the single BILL with commission. Leaving a crew shows a LEAVES line and turns the key into CONFIRM. Narrow windows get one panel at a time. Hull.jobs carries crew for hulls without finishes.
Share one text field between CREWS and HOUSING, route the old join menu's outpost and ship password popups through the lobby code limiter, clear spawning_ship when a new hull can't seat its buyer, keep a refused commission's fit, return SHIPYARD to its front page when pressed again, limit the yard's DB refresh and the client metrics log, and tidy the bezel CSS comments.
…t open, give job names full width
…ature/lobby-terminal
The CHARACTER key and a fourth tab open an empty personnel file. Adds the char_ action dispatch, the character section procs and vars, the data contract in types.ts, Swatch/Cycler/Panel grid primitives, and stub files for the backend, preview and editors.
…window sync Adds the char_* adapter over /datum/preferences: preference writes through update_preference, quirks, roles (one HIGH), loadout picks, colours, names and skins through tg's middleware, a terminal species-change confirm, the native colour dialog for body colours, debounced saving, two-way sync with tg's character window, and a flag-gated is_accessible override so terminal edits work while tg's window was last on game settings. Unit test covers the crafted-act abuse cases.
FILES list with the preview's turn keys and dress label, the PERSONNEL FILE cells, crumbs and section routing. BODY rows follow the server's prefs keys, flow into two columns or pages on short screens, and long lists open a paged picker. Colour entry has hex, H/S/V bars, recent colours and the native picker.
… server cached preview facings, drop the preview benchmark
…ched kit colours, give the test's mock client a veteran check
… failed open While the world initialises, send_assets() can sleep for seconds. Any message that reached the page in that gap rendered tgui before its first update, crashed the Window layout on the empty config and closed the terminal mid-open, so it never showed. The update is now queued first, open() notices a close during the sleep, and a failed open is retried a few times.
…ck terminal Every key, row, field and bezel button takes the focus on hover or with the arrow keys; Enter or Space presses it, Escape or Backspace goes back, Tab and the number keys change tabs. The terminal takes keyboard focus when it shows and hands it back to the map when it hides. The page plays short terminal clicks on each move and press. The crew record lists who is aboard with the captain first. The bill's totals are a parts table that can't overlap, and lists, names and descriptions on every screen are cut, wrapped or paged to their boxes.
The page can report itself visible while open() is still sending assets. Without the UI set, on_window_visible() took that for a stale page and hid the terminal over a working lobby.
…text on the CHARACTER screens too Cyclers step with Left and Right, swatches and picker entries take the focus, pickers and the colour box keep the focus inside them and close on Escape or Backspace.
Character screen in the dock terminal lobby
Ship saves and the lobby both added refund_parts(). Keep the one that reports success, which ship saves relies on, with the lobby's refund log line and the admin alert when a refund fails.
…ature/lobby-terminal
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dock terminal lobby
The lobby is now a full-screen dock terminal drawn over the map pane, replacing the stock lobby buttons and the separate Join Game and ship purchase windows. Everything a player does before spawning happens on one screen.
Bezel
CREWS
SHIPYARD
HOUSING
Keyboard, highlight and sound
Fixes along the way
The classic HUD lobby stays as a fallback and only appears if the terminal fails to load within 30 seconds.
Wiki pages updated: new player guide, ship upgrades, ship parts.
Screens
In a real client, before the round:
Housing:
Keyboard highlight, crew list and bill table in a real client: