From 9853e0af365a3ba78116f7489f53f92e2256a40c Mon Sep 17 00:00:00 2001 From: Syntriax Date: Tue, 30 Jan 2024 12:08:21 +0300 Subject: [PATCH] feat: IGameManager --- Engine.Core/Abstract/IGameManager.cs | 21 +++++++++++++++++++++ Engine.Core/GameManager.cs | 9 ++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 Engine.Core/Abstract/IGameManager.cs diff --git a/Engine.Core/Abstract/IGameManager.cs b/Engine.Core/Abstract/IGameManager.cs new file mode 100644 index 0000000..6909fb2 --- /dev/null +++ b/Engine.Core/Abstract/IGameManager.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; + +namespace Syntriax.Engine.Core.Abstract; + +public interface IGameManager : IEntity, IEnumerable +{ + Action? OnGameObjectRegistered { get; set; } + Action? OnGameObjectUnRegistered { get; set; } + + + IReadOnlyList GameObjects { get; } + + + void RegisterGameObject(IGameObject gameObject); + T InstantiateGameObject(params object?[]? args) where T : class, IGameObject; + IGameObject RemoveGameObject(IGameObject gameObject); + + void Update(EngineTime time); + void PreDraw(); +} diff --git a/Engine.Core/GameManager.cs b/Engine.Core/GameManager.cs index 5d24d65..be303a3 100644 --- a/Engine.Core/GameManager.cs +++ b/Engine.Core/GameManager.cs @@ -9,7 +9,7 @@ using Syntriax.Engine.Core.Factory; namespace Syntriax.Engine.Core; [System.Diagnostics.DebuggerDisplay("GameObject Count: {_gameObjects.Count}")] -public class GameManager : IEntity, IEnumerable +public class GameManager : IGameManager { public Action? OnCameraChanged { get; set; } = null; public Action? OnGameObjectRegistered { get; set; } = null; @@ -21,7 +21,7 @@ public class GameManager : IEntity, IEnumerable public Action? OnStateEnableAssigned { get; set; } = null; - private IList _gameObjects = new List(Constants.GAME_OBJECTS_SIZE_INITIAL); + private readonly List _gameObjects = new(Constants.GAME_OBJECTS_SIZE_INITIAL); private IStateEnable _stateEnable = null!; private GameObjectFactory _gameObjectFactory = null!; @@ -39,7 +39,8 @@ public class GameManager : IEntity, IEnumerable } public bool Initialized => _initialized; - public IList GameObjects => _gameObjects; + public IReadOnlyList GameObjects => _gameObjects; + public IStateEnable StateEnable { get @@ -102,6 +103,7 @@ public class GameManager : IEntity, IEnumerable foreach (var gameObject in GameObjects) gameObject.Initialize(); + _initialized = true; OnInitialized?.Invoke(this); return true; } @@ -115,6 +117,7 @@ public class GameManager : IEntity, IEnumerable GameObjects[i].Finalize(); OnFinalized?.Invoke(this); + _initialized = false; return true; }