From 490b20123c75cf8eb5de7039993cb704e3d7a0c8 Mon Sep 17 00:00:00 2001 From: realtradam Date: Wed, 19 May 2021 02:23:17 -0400 Subject: working json to sprite conversion --- app/ECS/systems/00_player.rb | 4 ++-- app/ECS/systems/99_render.rb | 19 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) (limited to 'app/ECS/systems') diff --git a/app/ECS/systems/00_player.rb b/app/ECS/systems/00_player.rb index 9b03def..0a0492a 100644 --- a/app/ECS/systems/00_player.rb +++ b/app/ECS/systems/00_player.rb @@ -3,8 +3,8 @@ class Systems def self.run Components::PlayerControl.data.each do |id, data| if !(Components::Sprite.id & Entity.signatures[id]).zero? - Components::Sprite.data[id].y += 10 if $gtk.args.inputs.keyboard.key_held.send(data.north) - Components::Sprite.data[id].y -= 10 if $gtk.args.inputs.keyboard.key_held.send(data.south) + Components::Sprite.data[id].y -= 10 if $gtk.args.inputs.keyboard.key_held.send(data.north) + Components::Sprite.data[id].y += 10 if $gtk.args.inputs.keyboard.key_held.send(data.south) Components::Sprite.data[id].x += 10 if $gtk.args.inputs.keyboard.key_held.send(data.east) Components::Sprite.data[id].x -= 10 if $gtk.args.inputs.keyboard.key_held.send(data.west) end diff --git a/app/ECS/systems/99_render.rb b/app/ECS/systems/99_render.rb index 37b562a..a2f697b 100644 --- a/app/ECS/systems/99_render.rb +++ b/app/ECS/systems/99_render.rb @@ -3,24 +3,27 @@ class Systems def self.run Components::Renderable.data.sort_by { |v| v[1].z }.each do |key, data| if !(Components::Sprite.id & Entity.signatures[key]).zero? - #Components::Based.data[key].x += 2 $gtk.args.outputs.sprites << Components::Sprite.data[key].set elsif !(Components::Label.id & Entity.signatures[key]).zero? $gtk.args.outputs.labels << Components::Label.data[key].set elsif !(Components::Map.id & Entity.signatures[key]).zero? - #puts Components::Map.data[key].json.inspect Components::Map.data[key].json['layers'].each do |layer| layer['chunks'].each do |chunk| chunk['data'].each_slice(chunk['width']).with_index do |row, row_index| row.each_with_index do |tile, column_index| unless tile.zero? - temp = Helper.get_tile(json_name: 'tileset_Room_Builder_16x16', tile_index: tile) - temp[:x] = Components::Map.data[key].x + (Components::Map.data[key].tilewidth * column_index) + chunk['x'] - temp[:y] = Components::Map.data[key].y - (Components::Map.data[key].tileheight * (row_index + 1)) - chunk['y'] #REVERSED - temp[:w] = Components::Map.data[key].tilewidth - temp[:h] = Components::Map.data[key].tileheight + iter = 0 + loop do + tile = Helper.get_tile(json_name: Components::Map.data[key].json['tilesets'][iter]['source'].split('/').last.delete('\\').delete_suffix('.tsx'), tile_index: tile) + break if tile.is_a?(Hash) + raise Exception.new "#{Components::Map.data[key].json['json_name']} not valid map, exceeded tile range" if (iter += 1) > layer['chunks'].count + end + tile[:x] = Components::Map.data[key].x + (Components::Map.data[key].tilewidth * column_index) + chunk['x'] + tile[:y] = Components::Map.data[key].y + (Components::Map.data[key].tileheight * (row_index)) + chunk['y'] + tile[:w] = Components::Map.data[key].tilewidth + tile[:h] = Components::Map.data[key].tileheight #puts60 temp.inspect - $gtk.args.outputs.sprites << temp + $gtk.args.outputs.sprites << tile end end end -- cgit v1.2.3