public void LoadEntities() { Systems.LoadSystem loadSys = new Systems.LoadSystem(); Entities.Clear(); Entities = loadSys.LoadEntities(); if (Entities.Count > 0) { Game.MessageLog.Add("YAY!"); EntityBitLookUp.Clear(); foreach (KeyValuePair <int, List <Components.Component> > entry in Entities) { List <Components.Component> compList = entry.Value; int eid = entry.Key; int checker = 0; foreach (Components.Component c in compList) { Core.ComponentTypes ct = c.CompType; checker = checker | (int)ct; } EntityBitLookUp.Add(eid, checker); } // reset max entityID counter List <int> idList = new List <int>(Entities.Keys); int maxID = idList.Max(); _entityID = maxID + 1; } }
public Components.Component GetSingleComponentByID(int eid, Core.ComponentTypes compType) { Components.Component returnComp = null; List <Components.Component> compList; if (Entities.TryGetValue(eid, out compList)) { if (compList != null) { returnComp = compList.FirstOrDefault(s => s.CompType == compType); } } return(returnComp); }
public List <int> GetEntsByBitwise(Core.ComponentTypes compToLookFor) { //Dictionary<int, List<Components.Component>> RetDict = new Dictionary<int, List<Components.Component>>(); List <int> RetList = new List <int>(); int toLookFor = (int)compToLookFor; foreach (KeyValuePair <int, int> entry in EntityBitLookUp) { int v = entry.Value; if ((toLookFor & v) > 0) { RetList.Add(entry.Key); } } return(RetList); }
public void RemoveCompFromEnt(int eid, Core.ComponentTypes cType) { List <Components.Component> entComps = Entities[eid]; entComps.RemoveAll(x => x.CompType == cType); int checker = 0; EntityBitLookUp[eid] = checker; foreach (Components.Component c in entComps) { if (c.CompType == Core.ComponentTypes.Actor) { checker = checker | (int)Core.ComponentTypes.Actor; } if (c.CompType == Core.ComponentTypes.AI) { checker = checker | (int)Core.ComponentTypes.AI; } if (c.CompType == Core.ComponentTypes.Collectable) { checker = checker | (int)Core.ComponentTypes.Collectable; } if (c.CompType == Core.ComponentTypes.CreatureDetails) { checker = checker | (int)Core.ComponentTypes.CreatureDetails; } if (c.CompType == Core.ComponentTypes.Door) { checker = checker | (int)Core.ComponentTypes.Door; } if (c.CompType == Core.ComponentTypes.Furniture) { checker = checker | (int)Core.ComponentTypes.Furniture; } if (c.CompType == Core.ComponentTypes.Health) { checker = checker | (int)Core.ComponentTypes.Health; } if (c.CompType == Core.ComponentTypes.Inventory) { checker = checker | (int)Core.ComponentTypes.Inventory; } if (c.CompType == Core.ComponentTypes.ItemValue) { checker = checker | (int)Core.ComponentTypes.ItemValue; } if (c.CompType == Core.ComponentTypes.Magic) { checker = checker | (int)Core.ComponentTypes.Magic; } if (c.CompType == Core.ComponentTypes.MonsterStats) { checker = checker | (int)Core.ComponentTypes.MonsterStats; } if (c.CompType == Core.ComponentTypes.Position) { checker = checker | (int)Core.ComponentTypes.Position; } if (c.CompType == Core.ComponentTypes.Render) { checker = checker | (int)Core.ComponentTypes.Render; } if (c.CompType == Core.ComponentTypes.Schedulable) { checker = checker | (int)Core.ComponentTypes.Schedulable; } if (c.CompType == Core.ComponentTypes.Stairs) { checker = checker | (int)Core.ComponentTypes.Stairs; } if (c.CompType == Core.ComponentTypes.Useable) { checker = checker | (int)Core.ComponentTypes.Useable; } EntityBitLookUp[eid] = checker; } }