luv

Workshop wiki

lobby.lisp

mcclim/lobby.lisp

system luvcraft/lobby/mcclim · 12 definitions · on GitHub

Luvcraft's placement and lifecycle adapter for the shared lobby HUD.

in-package#:mcluv
eval-when
:load-toplevel:execute

The former adapter opened the detailed panel from an :AROUND method on start-luvcraft-lobby. Deleting a DEFMETHOD from source does not retract it from a durable image, so remove that obsolete method explicitly. No current component owns this coordinate: starting the radio is deliberately independent from showing its optional panel.

when
alexandria:when-let
method
find-method#'luvcraft:start-luvcraft-lobby'
:around
nil
remove-method#'luvcraft:start-luvcraft-lobbymethod
defmethodluvcraft:luvcraft-overlay-stage
declare
ignoreoverlay
:hud
defmethodluvcraft:encode-luvcraft-overlay
sessionpasssurface-texture
declare
ignorepass
prepare-direct-widget-overlayoverlaysessionsurface-texture
luv.lobby.mcclim:lobby-hud-screen-state
widget-overlay-frameoverlay
multiple-value-list
luv:canvas-logical-size
luvcraft:luvcraft-session-canvassession
overlay
defmethodluvcraft:refresh-luvcraft-overlay
declare
ignoresession
luv.lobby.mcclim:refresh-lobby-hud
widget-overlay-frameoverlay
overlay
defmethodluvcraft:luvcraft-focus-score
declare
ignoreoverlaysession
nil
defunluvcraft-lobby-hud-overlay
session
find-if
lambda
overlay
luvcraft:luvcraft-session-overlayssession
defun%open-luvcraft-lobby-hud
session
or
let
overlaynil
transferred-pnil
completed-pnil
unwind-protect
progn
let
client
or
luvcraft:luvcraft-session-lobby-clientsession
setfframe
luv.lobby.mcclim:make-embedded-lobby-hudclient
luvcraft:luvcraft-session-canvassession
luvcraft:luvcraft-session-contextsession
luvcraft:luvcraft-session-devicesession
:title"luvcraft lobby"

The Luvcraft overlay is itself the shared compositor.

:install-compositor-pnil
let
setfoverlay
make-instance'luvcraft-lobby-hud-overlay:sessionsession:frameframe:mirrormirror
mirror-compositormirror
overlay
setftransferred-pt
setfcompleted-pt
overlay
unlesscompleted-p
when
andoverlay
memberoverlay
luvcraft:luvcraft-session-overlayssession
:test#'eq
ignore-errors
defun%close-luvcraft-lobby-hud
session
dolist
overlay
copy-list
luvcraft:luvcraft-session-overlayssession
nil
defunopen-luvcraft-lobby-hud
session

Open the detailed panel at a frame boundary, preserving the live radio.

luv:request-canvas-frame
luvcraft:luvcraft-session-canvassession
lambda
timestamp
declare
ignoretimestamp
defunclose-luvcraft-lobby-hud
session

Hide the detailed panel at a frame boundary, preserving its live radio.

luv:request-canvas-frame
luvcraft:luvcraft-session-canvassession
lambda
timestamp
declare
ignoretimestamp
defuntoggle-luvcraft-lobby-hud
session

Toggle the detailed panel atomically at session's next frame boundary.

luv:request-canvas-frame
luvcraft:luvcraft-session-canvassession
lambda
timestamp
declare
ignoretimestamp
t
defmethodluvcraft:stop-luvcraft-lobby:around

Attempt both sides even if one release fails. The HUD is released while the device is live; a later START receives exactly one fresh instrument.

luv:with-release-report
luv:releasing:lobby-hud

A live session may also be stopped interactively, outside the complete application teardown path. Cross its canvas boundary when available; adapter-only lifecycle fixtures deliberately have no native canvas.

luv:releasing:lobby-radio
call-next-method
nil