diff options
| -rw-r--r-- | run.rb | 58 | ||||
| -rw-r--r-- | tileset.rb | 47 |
2 files changed, 66 insertions, 39 deletions
@@ -4,48 +4,58 @@ require 'ruby2d' require_relative 'lib/camera/camera' require_relative 'tileset' +set width: 1024, height: 720 + @eks = 0 @why = 0 on :key_down do |event| if event.key == 'w' @why -= 1 - @why %= 13 end if event.key == 's' @why += 1 - @why %= 13 end if event.key == 'a' @eks -= 1 - @eks %= 23 end if event.key == 'd' @eks += 1 - @eks %= 23 end end -@test = Sprite.new('./Monster02.png', - clip_width: 48, - clip_height: 48, - width: 100, - height: 100, - x: 0, - y: 0, - loop: true) -@test2 = Sprite.new('./Monster02-RGB.png', - clip_width: 48, - clip_height: 48, - width: 100, - height: 100, - x: 100, - y: 0, - loop: true) +on :mouse_up do |event| + case event.button + when :left + @new = @yep.create_image(@selected_item[0], @selected_item[1]) + @new.x = Window.mouse_x - (Window.mouse_x % 128) + @new.y = Window.mouse_y - (Window.mouse_y % 128) + end +end +on :mouse_scroll do |event| + @selected_item[0] += event.delta_y + puts "==" + pp @selected_item + @selected_item[1] += @selected_item[0] / @yep.width + @selected_item[0] %= @yep.width + pp @selected_item + @selected_item[1] %= @yep.height + pp @selected_item +end +@yep = Tileset.new('./assets/kenny/PNG/128', 128, 128) [email protected] do |thing| + thing.each do |stuff| + pp stuff + end +end + +@selected_item = [0,0] +@selected_image = @yep.create_image(@selected_item[0], @selected_item[1]) + update do - #Camera << Image.new(Tileset.get[@eks][@why]) - #Camera.redraw + @selected_image.remove + @selected_image = @yep.create_image(@selected_item[0], @selected_item[1]) + @selected_image.x = Window.mouse_x - (Window.mouse_x % 128) + @selected_image.y = Window.mouse_y - (Window.mouse_y % 128) end show @@ -1,28 +1,45 @@ # frozen_string_literal: true +# A Tileset :) TODO class Tileset + attr_reader :tileset, + :x_dimension, :y_dimension, + :width, :height + def initialize(directory, x_dimension, y_dimension) - @tileset = Array.new(23) { Array.new(13) } - (1..299).each do |iterator| - iter = iterator - 1 - iter = 299 if iter.zero? - x = (iterator - 1) % 23 - stylized = iter.to_s - stylized = "0#{stylized}" while stylized.length < 3 - @tileset[x][((iterator - x) / 23)] = "./assets/kenny/PNG/128/towerDefense_tile#{stylized}.png" - puts @tileset[x][((iterator - x) / 23)] + puts directory + @x_dimension = x_dimension + @y_dimension = y_dimension + if directory[-1] == '/' + directory = "#{directory}*" + elsif directory[-1] != '*' + directory = "#{directory}/*" end - (0...13).each do |why| - (0...23).each do |eks| - end + + puts directory + images = Dir[directory].sort + factors = divisors_of(images.length) + puts factors + @width = factors[factors.length / 2] + @height = factors[(factors.length / 2) - 1] + + @tileset = Array.new(@width, nil) { Array.new(@height, nil) } + images.each_with_index do |image, index| + x = index % @width + puts "Image #{index} is #{image}" + #@tileset[x] = [] if @tileset[x].nil? + @tileset[x][((index - x) / @width)] = image + #puts @tileset[x][((index - x) / 23)] end end - def get - @tileset + def create_image(x_tile, y_tile) + Image.new(tileset[x_tile][y_tile], + width: x_dimension, + height: y_dimension) end - #private + private def divisors_of(num) (1..num).select { |n|num % n == 0 } |
