isle-portable/LEGO1/lego
foxtacles 99c871ab16
Nick bricks memories (#21)
* WIP: Add animation completion protocol message for Nick Brick's Memories

Add MSG_ANIM_COMPLETE (15) protocol message broadcast by the host on
natural animation completion. Contains a 64-bit random event ID, the
SI object ID, and per-participant data (charIndex, displayName).

- BroadcastAnimComplete: gathers participants from session slots,
  resolves spectator characters from display actors, generates event ID
- HandleAnimComplete: filters observers (only participants get callback),
  builds JSON with eventId/objectId/participants for frontend
- OnAnimationCompleted callback in PlatformCallbacks, implemented for
  Emscripten (CustomEvent dispatch) and Native (SDL_Log)
- GetDisplayName() getter on RemotePlayer

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix participant ordering in animation completion message

Emit the local player first in the JSON participants array so the
frontend can rely on participants[0] being self when reporting to the
server. Extract participant JSON-building into a lambda to avoid
duplication. Retain null-termination safety for displayName.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Disable workers.dev and preview URLs for relay server

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix path actor assertion failure / freeze on repeated vehicle enter/exit

When the third-person camera is active, LMB triggers both forward movement
and vehicle interaction. This leaves the previous actor with m_worldSpeed > 0
when entering a vehicle, causing it to wander on the path system in non-user-nav
mode. On exit, SetBoundary() overwrites m_boundary without updating m_destEdge,
creating a boundary/edge mismatch. On the next vehicle enter, the stale spline
finishes and SwitchBoundary asserts (debug) or loops infinitely (release).

Stop the previous actor from wandering by zeroing its world speed on enter.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add hold threshold to disambiguate LMB click from hold-to-walk

A 300ms time threshold prevents brief clicks (for interacting with
world objects) from also triggering forward movement in third-person
camera mode.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add missing SDL_timer.h include for SDL_GetTicks

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Remove maxActors setting from multiplayer — NPCs are always disabled

The maxActors room setting added unnecessary complexity for a feature
that should always be off in multiplayer. Remove it from the relay
server protocol, room configuration API, C++ client, and simplify
NPC enforcement to be unconditional.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 23:46:16 +01:00
..
legoomni Nick bricks memories (#21) 2026-03-23 23:46:16 +01:00
sources Merge remote-tracking branch 'isle/master' 2026-03-14 16:48:49 -07:00