ExPilot.Client (ExPilot v0.1.1)

Copy Markdown View Source

What every client — the terminal's, the browser's, the desktop's — needs from ExPilot, as Cauldron2D.Client.Game asks for it: the title, the keys, the arenas, how a view is drawn, and the sound and music.

A player's own shipshape, in XPilot's notation, is read from $XDG_CONFIG_HOME/expilot/<player>.shipshape when they join an arena; every ship is drawn with its own shape, the default where a player has none.

Drafter.run(Cauldron2D.Drafter.Client, props: %{game: ExPilot.Client})

The arenas come from the prop :source: :local (the default), the arenas this VM runs; {:node, node}, a connected node's, joined across the connection; {:url, url, token}, a server's over its WebSocket through Cauldron2D.Net.Link.World, whose views are the wire's frames — drawn here from the local atlas, their hud as the server wrote it, with no music of their own. A browser's join params team and spectate become the join props.

Summary

Functions

The hud's parts in order, each tagged: :radar (12 rows), then for a pilot :name, :fuel, :score, :lives, :race, :status, a blank, :items (a heading and a row an item), a blank and :scores; for a watcher :watching in place of the pilot rows; and last :messages, the latest three, each a row of elements.

Functions

hud_parts(view)

@spec hud_parts(map()) :: [{atom(), [term()]}]

The hud's parts in order, each tagged: :radar (12 rows), then for a pilot :name, :fuel, :score, :lives, :race, :status, a blank, :items (a heading and a row an item), a blank and :scores; for a watcher :watching in place of the pilot rows; and last :messages, the latest three, each a row of elements.