using DangerousD.GameCore.GameObjects; using DangerousD.GameCore.GameObjects.LivingEntities; using DangerousD.GameCore.Graphics; using DangerousD.GameCore.Managers; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using System; using System.Collections.Generic; using System.Text; namespace DangerousD.GameCore { public class GameManager { public List GetAllGameObjects { get; private set; } public List livingEntities; public List entities; public List mapObjects; public MapManager mapManager; public PhysicsManager physicsManager; public List players; public List otherObjects = new(); public Player GetPlayer1 { get; private set; } public GameManager() { GetAllGameObjects = new List(); livingEntities = new List(); mapObjects = new List(); entities = new List(); players = new List(); mapManager = new MapManager(); physicsManager = new PhysicsManager(); mapManager.Init(); } internal void Register(GameObject gameObject) { if (gameObject is Player) { livingEntities.Add(gameObject as LivingEntity); players.Add(gameObject as Player); GetPlayer1 = players[0]; } else if (gameObject is LivingEntity) { livingEntities.Add(gameObject as LivingEntity); } else if (gameObject is Entity) { entities.Add(gameObject as Entity); } else if (gameObject is MapObject) { mapObjects.Add(gameObject as MapObject); } else { otherObjects.Add(gameObject); } } public void Draw(SpriteBatch _spriteBatch) { foreach (var item in mapObjects) item.Draw(_spriteBatch); foreach (var item in entities) item.Draw(_spriteBatch); foreach (var item in livingEntities) item.Draw(_spriteBatch); foreach (var item in otherObjects) item.Draw(_spriteBatch); } public void Update(GameTime gameTime) { foreach (var item in mapObjects) item.Update(gameTime); foreach (var item in entities) item.Update(gameTime); foreach (var item in livingEntities) item.Update(gameTime); foreach (var item in otherObjects) item.Update(gameTime); physicsManager.UpdateCollisions(entities, livingEntities, mapObjects, gameTime); } } }