Ejemplo n.º 1
0
        public bool RemoveFromMap(Item item, bool handleGameItem)
        {
            if (handleGameItem)
            {
                RemoveSpecialItem(item);
            }
            if (_room.GotSoccer())
            {
                _room.GetSoccer().OnGateRemove(item);
            }
            var isRemoved = false;

            foreach (var coord in item.GetCoords.ToList())
            {
                if (RemoveCoordinatedItem(item, coord))
                {
                    isRemoved = true;
                }
            }

            var items = new ConcurrentDictionary <Point, List <Item> >();

            foreach (var Tile in item.GetCoords.ToList())
            {
                var point = new Point(Tile.X, Tile.Y);
                if (mCoordinatedItems.ContainsKey(point))
                {
                    var Ids     = mCoordinatedItems[point];
                    var __items = GetItemsFromIds(Ids);
                    if (!items.ContainsKey(Tile))
                    {
                        items.TryAdd(Tile, __items);
                    }
                }
                SetDefaultValue(Tile.X, Tile.Y);
            }
            foreach (var Coord in items.Keys.ToList())
            {
                if (!items.ContainsKey(Coord))
                {
                    continue;
                }

                var SubItems = items[Coord];
                foreach (var Item in SubItems.ToList())
                {
                    ConstructMapForItem(Item, Coord);
                }
            }

            items.Clear();
            items = null;
            return(isRemoved);
        }