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