fix(client): address PR #65 review — POI key, ToldBy parsing, KG dirty flag
- minimap.gd: fix "poi_category" → "category" key mismatch so POI colors and shapes render correctly - journal_panel.gd: parse ToldBy(N) source format, resolve entity names from player_knowledge; move confidence/source labels to UIStrings per D-042 - observer/mod.rs: add Changed<KnowledgeGraph> dirty flag to skip per-tick KG serialization when unchanged - types.rs: fix stale version doc comment (13 → 14) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -72,7 +72,7 @@ pub fn compute_observer_snapshot(
|
||||
Entity,
|
||||
&TilePosition,
|
||||
Option<&Facing>,
|
||||
&KnowledgeGraph,
|
||||
Ref<KnowledgeGraph>,
|
||||
&mut NearbyInteractionBuffer,
|
||||
&mut MonologueBuffer,
|
||||
Option<&Stance>,
|
||||
@@ -120,6 +120,10 @@ pub fn compute_observer_snapshot(
|
||||
return;
|
||||
};
|
||||
|
||||
// D-041 dirty flag: only re-serialize KG dump when observer's graph changed this tick.
|
||||
let kg_changed = observer_kg.is_changed();
|
||||
let observer_kg: &KnowledgeGraph = &observer_kg;
|
||||
|
||||
let facing = facing_opt
|
||||
.map(|f| f.0)
|
||||
.unwrap_or(FacingDirection::default());
|
||||
@@ -290,8 +294,10 @@ pub fn compute_observer_snapshot(
|
||||
.collect();
|
||||
|
||||
// Build player knowledge dump for journal panel (#264, D-041).
|
||||
// Sends full KG state — client-side filtering for display grouping.
|
||||
let player_knowledge = {
|
||||
// Only re-serialize when the observer's KG was mutated this tick (Changed filter).
|
||||
// When unchanged, player_knowledge = None → field omitted from wire (skip_serializing_if).
|
||||
// Client keeps its last value (apply_snapshot only updates when field is present).
|
||||
let player_knowledge = if kg_changed {
|
||||
let kg_entities: Vec<KnownEntityWire> = observer_kg
|
||||
.known_entities_iter()
|
||||
.map(|(sid, ek)| {
|
||||
@@ -363,6 +369,8 @@ pub fn compute_observer_snapshot(
|
||||
facts: kg_facts,
|
||||
})
|
||||
}
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
buffer.snapshot = Some(ObserverSnapshot {
|
||||
|
||||
Reference in New Issue
Block a user