class Toy::Table

Constants

X_SIZE
Y_SIZE

Attributes

unit_collection[R]

X starts from west Y starts from south

Public Class Methods

new(unit=Toy::Unit) click to toggle source
# File lib/toy/table.rb, line 13
def initialize(unit=Toy::Unit)
  @unit = unit
  @unit_collection = generate_collection!
end

Public Instance Methods

hold!(x, y, object) click to toggle source
# File lib/toy/table.rb, line 18
def hold!(x, y, object)
  raise Toy::Unit::Error::CoordinateError unless x.is_a?(Fixnum)
  raise Toy::Unit::Error::CoordinateError unless y.is_a?(Fixnum)

  target_unit = @unit_collection.find_by_coordinates(x, y)

  if target_unit && target_unit.available?
    @unit_collection.find_by_object(object) && @unit_collection.find_by_object(object).release!
    target_unit.hold!(object)
  else 
    raise Toy::Table::Error::TableError
  end
end

Private Instance Methods

generate_collection!() click to toggle source
# File lib/toy/table.rb, line 34
def generate_collection!
  Toy::UnitCollection.new.tap do |uc|
    Toy::Table::X_SIZE.times do |x|
      Toy::Table::Y_SIZE.times do |y|
        uc.add(@unit.new(x, y, table=self))
      end
    end
  end
end