namespace Ragon.Core.Game; public class EntityList { private readonly List _dynamicEntitiesList = new List(); private readonly List _staticEntitiesList = new List(); private readonly Dictionary _entitiesMap = new Dictionary(); public IReadOnlyList StaticList => _staticEntitiesList; public IReadOnlyList DynamicList => _dynamicEntitiesList; public IReadOnlyDictionary Map => _entitiesMap; public void Add(Entity entity) { if (entity.StaticId != 0) _staticEntitiesList.Add(entity); else _dynamicEntitiesList.Add(entity); _entitiesMap.Add(entity.Id, entity); } public Entity Remove(Entity entity) { if (_entitiesMap.Remove(entity.Id, out var existEntity)) { _staticEntitiesList.Remove(entity); _dynamicEntitiesList.Remove(entity); return existEntity; } return null; } }