private void PlaceEquipment()
 {
     foreach (var room in _map.Rooms)
     {
         if (Dice.Roll("1D10") < 3)
         {
             if (_map.DoesRoomHaveWalkableSpace(room))
             {
                 Point randomRoomLocation = _map.GetRandomLocationInRoom(room);
                 if (randomRoomLocation != null)
                 {
                     Core.Equipment equipment;
                     try
                     {
                         equipment = _equipmentGenerator.CreateEquipment();
                     }
                     catch (InvalidOperationException)
                     {
                         // no more equipment to generate so just quit adding to this level
                         return;
                     }
                     Point location = _map.GetRandomLocationInRoom(room);
                     _map.AddTreasure(location.X, location.Y, equipment);
                 }
             }
         }
     }
 }
        private void PlaceItemsInRoom(bool isFirst, int numberOfItems)
        {
            Rectangle room;

            if (isFirst)
            {
                room = _map.Rooms[0];
            }
            else
            {
                room = _map.Rooms.Last();
            }

            for (int i = 0; i < numberOfItems; i++)
            {
                if (_map.DoesRoomHaveWalkableSpace(room))
                {
                    Point randomRoomLocation = _map.GetRandomLocationInFirstRoom(room);
                    if (randomRoomLocation != null)
                    {
                        Item item = ItemGenerator.CreateItem(_level);

                        Point location = _map.GetRandomLocationInFirstRoom(room);
                        _map.AddTreasure(location.X, location.Y, item);
                    }
                }
            }
        }
 private void PlaceAbility()
 {
     if (_level == 1 || _level % 3 == 0)
     {
         Ability ability;
         try
         {
             ability = AbilityGenerator.CreateAbility();
         }
         catch (InvalidOperationException)
         {
             return;
         }
         int   roomIndex = Game.Random.Next(0, _map.Rooms.Count - 1);
         Point location  = _map.GetRandomLocationInRoom(_map.Rooms[roomIndex]);
         ability.go = GameObject.Instantiate <GameObject>(Game.Items[ability.Name],
                                                          new Vector2(location.X, location.Y), Quaternion.identity);
         ability.go.transform.SetParent(Game.itemsHolder);
         ability.go.GetComponent <Renderer>().enabled = false;
         Game.ItemsTiles[location.X, location.Y]      = ability;
         _map.AddTreasure(location.X, location.Y, ability);
     }
 }