feat: Implemented IInitialize on GameManager
This commit is contained in:
		
							
								
								
									
										25
									
								
								Engine.Core/Engine.Core.sln
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								Engine.Core/Engine.Core.sln
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  |  | ||||||
|  | Microsoft Visual Studio Solution File, Format Version 12.00 | ||||||
|  | # Visual Studio Version 17 | ||||||
|  | VisualStudioVersion = 17.5.002.0 | ||||||
|  | MinimumVisualStudioVersion = 10.0.40219.1 | ||||||
|  | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Engine.Core", "Engine.Core.csproj", "{6C1AF4B1-60B0-4225-9A96-F597BC04E9D0}" | ||||||
|  | EndProject | ||||||
|  | Global | ||||||
|  | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
|  | 		Debug|Any CPU = Debug|Any CPU | ||||||
|  | 		Release|Any CPU = Release|Any CPU | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||||
|  | 		{6C1AF4B1-60B0-4225-9A96-F597BC04E9D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{6C1AF4B1-60B0-4225-9A96-F597BC04E9D0}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{6C1AF4B1-60B0-4225-9A96-F597BC04E9D0}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
|  | 		{6C1AF4B1-60B0-4225-9A96-F597BC04E9D0}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(SolutionProperties) = preSolution | ||||||
|  | 		HideSolutionNode = FALSE | ||||||
|  | 	EndGlobalSection | ||||||
|  | 	GlobalSection(ExtensibilityGlobals) = postSolution | ||||||
|  | 		SolutionGuid = {CC449885-B99C-4C71-842D-3C19A35E786F} | ||||||
|  | 	EndGlobalSection | ||||||
|  | EndGlobal | ||||||
| @@ -6,12 +6,20 @@ using Syntriax.Engine.Core.Factory; | |||||||
|  |  | ||||||
| namespace Syntriax.Engine.Core; | namespace Syntriax.Engine.Core; | ||||||
|  |  | ||||||
| public class GameManager | public class GameManager : IInitialize | ||||||
| { | { | ||||||
|  |     public Action<IInitialize>? OnInitialized { get; set; } = null; | ||||||
|  |     public Action<IInitialize>? OnFinalized { get; set; } = null; | ||||||
|  |     public Action<IAssignableStateEnable>? OnStateEnableAssigned { get; set; } = null; | ||||||
|  |  | ||||||
|  |  | ||||||
|     private IList<IGameObject> _gameObjects = new List<IGameObject>(Constants.GAME_OBJECTS_SIZE_INITIAL); |     private IList<IGameObject> _gameObjects = new List<IGameObject>(Constants.GAME_OBJECTS_SIZE_INITIAL); | ||||||
|     private IList<IDrawable> _drawables = new List<IDrawable>(Constants.DRAWABLE_OBJECTS_SIZE_INITIAL); |     private IList<IDrawable> _drawables = new List<IDrawable>(Constants.DRAWABLE_OBJECTS_SIZE_INITIAL); | ||||||
|  |  | ||||||
|  |     private IStateEnable _stateEnable = null!; | ||||||
|     private GameObjectFactory _gameObjectFactory = null!; |     private GameObjectFactory _gameObjectFactory = null!; | ||||||
|  |     private bool _initialized = false; | ||||||
|  |  | ||||||
|     private GameObjectFactory GameObjectFactory |     private GameObjectFactory GameObjectFactory | ||||||
|     { |     { | ||||||
|         get |         get | ||||||
| @@ -22,7 +30,9 @@ public class GameManager | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public bool Initialized => _initialized; | ||||||
|     public IList<IGameObject> GameObjects => _gameObjects; |     public IList<IGameObject> GameObjects => _gameObjects; | ||||||
|  |     public IStateEnable StateEnable { get { if (_stateEnable is null) Assign(new StateEnableFactory().Instantiate(this)); return _stateEnable; } } | ||||||
|  |  | ||||||
|     public void RegisterGameObject(IGameObject gameObject) |     public void RegisterGameObject(IGameObject gameObject) | ||||||
|     { |     { | ||||||
| @@ -48,10 +58,38 @@ public class GameManager | |||||||
|         return gameObject; |         return gameObject; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void Initialize() |     public bool Initialize() | ||||||
|     { |     { | ||||||
|  |         if (Initialized) | ||||||
|  |             return false; | ||||||
|  |  | ||||||
|         foreach (var gameObject in GameObjects) |         foreach (var gameObject in GameObjects) | ||||||
|             gameObject.Initialize(); |             gameObject.Initialize(); | ||||||
|  |  | ||||||
|  |         OnInitialized?.Invoke(this); | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public bool Finalize() | ||||||
|  |     { | ||||||
|  |         if (!Initialized) | ||||||
|  |             return false; | ||||||
|  |  | ||||||
|  |         for (int i = GameObjects.Count; i >= 0; i--) | ||||||
|  |             GameObjects[i].Finalize(); | ||||||
|  |  | ||||||
|  |         OnFinalized?.Invoke(this); | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public bool Assign(IStateEnable stateEnable) | ||||||
|  |     { | ||||||
|  |         if (_stateEnable is not null) | ||||||
|  |             return false; | ||||||
|  |  | ||||||
|  |         _stateEnable = stateEnable; | ||||||
|  |         OnStateEnableAssigned?.Invoke(this); | ||||||
|  |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void Update(GameTime time) |     public void Update(GameTime time) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user