Integrate per-save identity and interaction UI

This commit is contained in:
Alexander Sellite 2026-09-01 17:30:50 -04:00
parent ac82a28f3b
commit 4fda6e97f6
58 changed files with 3471 additions and 461 deletions

View file

@ -115,7 +115,10 @@ func send_local_message(
send_rejected.emit("Chat is unavailable.")
return false
var clean := NetworkChatProtocol.sanitize_body(body)
if clean.is_empty():
if not NetworkChatProtocol.valid_user_body(clean):
if NetworkChatProtocol.is_roleplay_body(clean):
send_rejected.emit("Usage: /me [action].")
return false
send_rejected.emit("Message is empty or too long.")
return false
var request := {
@ -412,6 +415,7 @@ func _apply_message(
return
var kind := int(data["kind"])
var valid_signature := false
var canonical_sender_name: String = ""
if kind == NetworkChatProtocol.Kind.SYSTEM:
valid_signature = _session.verify_host_action(
"chat_system",
@ -424,6 +428,7 @@ func _apply_message(
if record == null:
_queue_pending_peer_message(sender_id, data, emit_live_signals)
return
canonical_sender_name = record.display_name.left(24)
valid_signature = (
record.identity_fingerprint == str(data["sender_fingerprint"])
and _session.verify_peer_action(
@ -437,6 +442,10 @@ func _apply_message(
return
_seen_messages[data["message_id"]] = true
var stored_message := data.duplicate(true)
if kind == NetworkChatProtocol.Kind.PLAYER:
# The authenticated peer registry, not sender-controlled message data,
# owns the name shown beside chat and roleplay actions.
stored_message["sender_display_name"] = canonical_sender_name
# Suppression is immutable for this received copy. Relationship changes
# later must never resurrect text that was hidden on arrival.
stored_message["locally_suppressed"] = (
@ -548,7 +557,9 @@ func _on_peer_removed(peer_id: int) -> void:
_pending_peer_messages.erase(peer_id)
if not _session.is_host():
return
var display_name: String = _peer_names.get(peer_id, "Player")
var display_name: String = _peer_names.get(
peer_id, NetworkProfilePreferences.DEFAULT_DISPLAY_NAME
)
_peer_names.erase(peer_id)
_broadcast(_make_message(
NetworkChatProtocol.Kind.SYSTEM, 0, "", "%s left." % display_name