internal bool AddItemToMap(RoomItem Item, bool handleGameItem) { if (handleGameItem) { if (room.GotWired() && WiredUtillity.TypeIsWired(Item.GetBaseItem().InteractionType)) room.GetWiredHandler().AddFurniture(Item); AddSpecialItems(Item); switch (Item.GetBaseItem().InteractionType) { case InteractionType.footballgoalred: case InteractionType.footballcounterred: case InteractionType.banzaiscorered: case InteractionType.freezeredcounter: case InteractionType.freezeredgate: { room.GetGameManager().AddFurnitureToTeam(Item, Games.Team.red); break; } case InteractionType.footballgoalgreen: case InteractionType.footballcountergreen: case InteractionType.banzaiscoregreen: case InteractionType.freezegreencounter: case InteractionType.freezegreengate: { room.GetGameManager().AddFurnitureToTeam(Item, Games.Team.green); break; } case InteractionType.footballgoalblue: case InteractionType.footballcounterblue: case InteractionType.banzaiscoreblue: case InteractionType.freezebluecounter: case InteractionType.freezebluegate: { room.GetGameManager().AddFurnitureToTeam(Item, Games.Team.blue); break; } case InteractionType.footballgoalyellow: case InteractionType.footballcounteryellow: case InteractionType.banzaiscoreyellow: case InteractionType.freezeyellowcounter: case InteractionType.freezeyellowgate: { room.GetGameManager().AddFurnitureToTeam(Item, Games.Team.yellow); break; } case InteractionType.freezeexit: { room.GetFreeze().ExitTeleport = Item; break; } case InteractionType.roller: { if (!room.GetRoomItemHandler().mRollers.ContainsKey(Item.Id)) room.GetRoomItemHandler().mRollers.Add(Item.Id, Item); break; } } } if (Item.GetBaseItem().Type != 's') return true; foreach (int coord in Item.GetDoubleCoordinates()) { AddCoordinatedItem(Item, coord); } if (Item.GetX > (Model.MapSizeX - 1)) { Model.AddX(); GenerateMaps(); return false; } if (Item.GetY > (Model.MapSizeY - 1)) { Model.AddY(); GenerateMaps(); return false; } foreach (Point coord in Item.GetCoords) { if (!ConstructMapForItem(Item, coord.X, coord.Y)) return false; } return true; }
internal bool RemoveFromMap(RoomItem item, bool handleGameItem) { if (handleGameItem) RemoveSpecialItem(item); if (room.GotSoccer()) room.GetSoccer().onGateRemove(item); bool isRemoved = false; foreach (int coord in item.GetDoubleCoordinates()) { if (RemoveCoordinatedItem(item, coord)) isRemoved = true; } Hashtable items = new Hashtable(); int point; foreach (Point tile in item.GetCoords) { point = Formatting.PointToInt(tile); if (mCoordinatedItems.ContainsKey(point)) { List<RoomItem> __items = (List<RoomItem>)mCoordinatedItems[point]; if (!items.ContainsKey(tile)) { items.Add(tile, __items); } } SetDefaultValue(tile.X, tile.Y); } foreach (Point coord in items.Keys) { if (!items.ContainsKey(coord)) continue; List<RoomItem> _items = (List<RoomItem>)items[coord]; foreach (RoomItem _item in _items) { foreach (Point ___coord in _item.GetCoords) ConstructMapForItem(_item, ___coord.X, ___coord.Y); //ConstructMapForItem(_item, _item.GetX, _item.GetY); } } items.Clear(); items = null; return isRemoved; }