class DudesLocation
arrange several dudes on canvas
Attributes
canvas_size_x[R]
canvas_size_y[R]
offsets[R]
Public Class Methods
new(params_list, dudes_per_row_max = nil)
click to toggle source
# File lib/compose/dudes_location.rb, line 7 def initialize(params_list, dudes_per_row_max = nil) @dudes_num = params_list.size @offsets = [] if dudes_per_row_max.nil? @dudes_per_row_max = Config::DUDES_PER_ROW_MAX else @dudes_per_row_max = dudes_per_row_max end compute_dudes_coordiantes compute_canvas_size end
Private Instance Methods
compute_canvas_size()
click to toggle source
# File lib/compose/dudes_location.rb, line 42 def compute_canvas_size # max x size of canvas is x offset for the last dude in 1st row - @dudes_per_each_row.first - 1 # @offsets.last[:offset_y] - last dude has max y offset @canvas_size_x = @offsets[@dudes_per_each_row.first - 1][:offset_x] + Config::DUDE_FRAME_SIZE @canvas_size_y = @offsets.last[:offset_y] + Config::DUDE_FRAME_SIZE end
compute_dudes_coordiantes()
click to toggle source
# File lib/compose/dudes_location.rb, line 32 def compute_dudes_coordiantes @dudes_per_each_row = compute_dudes_per_each_row offset_y = 0 @dudes_per_each_row.each_with_index do |dudes_in_row, y_index| dudes_in_row.times do |x_index| @offsets << { offset_x: x_index * Config::OFFSET_X, offset_y: y_index * Config::OFFSET_Y } end end end
compute_dudes_per_each_row()
click to toggle source
returns array with number of dudes in each row e.g. if we have 12 dudes and only 5 are allowed per row, then the output will be [5, 5, 2])
# File lib/compose/dudes_location.rb, line 25 def compute_dudes_per_each_row remaining_dudes = @dudes_num % @dudes_per_row_max rows_num = (@dudes_num - remaining_dudes) / @dudes_per_row_max full_rows = [@dudes_per_row_max] * rows_num remaining_dudes > 0 ? full_rows + [remaining_dudes]: full_rows end