class Degica::Room

Attributes

description[RW]
doors[RW]

Public Class Methods

new(description, objects = []) click to toggle source
# File lib/degica/room.rb, line 6
def initialize(description, objects = [])
  @description = description.highlight
  @doors = DoorCollection.new
  @objects = ObjectCollection.new(objects)
  @generated = false
end

Public Instance Methods

actions() click to toggle source
# File lib/degica/room.rb, line 24
def actions
  actions = @doors.actions + @objects.actions
  actions << Action.new(:room, self)
  actions << Action.new(:door, @doors.first) if @doors.size == 1
  actions
end
describe() click to toggle source
# File lib/degica/room.rb, line 31
def describe
  @description
end
generate!() click to toggle source
# File lib/degica/room.rb, line 13
def generate!
  return if @generated
  @generated = true

  rooms = Game.objects.rooms.select do |room|
    room.doors.empty? && room != self
  end.sample(rand(1..2))

  rooms.map { |r| make_door(r) }
end

Private Instance Methods

make_door(room) click to toggle source
# File lib/degica/room.rb, line 37
def make_door(room)
  Door.new(self, room)
end