diff options
Diffstat (limited to 'tileset.rb')
| -rw-r--r-- | tileset.rb | 30 |
1 files changed, 16 insertions, 14 deletions
@@ -3,13 +3,13 @@ # A Tileset :) TODO class Tileset attr_reader :tileset, - :x_dimension, :y_dimension, + :columns, :rows, :width, :height - def initialize(directory, x_dimension, y_dimension) + def initialize(directory, width, height) puts directory - @x_dimension = x_dimension - @y_dimension = y_dimension + @width = width + @height = height if directory[-1] == '/' directory = "#{directory}*" elsif directory[-1] != '*' @@ -20,28 +20,30 @@ class Tileset images = Dir[directory].sort factors = divisors_of(images.length) puts factors - @width = factors[factors.length / 2] - @height = factors[(factors.length / 2) - 1] + @columns = factors[factors.length / 2] + @rows = factors[(factors.length / 2) - 1] - @tileset = Array.new(@width, nil) { Array.new(@height, nil) } + @tileset = Array.new(@columns, nil) { Array.new(@rows, nil) } images.each_with_index do |image, index| - x = index % @width + x = index % @columns puts "Image #{index} is #{image}" #@tileset[x] = [] if @tileset[x].nil? - @tileset[x][((index - x) / @width)] = image + @tileset[x][((index - x) / @columns)] = image #puts @tileset[x][((index - x) / 23)] end end - def create_image(x_tile, y_tile) - Image.new(tileset[x_tile][y_tile], - width: x_dimension, - height: y_dimension) + def create_image(column:, row:, x: 0, y: 0) + Image.new(tileset[column][row], + width: width, + height: height, + x: x, + y: y) end private def divisors_of(num) - (1..num).select { |n|num % n == 0 } + (1..num).select { |n| (num % n).zero? } end end |
