Skip to content

Commit

Permalink
GetFilteredEntities returns all entities for the Game Master faction
Browse files Browse the repository at this point in the history
  • Loading branch information
behindcurtain3 committed Apr 28, 2024
1 parent 4dda5bc commit fa807d5
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 28 deletions.
2 changes: 2 additions & 0 deletions Pulsar4X/GameEngine/Engine/Entities/EntityManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,8 @@ public List<Entity> GetFilteredEntities(EntityFilter entityFilter, int factionId

public List<Entity> GetFilteredEntities(EntityFilter entityFilter, int factionId, List<Type>? datablobFilter = null, FilterLogic filterLogic = FilterLogic.And, FilterEntities? filter = null)
{
if(factionId == Game.GameMasterFaction.Id) return _entities.Values.ToList();

return _entities.Values.Where(entity =>
((entityFilter.HasFlag(EntityFilter.Friendly) && entity.FactionOwnerID == factionId) ||
(entityFilter.HasFlag(EntityFilter.Neutral) && entity.FactionOwnerID == Game.NeutralFactionId && EvaluateNeutralEntity(entity, factionId)) ||
Expand Down
38 changes: 10 additions & 28 deletions Pulsar4X/Pulsar4X.Client/MapRendering/SystemState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,38 +44,20 @@ public SystemState(StarSystem system, Entity faction)
SystemContacts = system.GetSensorContacts(faction.Id);
_sensorChanges = SystemContacts.Changes.Subscribe();
_faction = faction;

if(_faction.Id == system.Game.GameMasterFaction.Id)

var entities = StarSystem.GetFilteredEntities(EntityFilter.Friendly | EntityFilter.Neutral | EntityFilter.Hostile, faction.Id);
foreach(var entity in entities)
{
foreach(var entity in system.GetAllEntites())
{
SetupEntity(entity, _faction);
}

Func<Message, bool> filterById = msg => msg.EntityId != null && msg.SystemId != null && msg.SystemId.Equals(StarSystem.ManagerGuid);

MessagePublisher.Instance.Subscribe(MessageTypes.EntityAdded, OnEntityAddedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.EntityRemoved, OnEntityRemovedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.EntityRevealed, OnEntityAddedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.DBAdded, OnEntityUpdatedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.DBRemoved, OnEntityUpdatedMessage, filterById);
SetupEntity(entity, faction);
}
else
{
var entities = StarSystem.GetFilteredEntities(EntityFilter.Friendly | EntityFilter.Neutral | EntityFilter.Hostile, faction.Id);
foreach(var entity in entities)
{
SetupEntity(entity, faction);
}

Func<Message, bool> filterById = msg => msg.EntityId != null && msg.SystemId != null && msg.SystemId.Equals(StarSystem.ManagerGuid);
Func<Message, bool> filterById = msg => msg.EntityId != null && msg.SystemId != null && msg.SystemId.Equals(StarSystem.ManagerGuid);

MessagePublisher.Instance.Subscribe(MessageTypes.EntityAdded, OnEntityAddedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.EntityRemoved, OnEntityRemovedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.EntityRevealed, OnEntityAddedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.DBAdded, OnEntityUpdatedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.DBRemoved, OnEntityUpdatedMessage, filterById);
}
MessagePublisher.Instance.Subscribe(MessageTypes.EntityAdded, OnEntityAddedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.EntityRemoved, OnEntityRemovedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.EntityRevealed, OnEntityAddedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.DBAdded, OnEntityUpdatedMessage, filterById);
MessagePublisher.Instance.Subscribe(MessageTypes.DBRemoved, OnEntityUpdatedMessage, filterById);
}

private void SetupEntity(Entity entity, Entity faction)
Expand Down

0 comments on commit fa807d5

Please sign in to comment.