Skip to content

Ping categories, persistent markers, selection UI, and per-player/faction visibility filters#927

Open
LumiLunaLuma wants to merge 1 commit into
rwmt:devfrom
LumiLunaLuma:ping-marker-expansion
Open

Ping categories, persistent markers, selection UI, and per-player/faction visibility filters#927
LumiLunaLuma wants to merge 1 commit into
rwmt:devfrom
LumiLunaLuma:ping-marker-expansion

Conversation

@LumiLunaLuma
Copy link
Copy Markdown

Summary

Adds typed pings and persistent on-map markers. Players hold to open a radial wheel, pick a category, and release to send a ping or place a marker. Markers can be renamed or deleted by their owner or by the host, and each client can adjust marker opacity locally. A per-client filter hides markers by faction or by player. The host has a per-player marker cap and clear-all controls.

What changed

  • Six ping categories: Default, Attack, Defend, Help, Loot, Rally
  • Radial selection wheel on hold; release sends a ping or places a marker depending on the per-client place mode
  • Draggable menu window with the wheel on the left and a markers list on the right; click a row to jump to that marker
  • On-map click selects a ping or marker and opens an inspect pane
  • Marker rename and delete (owner or host), with per-client opacity
  • Per-client visibility filters by faction and by player, plus a master toggle for spectator markers
  • Host settings dialog with a per-player marker cap (synced via MultiplayerGameComp) and clear-all controls
  • New keybind MpTogglePingMenu with no default key, to avoid colliding with mod-added bindings

Wire and protocol

  • MpVersion.Protocol bumped from 55 to 63
  • PingLocationPacket carries a PingCategory byte and a UTF-8 label of up to 64 chars
  • New paired client/server packets: ClearMarkers, DeleteMarker, RenameMarker

Persistence

  • Markers are scribed on MultiplayerGameComp, so they're included in every save and in replay sections
  • ConvertToSp drops MP-only state (including markers); the pre-conversion replay preserves it for re-hosting
  • New MpSettings fields cover the wheel toggle, hold delay, place mode, last-used category memory, three window rects, the spectator-marker toggle, hidden factions and players, and per-marker opacity and visibility overrides. New scribe entries use an mp* XML prefix.

…tion visibility filters

Adds typed pings and persistent on-map markers.

Players hold to open a radial wheel, pick a category, and release
to send a ping or place a marker. Six categories: Default, Attack,
Defend, Help, Loot, Rally.

Markers can be renamed or deleted by their owner or by the host.
Each client can adjust marker opacity locally.

A per-client filter hides markers by faction or by player, with a
master toggle for spectator markers. The host has a settings
dialog with a per-player marker cap and clear-all controls.

Wire protocol bumps from 55 to 63. PingLocationPacket now carries
a PingCategory byte and a UTF-8 label of up to 64 chars. New
paired client/server packets: ClearMarkers, DeleteMarker,
RenameMarker.

Markers are scribed on MultiplayerGameComp, so they're included
in every save and in replay sections. ConvertToSp drops MP-only
state (including markers) on the way out; the pre-conversion
replay preserves it for re-hosting.

Per-client preferences (wheel toggle, hold delay, place mode,
last-used category memory, window rects, hidden factions and
players, spectator-marker toggle, and per-marker opacity and
visibility overrides) live in MpSettings under an mp* XML prefix.

New keybind MpTogglePingMenu with no default key, to avoid
colliding with mod-added bindings.
@notfood notfood added enhancement New feature or request. 1.6 Fixes or bugs relating to 1.6 (Not Odyssey). labels May 19, 2026
@notfood notfood moved this to In review in 1.6 and Odyssey May 19, 2026
Copy link
Copy Markdown
Member

@notfood notfood left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a cursory glance, it's looking good.

Instead of hardcoding the categories, it'd be nice to have it available in XML to allow more freedom for other mods to add stuff. Shouldn't be too complicated to make it dynamic. Just have PingCategoryExtensions read some <MultiplayerPingDef>.

Is the protocol leap necessary? Could be just +1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.6 Fixes or bugs relating to 1.6 (Not Odyssey). enhancement New feature or request.

Projects

Status: In review

Development

Successfully merging this pull request may close these issues.

2 participants