Add native Durak, poker, blackjack, roulette, Buckshot and billiards scenes with animation assets and regression tests. Improve arrival, city, hall, profiles, shops, audio and exit handling; remove the portable C game core and refresh shipping executables.
2.9 KiB
Native Card Exit and Exterior Lighting
Runtime implementation is MASM x86 only. Python is used solely to inspect test framebuffers. Existing packaging launchers remain C#, not assembly.
Leaving a Table
Poker and blackjack now expose a permanent В холл button in the top right.
Escape also requests departure, before the engine's generic pause handler.
Idle and settled tables return immediately. An unfinished hand instead opens a
confirmation with Продолжить selected by default. Escape/N cancels; arrows or
Tab select an action, Enter/Space applies it, Y leaves directly. Both buttons
can also be clicked.
While confirmation is open, the card handlers do not advance dealing, AI, dealer draws, chip animation, money or RNG. Cancelling preserves the hand. Confirmed departure settles a player fold in poker or a loss in blackjack, retaining the already deducted stake. Existing settlement routines save that result and guard against paying it twice. Re-entering starts at an idle table. No graphical table launches the legacy console.
Exterior Lighting
city_lighting.inc builds a static 512x256 map at eight samples per world unit,
using 512 KiB. Ground lamps are taken from the actual registered lamp props.
Warm window spill is limited to lit facade materials and the casino entrance.
Dark windows do not cast window light. The falloff reaches zero smoothly at
the edge; the map stays fixed in world coordinates as the camera moves.
The exterior floor shader tints the sampled pavement/asphalt rather than drawing screen-space circles. Bright warm window panes and lantern glass retain their emissive brightness instead of receiving the full distance darkness. Indoor floor shading is unchanged. The sky, cigarette smoke and gameplay RNG are independent of the map. This is basic baked ground illumination, not ray-traced shadows, moving headlights or physically accurate reflections.
Verification
tools/tests/test_casino_actions.ps1 -SkipPreview compiles and executes the
production handlers with a headless framebuffer and test-only profile fixtures.
card_exit_test.inc checks every active poker and blackjack state, cancellation,
mouse/header controls, the old paused state, repeat departure and re-entry.
city_lighting_test.inc checks map bounds, emitted window colors, disabled
lighting, unchanged money/RNG and matched lights-on/lights-off snapshots.
tools/tests/check_city_lighting.py checks native images, modal geometry and
localized warm illumination, and reports headless render time with lighting
enabled/disabled. These timings are not a full interactive FPS benchmark.
test_city_light_probe.ps1 also links a tiny assembly probe directly against the
shipping object and checks signed color differences (green/blue surfaces must
not become warm emitters). check_card_exit_build.py compares decoded card
handlers and engine dispatch in the test and shipping objects, accounting for
symbol relocations and internal call addresses.