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