summaryrefslogtreecommitdiffhomepage
path: root/app/ECS/systems
diff options
context:
space:
mode:
Diffstat (limited to 'app/ECS/systems')
-rw-r--r--app/ECS/systems/00_player.rb21
-rw-r--r--app/ECS/systems/99_render.rb37
2 files changed, 36 insertions, 22 deletions
diff --git a/app/ECS/systems/00_player.rb b/app/ECS/systems/00_player.rb
index a78137a..9b03def 100644
--- a/app/ECS/systems/00_player.rb
+++ b/app/ECS/systems/00_player.rb
@@ -1,15 +1,12 @@
-class ECS
- class Systems
- class Player
- def self.run
- ECS::Components::PlayerControl.data.each do |id, data|
- if !(ECS::Components::Renderable.id & ECS::Entity.signatures[id]).zero?
- ECS::Components::Sprite.data[id].y += 10 if $gtk.args.inputs.keyboard.key_held.send(data.north)
- ECS::Components::Sprite.data[id].y -= 10 if $gtk.args.inputs.keyboard.key_held.send(data.south)
- ECS::Components::Sprite.data[id].x += 10 if $gtk.args.inputs.keyboard.key_held.send(data.east)
- ECS::Components::Sprite.data[id].x -= 10 if $gtk.args.inputs.keyboard.key_held.send(data.west)
- #$gtk.args.outputs.labels << ECS::Components::Label.data[id].vars
- end
+class Systems
+ class Player
+ 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].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
end
end
diff --git a/app/ECS/systems/99_render.rb b/app/ECS/systems/99_render.rb
index 0751bc2..37b562a 100644
--- a/app/ECS/systems/99_render.rb
+++ b/app/ECS/systems/99_render.rb
@@ -1,13 +1,30 @@
-class ECS
- class Systems
- class Render
- def self.run
- ECS::Components::Renderable.data.sort_by { |v| v[1].z }.each do |key, data|
- if !(ECS::Components::Sprite.id & ECS::Entity.signatures[key]).zero?
- #ECS::Components::Based.data[key].x += 2
- $gtk.args.outputs.sprites << ECS::Components::Sprite.data[key].set
- elsif !(ECS::Components::Label.id & ECS::Entity.signatures[key]).zero?
- $gtk.args.outputs.labels << ECS::Components::Label.data[key].set
+class Systems
+ class Render
+ 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
+ #puts60 temp.inspect
+ $gtk.args.outputs.sprites << temp
+ end
+ end
+ end
+ end
end
end
end