luvcraft/clim/tape.lisp
The field.
The caret, a bar after the draft.
--------------------------------------------------------------------- The overlay: the panel in the middle of the screen, as the legend is.
How much larger than its own pixels the panel is shown: a short question in the middle of the view wants to be read from where the player stands.
Place the panel, scaled, in the middle of the viewport.
The question is asked by the tape, not by the crosshair: nothing targets the panel itself, and the camera does no more than lean in a little.
Take the draft as an answer: start the download and put the panel away, or say what is wrong with it and keep asking.
--------------------------------------------------------------------- Opening.
Create, attach, and focus the panel asking which video the tape at X,Y,Z should fetch.
((pane lobby-hud-pane) region)An explicitly owned AVFrame.
Subtraction or unary negation.
Addition over compatible quantities.
Division of two represented quantities.
((medium luv-gpu-medium) string &key text-style (start 0) end)Logical disjunction of tests and raw truth values.
(frame)A direct GPU target for an ordered LUV-GPU-MEDIUM drawing stream. An embedded mirror retains an immutable prepared CPU revision for the game's final pass; a standalone mirror renders into its native canvas drawable.
How much larger than its own pixels the panel is shown: a short question in the middle of the view wants to be read from where the player stands.
(overlay)(overlay)(context)Return CONTEXT's configured drawable extent as (WIDTH HEIGHT), or NIL.
The minimum of compatible quantities.
Multiplication and scalar scaling.
A direct McCLIM surface mounted in the presentation HUD.
(overlay)Return where OVERLAY draws: :SCENE, :WORLD-PANEL, :VIEWMODEL, :HUD, or :NONE. Scene overlays inhabit world depth; viewmodels are first-person geometry above the world but below held items and the crosshair. World panels retain world projection and depth while drawing analytic application graphics at native…
(overlay session pass surface-texture)Encode OVERLAY into SESSION's open scene PASS for SURFACE-TEXTURE.
(focus session)Return a non-negative targeting score when FOCUS can be entered by TAB.
(overlay session)(session)(session overlay &key (release-p t))Detach OVERLAY at a frame boundary and optionally release it there. The no-release path is intentionally preserved for FUSE-LUVCRAFT-OVERLAY: that path may run inside a frame whose command stream still borrows OVERLAY.
(overlay session)Take the draft as an answer: start the download and put the panel away, or say what is wrong with it and keep asking.
(text)Extract the eleven-character video id from TEXT, which may be a bare code or any of the usual YouTube URLs; NIL when there is none.
(session x y z video-id)(focus session canvas event)Handle EVENT while FOCUS owns SESSION's modal player interaction.
A native destination with a lifetime and frame clock.
Logical conjunction of tests and raw truth values.
(canvas)The text on the system clipboard, or NIL when there is none or the window system has no clipboard to ask.
Test whether one compatible scalar is less than another.
(session x y z)Show SESSION the question a tape at X,Y,Z asks -- which YouTube code? -- and return the focus that is asking it, or NIL when no presentation system can. LUVCRAFT/CLIM supplies the panel; the answer comes back through BEGIN-TAPE-DOWNLOAD.
A McCLIM frame manager constrained by luv's current native host.
(session overlay)Attach OVERLAY at SESSION's next native frame boundary and return it. ADD consumes a newly offered OVERLAY on both success and terminal rejection. Once SESSION begins stopping, the rejected overlay is released exactly once before APPLICATION-ATTACHMENT-CLOSED is signalled.
The tape's question: a small panel that asks for a YouTube code.
Focusing a tape (luvcraft/tape.lisp) opens this in the middle of the view, the way the legend opens: a McCLIM frame drawn into a GPU mirror and composited as a HUD overlay. Since the focus offers no command table, every key the window layer does not claim comes here: letters and digits go into the draft, RET answers, Esc and Tab put the question away unanswered.