From df014f61c2a927df0c2c625b79f2cc8e4df30db2 Mon Sep 17 00:00:00 2001 From: _Tradam Date: Wed, 26 May 2021 02:13:07 -0400 Subject: Revert "split off FelFlame" --- .gitmodules | 3 -- app/dragonruby | 1 + app/lib/FelFlame | 1 - app/lib/component_manager.rb | 20 +++++++++ app/lib/components/00_renderable.rb | 16 +++++++ app/lib/components/01_sprite.rb | 44 +++++++++++++++++++ app/lib/components/02_label.rb | 27 ++++++++++++ app/lib/components/03_player_control.rb | 21 +++++++++ app/lib/components/04_map.rb | 21 +++++++++ app/lib/components/05_interactable.rb | 16 +++++++ app/lib/components/06_collidable.rb | 22 ++++++++++ app/lib/components/07_battle.rb | 4 ++ app/lib/components/07_indoor.rb | 4 ++ app/lib/components/07_overworld.rb | 16 +++++++ app/lib/components/debug_singleton.rb | 13 ++++++ app/lib/entity_manager.rb | 63 +++++++++++++++++++++++++++ app/lib/helpers/00_tileset.rb | 49 +++++++++++++++++++++ app/lib/helpers/01_component.rb | 76 +++++++++++++++++++++++++++++++++ app/lib/signatures.rb | 43 +++++++++++++++++++ app/lib/system_manager.rb | 5 +++ app/lib/systems/00_update_levels.rb | 34 +++++++++++++++ app/lib/systems/10_player.rb | 41 ++++++++++++++++++ app/lib/systems/99_render.rb | 37 ++++++++++++++++ app/lib/test.rb | 18 ++++++++ app/main.rb | 20 ++++----- app/tick.rb | 47 ++++++++++---------- 26 files changed, 624 insertions(+), 38 deletions(-) create mode 120000 app/dragonruby delete mode 160000 app/lib/FelFlame create mode 100644 app/lib/component_manager.rb create mode 100644 app/lib/components/00_renderable.rb create mode 100644 app/lib/components/01_sprite.rb create mode 100644 app/lib/components/02_label.rb create mode 100644 app/lib/components/03_player_control.rb create mode 100644 app/lib/components/04_map.rb create mode 100644 app/lib/components/05_interactable.rb create mode 100644 app/lib/components/06_collidable.rb create mode 100644 app/lib/components/07_battle.rb create mode 100644 app/lib/components/07_indoor.rb create mode 100644 app/lib/components/07_overworld.rb create mode 100644 app/lib/components/debug_singleton.rb create mode 100644 app/lib/entity_manager.rb create mode 100644 app/lib/helpers/00_tileset.rb create mode 100644 app/lib/helpers/01_component.rb create mode 100644 app/lib/signatures.rb create mode 100644 app/lib/system_manager.rb create mode 100644 app/lib/systems/00_update_levels.rb create mode 100644 app/lib/systems/10_player.rb create mode 100644 app/lib/systems/99_render.rb create mode 100644 app/lib/test.rb diff --git a/.gitmodules b/.gitmodules index b83ffa3..e83e67c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ [submodule "sprites/non-free"] path = assets/non-free url = gitea@git.tradam.fyi:tradam/pixel-assets-nonfree.git -[submodule "app/lib/FelFlame"] - path = app/lib/FelFlame - url = gitea@git.tradam.fyi:tradam/FelFlame.git diff --git a/app/dragonruby b/app/dragonruby new file mode 120000 index 0000000..2e5d301 --- /dev/null +++ b/app/dragonruby @@ -0,0 +1 @@ +/home/tradam/Documents/Ruby/dragon/dragonruby-linux-amd64/dragonruby \ No newline at end of file diff --git a/app/lib/FelFlame b/app/lib/FelFlame deleted file mode 160000 index 7bec71d..0000000 --- a/app/lib/FelFlame +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7bec71db2680e0503f39c31047f5f90ca89433df diff --git a/app/lib/component_manager.rb b/app/lib/component_manager.rb new file mode 100644 index 0000000..f5261a2 --- /dev/null +++ b/app/lib/component_manager.rb @@ -0,0 +1,20 @@ +#require 'app/ECS/base_component.rb' + +#require 'app/ECS/components/00_test_component.rb' +#require 'app/ECS/components/01_based.rb' + +class Components + class < 1 + return {} + end + + json_tiles = self.get_json_tiles(json_name) + raise Exception.new "Error, json file not a tileset" unless json_tiles['type'] == 'tileset' + return tile_index - json_tiles['tilecount'] if tile_index > json_tiles['tilecount'] + source_height_tiles = (tile_index.to_i / json_tiles['columns'].to_i).to_i# * json_tiles['tileheight'] + { w: json_tiles['tilewidth'], + h: json_tiles['tileheight'], + path: json_tiles['image'].split('mygame/').last.delete('\\'), + source_x: [((tile_index % json_tiles['columns']) - 1) * json_tiles['tilewidth'], 0].max, + # source_y gets special treatment + source_y: [json_tiles['imageheight'] - ((source_height_tiles + 1) * json_tiles['tileheight']), 0].max, + source_w: json_tiles['tilewidth'], + source_h: json_tiles['tileheight'] } + end + end +end diff --git a/app/lib/helpers/01_component.rb b/app/lib/helpers/01_component.rb new file mode 100644 index 0000000..4937ec9 --- /dev/null +++ b/app/lib/helpers/01_component.rb @@ -0,0 +1,76 @@ +class Helper + class BaseComponent + class <= Components::Map.data[key].json['tilesets'].count + end + unless tile.empty? + 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 + $gtk.args.outputs.sprites << tile + end + end + end + end + end + end + end + end + end + end +end diff --git a/app/lib/test.rb b/app/lib/test.rb new file mode 100644 index 0000000..13fd401 --- /dev/null +++ b/app/lib/test.rb @@ -0,0 +1,18 @@ +require_relative './entity_manager.rb' +require_relative './component_manager.rb' +require_relative './system_manager.rb' + +move = '0001'.to_i(2) +base = '0010'.to_i(2) +both = '0011'.to_i(2) +Entity.new(move) +Entity.new(base) +Entity.new(both) + +3.times do + Systems.constants.each do |constant| + puts "|----#{constant.to_s.upcase}----|" + Systems::const_get(constant).run + end + #ECS::Entity.destroy_entity(ECS::Entity.all.last.id) unless ECS::Entity.all.empty? +end diff --git a/app/main.rb b/app/main.rb index 50cd976..a05c9da 100644 --- a/app/main.rb +++ b/app/main.rb @@ -3,23 +3,23 @@ # replaces by require of each individual ruby file def require_all dir `ls #{dir}`.each_line do |file| - require "#{dir}/#{file.strip}" + require "app/#{dir}/#{file.strip}" end end -require 'mygame/app/dragonruby-game-toolkit-contrib/dragon/grid.rb' +require 'app/dragonruby-game-toolkit-contrib/dragon/grid.rb' -require_all 'mygame/app/lib/FelFlame/helpers' +require_all 'lib/helpers' -require 'mygame/app/lib/FelFlame/signatures.rb' +require 'app/lib/signatures.rb' -require 'mygame/app/lib/FelFlame/entity_manager.rb' +require 'app/lib/entity_manager.rb' -require 'mygame/app/lib/FelFlame/component_manager.rb' -require_all 'mygame/app/lib/FelFlame/components' +require 'app/lib/component_manager.rb' +require_all 'lib/components' -require 'mygame/app/lib/FelFlame/system_manager.rb' -require_all 'mygame/app/lib/FelFlame/systems' +require 'app/lib/system_manager.rb' +require_all 'lib/systems' -require 'mygame/app/tick.rb' +require 'app/tick.rb' diff --git a/app/tick.rb b/app/tick.rb index 509d550..a4b2153 100644 --- a/app/tick.rb +++ b/app/tick.rb @@ -1,34 +1,33 @@ $gtk.args.grid.origin_top_left! Components::DebugSingleton.data = true -def sample - @thing0 = Entity.new(ID.sprite, - ID.renderable, - ID.player_control, - ID.overworld) - Components::Sprite.data[@thing0.id].set(x: 256, y: 128, w: 64, h: 64, path: 'dragonruby.png') - Components::Renderable.data[@thing0.id].z = 10 - Components::Overworld.data[@thing0.id].set(x: 4, y: 2) +@thing0 = Entity.new(ID.sprite, + ID.renderable, + ID.player_control, + ID.overworld) +Components::Sprite.data[@thing0.id].set(x: 256, y: 128, w: 64, h: 64, path: 'dragonruby.png') +Components::Renderable.data[@thing0.id].z = 10 +Components::Overworld.data[@thing0.id].set(x: 4, y: 2) - #@thing1 = Entity.new(ID.label, ID.renderable) +#@thing1 = Entity.new(ID.label, ID.renderable) - @thing2 = Entity.new(ID.label, ID.renderable) - Components::Label.data[@thing2.id].set(x: 740, y: 520, - text: 'It Werks', - size_enum: 5, - alignment_enum: 1) - Components::Renderable.data[@thing2.id].z = 5 +@thing2 = Entity.new(ID.label, ID.renderable) +Components::Label.data[@thing2.id].set(x: 740, y: 520, + text: 'It Werks', + size_enum: 5, + alignment_enum: 1) +Components::Renderable.data[@thing2.id].z = 5 + +@map2 = Entity.new(ID.map, ID.renderable, ID.overworld) +Components::Map.data[@map2.id].set(x: 0, + y: 0, + tilewidth: 64, + tileheight: 64, + json_name: 'map_test2') +Components::Renderable.data[@map2.id].z = 4 - @map2 = Entity.new(ID.map, ID.renderable, ID.overworld) - Components::Map.data[@map2.id].set(x: 0, - y: 0, - tilewidth: 64, - tileheight: 64, - json_name: 'map_test2') - Components::Renderable.data[@map2.id].z = 4 -end -sample +#Helper.get_json_tiles('map_test') @x = 0 def tick args @x += 1 -- cgit v1.2.3