Skip to content

Commit

Permalink
fixed crash when right clicking on a colony name.
Browse files Browse the repository at this point in the history
  • Loading branch information
se5a committed Feb 2, 2019
1 parent 42fd8c5 commit c8181ce
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 20 deletions.
2 changes: 1 addition & 1 deletion Pulsar4X/Pulsar4X.ImGuiNetUI/EntityContextMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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];

}

Expand Down
4 changes: 2 additions & 2 deletions Pulsar4X/Pulsar4X.ImGuiNetUI/GlobalUIState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

Expand Down
16 changes: 8 additions & 8 deletions Pulsar4X/Pulsar4X.ImGuiNetUI/MapRendering/SystemMapRendering.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);

}

Expand All @@ -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);
}
Expand Down Expand Up @@ -153,7 +153,7 @@ void AddIconable(EntityState entityState)
foreach (var colony in entityItem.GetDataBlob<SystemBodyInfoDB>().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)
{
Expand Down Expand Up @@ -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" };

Expand Down Expand Up @@ -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)
{
Expand Down
30 changes: 21 additions & 9 deletions Pulsar4X/Pulsar4X.ImGuiNetUI/MapRendering/SystemState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ public class SystemState
public List<Guid> EntitysToBin = new List<Guid>();
public List<Guid> EntitiesAdded = new List<Guid>();
public List<EntityChangeData> SystemChanges = new List<EntityChangeData>();
public Dictionary<Guid, EntityState> EntityStates = new Dictionary<Guid, EntityState>();
public Dictionary<Guid, EntityState> EntityStatesWithNames = new Dictionary<Guid, EntityState>();
public Dictionary<Guid, EntityState> EntityStatesWithPosition = new Dictionary<Guid, EntityState>();
public Dictionary<Guid, EntityState> EntityStatesColonies = new Dictionary<Guid, EntityState>();

public SystemState(StarSystem system, Entity faction)
{
Expand All @@ -35,10 +37,19 @@ public SystemState(StarSystem system, Entity faction)

foreach (Entity entityItem in StarSystem.GetEntitiesByFaction(faction.Guid))
{
if (entityItem.HasDataBlob<PositionDB>())
if (entityItem.HasDataBlob<NameDB>())
{
var entityState = new EntityState(entityItem) { Name = "Unknown" };
EntityStates.Add(entityItem.Guid, entityState);
EntityStatesWithNames.Add(entityItem.Guid, entityState);
if (entityItem.HasDataBlob<PositionDB>())
{
EntityStatesWithPosition.Add(entityItem.Guid, entityState);
}
else if( entityItem.HasDataBlob<ColonyInfoDB>())
{
EntityStatesColonies.Add(entityItem.Guid, entityState);
}

}
}

Expand All @@ -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);
}

}
Expand All @@ -73,7 +85,7 @@ private SystemState(StarSystem system)
if (entityItem.HasDataBlob<PositionDB>())
{
var entityState = new EntityState(entityItem) { Name = "Unknown" };
EntityStates.Add(entityItem.Guid, entityState);
EntityStatesWithPosition.Add(entityItem.Guid, entityState);
}
}

Expand All @@ -98,7 +110,7 @@ void HandleUpdates(EntityChangeData change)
if (change.Entity.IsValid && change.Entity.HasDataBlob<PositionDB>())
{
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;
Expand Down Expand Up @@ -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.
{
Expand All @@ -148,13 +160,13 @@ public void PostFrameCleanup()
{
foreach (var itemGuid in EntitysToBin)
{
EntityStates.Remove(itemGuid);
EntityStatesWithPosition.Remove(itemGuid);
}
EntitysToBin = new List<Guid>();
EntitiesAdded = new List<Guid>();
SensorChanges = new List<EntityChangeData>();
SystemChanges = new List<EntityChangeData>();
foreach (var item in EntityStates.Values)
foreach (var item in EntityStatesWithPosition.Values)
{
item.PostFrameCleanup();
}
Expand Down

0 comments on commit c8181ce

Please sign in to comment.