diff --git a/Pulsar4X/Pulsar4X.ImGuiNetUI/EntityContextMenu.cs b/Pulsar4X/Pulsar4X.ImGuiNetUI/EntityContextMenu.cs index 05fc45f3b..a1cacedd6 100644 --- a/Pulsar4X/Pulsar4X.ImGuiNetUI/EntityContextMenu.cs +++ b/Pulsar4X/Pulsar4X.ImGuiNetUI/EntityContextMenu.cs @@ -19,7 +19,7 @@ public EntityContextMenu(GlobalUIState state, Guid entityGuid) _state = state; //_state.OpenWindows.Add(this); //IsActive = true; - _entityState = state.StarSystemStates[state.PrimarySystem.Guid].EntityStates[entityGuid]; + _entityState = state.StarSystemStates[state.PrimarySystem.Guid].EntityStatesWithNames[entityGuid]; } diff --git a/Pulsar4X/Pulsar4X.ImGuiNetUI/GlobalUIState.cs b/Pulsar4X/Pulsar4X.ImGuiNetUI/GlobalUIState.cs index 55ab7a8fe..41770a307 100644 --- a/Pulsar4X/Pulsar4X.ImGuiNetUI/GlobalUIState.cs +++ b/Pulsar4X/Pulsar4X.ImGuiNetUI/GlobalUIState.cs @@ -135,12 +135,12 @@ internal void MapClicked(ECSLib.Vector4 worldCoord, MouseButtons button) internal void EntityClicked(Guid entityGuid, MouseButtons button) { - LastClickedEntity = StarSystemStates[PrimarySystem.Guid].EntityStates[entityGuid]; + LastClickedEntity = StarSystemStates[PrimarySystem.Guid].EntityStatesWithNames[entityGuid]; EntityClickedEvent?.Invoke(LastClickedEntity, button); if (ActiveWindow != null) - ActiveWindow.EntityClicked(StarSystemStates[PrimarySystem.Guid].EntityStates[entityGuid], button); + ActiveWindow.EntityClicked(StarSystemStates[PrimarySystem.Guid].EntityStatesWithNames[entityGuid], button); OnEntitySelected(); } diff --git a/Pulsar4X/Pulsar4X.ImGuiNetUI/MapRendering/SystemMapRendering.cs b/Pulsar4X/Pulsar4X.ImGuiNetUI/MapRendering/SystemMapRendering.cs index 6948ea77e..a60d5403a 100644 --- a/Pulsar4X/Pulsar4X.ImGuiNetUI/MapRendering/SystemMapRendering.cs +++ b/Pulsar4X/Pulsar4X.ImGuiNetUI/MapRendering/SystemMapRendering.cs @@ -83,12 +83,12 @@ internal void SetSystem(FactionVM factionVM) _state.SetActiveSystem(starSys.Guid); - foreach (var entityItem in _sysState.EntityStates.Values) + foreach (var entityItem in _sysState.EntityStatesWithPosition.Values) { AddIconable(entityItem); } - _state.LastClickedEntity = _sysState.EntityStates.Values.ElementAt(0); + _state.LastClickedEntity = _sysState.EntityStatesWithPosition.Values.ElementAt(0); } @@ -110,7 +110,7 @@ internal void SetSystem(StarSystem starSys) _sensorChanges = _sensorMgr.Changes.Subscribe(); - foreach (var entityItem in _sysState.EntityStates.Values) + foreach (var entityItem in _sysState.EntityStatesWithPosition.Values) { AddIconable(entityItem); } @@ -153,7 +153,7 @@ void AddIconable(EntityState entityState) foreach (var colony in entityItem.GetDataBlob().Colonies) { _nameIcons[entityItem.Guid].AddSubName(colony); - _sysState.EntityStates[entityItem.Guid].NameIcon = _nameIcons[entityItem.Guid]; + _sysState.EntityStatesWithPosition[entityItem.Guid].NameIcon = _nameIcons[entityItem.Guid]; /* IconEntityStates.Add(colony.Guid, new EntityState(colony) { @@ -230,8 +230,8 @@ void HandleChanges(EntityState entityState) { if (!((OrbitDB)changeData.Datablob).IsStationary) { - if (_sysState.EntityStates.ContainsKey(changeData.Entity.Guid)) - entityState = _sysState.EntityStates[changeData.Entity.Guid]; + if (_sysState.EntityStatesWithPosition.ContainsKey(changeData.Entity.Guid)) + entityState = _sysState.EntityStatesWithPosition[changeData.Entity.Guid]; else entityState = new EntityState(changeData.Entity) { Name = "Unknown" }; @@ -352,9 +352,9 @@ internal void Draw() { foreach (var entityGuid in _sysState.EntitiesAdded) { - AddIconable(_sysState.EntityStates[entityGuid]); + AddIconable(_sysState.EntityStatesWithPosition[entityGuid]); } - foreach (var item in _sysState.EntityStates.Values) + foreach (var item in _sysState.EntityStatesWithPosition.Values) { if (item.Changes.Count > 0) { diff --git a/Pulsar4X/Pulsar4X.ImGuiNetUI/MapRendering/SystemState.cs b/Pulsar4X/Pulsar4X.ImGuiNetUI/MapRendering/SystemState.cs index 2e5d3440b..9b5267f26 100644 --- a/Pulsar4X/Pulsar4X.ImGuiNetUI/MapRendering/SystemState.cs +++ b/Pulsar4X/Pulsar4X.ImGuiNetUI/MapRendering/SystemState.cs @@ -24,7 +24,9 @@ public class SystemState public List EntitysToBin = new List(); public List EntitiesAdded = new List(); public List SystemChanges = new List(); - public Dictionary EntityStates = new Dictionary(); + public Dictionary EntityStatesWithNames = new Dictionary(); + public Dictionary EntityStatesWithPosition = new Dictionary(); + public Dictionary EntityStatesColonies = new Dictionary(); public SystemState(StarSystem system, Entity faction) { @@ -35,10 +37,19 @@ public SystemState(StarSystem system, Entity faction) foreach (Entity entityItem in StarSystem.GetEntitiesByFaction(faction.Guid)) { - if (entityItem.HasDataBlob()) + if (entityItem.HasDataBlob()) { var entityState = new EntityState(entityItem) { Name = "Unknown" }; - EntityStates.Add(entityItem.Guid, entityState); + EntityStatesWithNames.Add(entityItem.Guid, entityState); + if (entityItem.HasDataBlob()) + { + EntityStatesWithPosition.Add(entityItem.Guid, entityState); + } + else if( entityItem.HasDataBlob()) + { + EntityStatesColonies.Add(entityItem.Guid, entityState); + } + } } @@ -50,7 +61,8 @@ public SystemState(StarSystem system, Entity faction) foreach (SensorContact sensorContact in SystemContacts.GetAllContacts()) { var entityState = new EntityState(sensorContact) { Name = "Unknown" }; - EntityStates.Add(sensorContact.ActualEntity.Guid, entityState); + EntityStatesWithNames.Add(sensorContact.ActualEntityGuid, entityState); + EntityStatesWithPosition.Add(sensorContact.ActualEntityGuid, entityState); } } @@ -73,7 +85,7 @@ private SystemState(StarSystem system) if (entityItem.HasDataBlob()) { var entityState = new EntityState(entityItem) { Name = "Unknown" }; - EntityStates.Add(entityItem.Guid, entityState); + EntityStatesWithPosition.Add(entityItem.Guid, entityState); } } @@ -98,7 +110,7 @@ void HandleUpdates(EntityChangeData change) if (change.Entity.IsValid && change.Entity.HasDataBlob()) { var entityState = new EntityState(change.Entity) { Name = "Unknown" }; - EntityStates.Add(change.Entity.Guid, entityState); + EntityStatesWithPosition.Add(change.Entity.Guid, entityState); EntitiesAdded.Add(change.Entity.Guid); } break; @@ -129,7 +141,7 @@ public void PreFrameSetup() } - foreach (var item in EntityStates.Values) + foreach (var item in EntityStatesWithPosition.Values) { if (item.IsDestroyed) //items get flagged via an event triggered by worker threads. { @@ -148,13 +160,13 @@ public void PostFrameCleanup() { foreach (var itemGuid in EntitysToBin) { - EntityStates.Remove(itemGuid); + EntityStatesWithPosition.Remove(itemGuid); } EntitysToBin = new List(); EntitiesAdded = new List(); SensorChanges = new List(); SystemChanges = new List(); - foreach (var item in EntityStates.Values) + foreach (var item in EntityStatesWithPosition.Values) { item.PostFrameCleanup(); }