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