Beispiel #1
0
        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;
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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;
            }
        }