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); }