Skip to content

Commit cf2cd5e

Browse files
Add EntityRenamed engine MessageType.
Subscribe NameIcon to the EntityRenamed message so it will update the cached name if it changes.
1 parent 08d6a06 commit cf2cd5e

3 files changed

Lines changed: 27 additions & 1 deletion

File tree

Pulsar4X/GameEngine/Engine/Messaging/MessageTypes.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ public enum MessageTypes
88
EntityRevealed,
99
DBAdded,
1010
DBRemoved,
11-
StarSystemRevealed
11+
StarSystemRevealed,
12+
EntityRenamed
1213
}

Pulsar4X/GameEngine/Names/NameDB.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Diagnostics;
44
using Pulsar4X.Engine;
55
using Pulsar4X.Datablobs;
6+
using Pulsar4X.Messaging;
67
using Pulsar4X.Sensors;
78

89
namespace Pulsar4X.Names
@@ -79,6 +80,12 @@ public string GetName(Entity requestingFaction)
7980
public void SetName(int requestingFaction, string specifiedName)
8081
{
8182
_names[requestingFaction] = specifiedName;
83+
84+
MessagePublisher.Instance.Publish(
85+
Message.Create(
86+
MessageTypes.EntityRenamed,
87+
OwningEntity?.Id,
88+
factionId: requestingFaction));
8289
}
8390

8491
public BaseDataBlob SensorClone(SensorInfoDB sensorInfo)
@@ -94,6 +101,11 @@ public void SensorUpdate(SensorInfoDB sensorInfo)
94101
internal void SetDefaultName(string name)
95102
{
96103
_names[-1] = name;
104+
105+
MessagePublisher.Instance.Publish(
106+
Message.Create(
107+
MessageTypes.EntityRenamed,
108+
OwningEntity?.Id));
97109
}
98110

99111
NameDB(NameDB db, SensorInfoDB sensorInfo)

Pulsar4X/Pulsar4X.Client/Rendering/Icons/NameIcon.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using System.Threading.Tasks;
45
using ImGuiNET;
56
using Pulsar4X.Engine;
67
using SDL3;
78
using System.Numerics;
89
using Pulsar4X.Client.Interface.Widgets;
910
using Pulsar4X.JumpPoints;
11+
using Pulsar4X.Messaging;
1012
using Pulsar4X.Names;
1113
using Pulsar4X.Movement;
1214
using Pulsar4X.Client.Interface;
@@ -55,6 +57,17 @@ public NameIcon(EntityState entityState, NameDB nameDB, PositionDB positionDB, G
5557
{
5658
TextDisplayColor = Styles.BadColor;
5759
}
60+
61+
// Subscribe to name changes
62+
Func<Message, bool> filterById = msg => msg.EntityId == entityState.Entity.Id;
63+
MessagePublisher.Instance.Subscribe(MessageTypes.EntityRenamed, OnEntityRenamed, filterById);
64+
}
65+
66+
private Task OnEntityRenamed(Message message)
67+
{
68+
NameString = _nameDB.GetName(_state.Faction?.Id ?? Game.NeutralFactionId);
69+
EntityState.Name = NameString;
70+
return Task.CompletedTask;
5871
}
5972

6073

0 commit comments

Comments
 (0)