コード例 #1
0
        public IEnumerable <Game_Server.Player> QueryPlayers(ILocatableObject objCenter)
        {
            var area  = GetEntityScreenArea(objCenter);
            var query = from x in Objects.Values
                        where area.AreaContains(x.Location) && x is Game_Server.Player
                        select x as Game_Server.Player;

            return(query);
        }
コード例 #2
0
        public IEnumerable <T> QueryBox <T>(ILocatableObject _objCenter, int _size)
        {
            var area  = new Rectangle(new Point(_objCenter.Location.X - _size, _objCenter.Location.Y - _size), _size * 2, _size * 2);
            var query = from x in Objects.Values
                        where area.AreaContains(x.Location) && x is T
                        select(T) x;

            return(query);
        }
コード例 #3
0
        public IEnumerable <T> QueryScreen <T>(ILocatableObject objCenter)
        {
            var area  = GetEntityScreenArea(objCenter);
            var query = from x in Objects.Values
                        where area.AreaContains(x.Location) && x is T
                        select(T) x;

            return(query);
        }
コード例 #4
0
 public bool Insert(ILocatableObject obj)
 {
     if (obj == null)
     {
         return(false);
     }
     if (Objects.ContainsKey(obj.UID))
     {
         return(false);
     }
     obj.Map = this;
     Objects.TryAdd(obj.UID, obj);
     return(true);
 }
コード例 #5
0
 public bool Remove(ILocatableObject obj, bool updatelocal = true)
 {
     if (updatelocal)
     {
         if (obj is Entity)
         {
             var entity = obj as Entity;
             entity.SendToScreen(new Packets.Game.GeneralActionPacket()
             {
                 UID = entity.UID, Action = Enum.DataAction.RemoveEntity
             });
             foreach (var id in entity.VisibleObjects.Keys)
             {
                 Managers.MapManager.DespawnByUID(entity, id);
             }
         }
     }
     return(Objects.TryRemove(obj.UID, out obj));
 }
コード例 #6
0
 public Rectangle GetEntityScreenArea(ILocatableObject objCenter)
 {
     return(new Rectangle(new Point(objCenter.Location.X - 18, objCenter.Location.Y - 18), 36, 36));
 }