From c575ad9272ef292ee6f7a405043aaa8d1cdc6fde Mon Sep 17 00:00:00 2001 From: Jonathan Mast Date: Sat, 26 Mar 2016 14:50:12 -0400 Subject: [PATCH] Get rid of the concept of Managers beside systems - should instead just use a system that creates and manages entities with the appropriate update priority --- .../Objects/TestGameManager.cs | 2 +- .../Game/BaseGameManager.cs | 20 +++--------- src/PhoenixSystem.Engine/Game/IGameManager.cs | 3 +- .../Game/IManagerManager.cs | 9 ------ .../Game/ManagerManager.cs | 31 ------------------- src/PhoenixSystem.Engine/IManager.cs | 13 -------- .../PhoenixSystem.Engine.csproj | 3 -- 7 files changed, 6 insertions(+), 75 deletions(-) delete mode 100644 src/PhoenixSystem.Engine/Game/IManagerManager.cs delete mode 100644 src/PhoenixSystem.Engine/Game/ManagerManager.cs delete mode 100644 src/PhoenixSystem.Engine/IManager.cs diff --git a/src/PhoenixSystem.Engine.Tests/Objects/TestGameManager.cs b/src/PhoenixSystem.Engine.Tests/Objects/TestGameManager.cs index 17ffb29..8731f2f 100644 --- a/src/PhoenixSystem.Engine.Tests/Objects/TestGameManager.cs +++ b/src/PhoenixSystem.Engine.Tests/Objects/TestGameManager.cs @@ -7,7 +7,7 @@ namespace PhoenixSystem.Engine.Tests.Objects internal class TestGameManager : BaseGameManager { public TestGameManager(IEntityAspectManager entityAspectManager, IEntityManager entityManager, ISystemManager systemManager) - : base(entityAspectManager, entityManager, systemManager, new ManagerManager()) + : base(entityAspectManager, entityManager, systemManager) { } } diff --git a/src/PhoenixSystem.Engine/Game/BaseGameManager.cs b/src/PhoenixSystem.Engine/Game/BaseGameManager.cs index a9add0e..b692ba9 100644 --- a/src/PhoenixSystem.Engine/Game/BaseGameManager.cs +++ b/src/PhoenixSystem.Engine/Game/BaseGameManager.cs @@ -12,20 +12,18 @@ public abstract class BaseGameManager : IGameManager protected BaseGameManager( IEntityAspectManager entityAspectManager, IEntityManager entityManager, - ISystemManager systemManager, - IManagerManager managers) + ISystemManager systemManager) { EntityAspectManager = entityAspectManager; EntityManager = entityManager; Systems = systemManager; - Managers = managers; + RegisterManagers(); } public IEntityAspectManager EntityAspectManager { get; } public IEntityManager EntityManager { get; } - public IManagerManager Managers { get; } public ISystemManager Systems { get; } public bool IsUpdating { get; private set; } @@ -62,12 +60,7 @@ public void AddSystem(ISystem system) { return EntityAspectManager.GetUnfilteredAspectList(); } - - public void RegisterManager(IManager manager) - { - Managers.Add(manager); - } - + public void ReleaseAspectList() { EntityAspectManager.ReleaseAspectList(); @@ -110,11 +103,7 @@ public virtual void Update(ITickEvent tickEvent) Systems.Update(tickEvent); OnSystemsUpdated(tickEvent); - - Managers.Update(tickEvent); - OnManagersUpdated(tickEvent); - IsUpdating = false; } @@ -142,8 +131,7 @@ protected virtual void OnManagersUpdated(ITickEvent tickEvent) private void RegisterManagers() { - Managers.Register(this); - + // Entity events EntityManager.Register(this); EntityManager.EntityAdded += EntityManagerOnEntityAdded; diff --git a/src/PhoenixSystem.Engine/Game/IGameManager.cs b/src/PhoenixSystem.Engine/Game/IGameManager.cs index 46d4163..02106b7 100644 --- a/src/PhoenixSystem.Engine/Game/IGameManager.cs +++ b/src/PhoenixSystem.Engine/Game/IGameManager.cs @@ -18,7 +18,7 @@ public interface IGameManager IEntityAspectManager EntityAspectManager { get; } IEntityManager EntityManager { get; } - IManagerManager Managers { get; } + ISystemManager Systems { get; } bool IsUpdating { get; } bool IsDrawing { get; } @@ -34,7 +34,6 @@ public interface IGameManager void SuspendSystem() where TSystemType : ISystem; void StartSystem() where TSystemType : ISystem; void ReleaseAspectList(); - void RegisterManager(IManager manager); IEnumerable GetAspectList() where TAspectType : IAspect, new(); IEnumerable GetUnfilteredAspectList() where TAspectType : IAspect, new(); } diff --git a/src/PhoenixSystem.Engine/Game/IManagerManager.cs b/src/PhoenixSystem.Engine/Game/IManagerManager.cs deleted file mode 100644 index 36a3eaf..0000000 --- a/src/PhoenixSystem.Engine/Game/IManagerManager.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace PhoenixSystem.Engine.Game -{ - public interface IManagerManager - { - void Register(IGameManager gameManager); - void Add(IManager manager); - void Update(ITickEvent tickEvent); - } -} \ No newline at end of file diff --git a/src/PhoenixSystem.Engine/Game/ManagerManager.cs b/src/PhoenixSystem.Engine/Game/ManagerManager.cs deleted file mode 100644 index 0df0fdf..0000000 --- a/src/PhoenixSystem.Engine/Game/ManagerManager.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Collections.Generic; - -namespace PhoenixSystem.Engine.Game -{ - public class ManagerManager : IManagerManager - { - private readonly List _managers = new List(); - private IGameManager _gameManager; - - public void Register(IGameManager gameManager) - { - _gameManager = gameManager; - } - - public void Add(IManager manager) - { - manager.Register(_gameManager); - - _managers.Add(manager); - _managers.Sort(); - } - - public void Update(ITickEvent tickEvent) - { - foreach (var manager in _managers) - { - manager.Update(); - } - } - } -} \ No newline at end of file diff --git a/src/PhoenixSystem.Engine/IManager.cs b/src/PhoenixSystem.Engine/IManager.cs deleted file mode 100644 index 66838d1..0000000 --- a/src/PhoenixSystem.Engine/IManager.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using PhoenixSystem.Engine.Channel; -using PhoenixSystem.Engine.Game; - -namespace PhoenixSystem.Engine -{ - public interface IManager : IChannelFilterable, IComparable - { - int Priority { get; } - void Update(); - void Register(IGameManager gameManager); - } -} \ No newline at end of file diff --git a/src/PhoenixSystem.Engine/PhoenixSystem.Engine.csproj b/src/PhoenixSystem.Engine/PhoenixSystem.Engine.csproj index c462471..943c4af 100644 --- a/src/PhoenixSystem.Engine/PhoenixSystem.Engine.csproj +++ b/src/PhoenixSystem.Engine/PhoenixSystem.Engine.csproj @@ -79,10 +79,7 @@ - - -