summaryrefslogtreecommitdiffhomepage
path: root/deprecated
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2021-06-12 03:15:59 -0400
committerrealtradam <[email protected]>2021-06-12 03:15:59 -0400
commit795cb85e284d6adc83d8a8770e1e2406322f4034 (patch)
tree1fe065f7f5ecfaf9bc34638cc5a5dd7fe848eb3e /deprecated
parent6e9ff64fec30779eb894a617af95ce7815e3d1ca (diff)
downloadFelECS-795cb85e284d6adc83d8a8770e1e2406322f4034.tar.gz
FelECS-795cb85e284d6adc83d8a8770e1e2406322f4034.zip
file cleanup
Diffstat (limited to 'deprecated')
-rw-r--r--deprecated/components/00_renderable.rb19
-rw-r--r--deprecated/components/01_sprite.rb57
-rw-r--r--deprecated/components/02_label.rb32
-rw-r--r--deprecated/components/03_player_control.rb26
-rw-r--r--deprecated/components/04_map.rb21
-rw-r--r--deprecated/components/05_interactable.rb16
-rw-r--r--deprecated/components/06_collidable.rb22
-rw-r--r--deprecated/components/07_battle.rb4
-rw-r--r--deprecated/components/07_indoor.rb4
-rw-r--r--deprecated/components/07_overworld.rb16
-rw-r--r--deprecated/components/debug_singleton.rb13
-rw-r--r--deprecated/helpers/00_tileset.rb56
-rw-r--r--deprecated/helpers/01_component.rb74
-rw-r--r--deprecated/systems/00_update_levels.rb34
-rw-r--r--deprecated/systems/10_player.rb41
-rw-r--r--deprecated/systems/99_render.rb37
16 files changed, 472 insertions, 0 deletions
diff --git a/deprecated/components/00_renderable.rb b/deprecated/components/00_renderable.rb
new file mode 100644
index 0000000..1d34fbb
--- /dev/null
+++ b/deprecated/components/00_renderable.rb
@@ -0,0 +1,19 @@
+FelFlame::Components.new('Renderable', z: 0)
+=begin
+class Components
+ # If an entity can be rendered on screen
+ class Renderable < Helper::BaseComponent
+ attr_accessor :z
+
+ def initialize
+ @z = 0
+ end
+
+ def set(**opts)
+ opts.each do |key, value|
+ self.send "#{key}=", value
+ end
+ end
+ end
+end
+=end
diff --git a/deprecated/components/01_sprite.rb b/deprecated/components/01_sprite.rb
new file mode 100644
index 0000000..c02a51b
--- /dev/null
+++ b/deprecated/components/01_sprite.rb
@@ -0,0 +1,57 @@
+
+FelFlame::Components.new('Sprite', :x, :y, :w, :h, :path, :angle, :a, :r, :g, :b,
+ :source_x, :source_y, :source_w, :source_h,
+ :tile_x, :tile_y, :tile_w, :tile_h,
+ :flip_horizontally, :flip_vertically,
+ :angle_anchor_x, :angle_anchor_y, primative_marker: :sprite)
+
+#Components::Sprite.define_method('primative_marker') do
+# :sprite
+#end
+
+=begin
+class Components
+ # If an entity can be rendered on screen
+ class Sprite < Helper::BaseComponent
+
+ attr_accessor :x, :y, :w, :h, :path, :angle, :a, :r, :g, :b,
+ :source_x, :source_y, :source_w, :source_h,
+ :tile_x, :tile_y, :tile_w, :tile_h,
+ :flip_horizontally, :flip_vertically,
+ :angle_anchor_x, :angle_anchor_y
+
+ def set(x: @x, y: @y, w: @w, h: @h, path: @path, angle: @angle, a: @a, r: @r, g: @g, b: @b,
+ source_x: @source_x, source_y: @source_y, source_w: @source_w, source_h: @source_h,
+ tile_x: @tile_x, tile_y: @tile_y, tile_w: @tile_w, tile_h: @tile_h,
+ flip_horizontally: @flip_horizontally, flip_vertically: @flip_vertically,
+ angle_anchor_x: @angle_anchor_x, angle_anchor_y: @angle_anchor_y)
+ {x: @x = x,
+ y: @y = y,
+ w: @w = w,
+ h: @h = h,
+ path: @path = path,
+ angle: @angle = angle,
+ a: @a = a,
+ r: @r = r,
+ g: @g = g,
+ b: @b = b,
+ source_x: @source_x = source_x,
+ source_y: @source_y = source_y,
+ source_w: @source_w = source_w,
+ source_h: @source_h = source_h,
+ tile_x: @tile_x = tile_x,
+ tile_y: @tile_y = tile_y,
+ tile_w: @tile_w = tile_w,
+ tile_h: @tile_h = tile_h,
+ flip_horizontally: @flip_horizontally = flip_horizontally,
+ flip_vertically: @flip_vertically = flip_vertically,
+ angle_anchor_x: @angle_anchor_x = angle_anchor_x,
+ angle_anchor_y: @angle_anchor_y = angle_anchor_y}
+ end
+
+ def primative_marker
+ :sprite
+ end
+ end
+end
+=end
diff --git a/deprecated/components/02_label.rb b/deprecated/components/02_label.rb
new file mode 100644
index 0000000..f73b12c
--- /dev/null
+++ b/deprecated/components/02_label.rb
@@ -0,0 +1,32 @@
+
+FelFlame::Components.new :Label, :x, :y, :text, :size_enum, :alignment_enum,
+ :a, :r, :g, :b, :font, :vertical_alignment_enum, primative_marker: :label
+=begin
+class Components
+ # A dragonruby label wrapper
+ class Label < Helper::BaseComponent
+
+ attr_accessor :x, :y, :text, :size_enum, :alignment_enum,
+ :a, :r, :g, :b, :font, :vertical_alignment_enum
+
+ def set(x: @x, y: @y, text: @text, size_enum: @size_enum, alignment_enum: @alignment_enum,
+ a: @a, r: @r, g: @g, b: @b, font: @font, vertical_alignment_enum: @vertical_alignment_enum)
+ {x: @x = x,
+ y: @y = y,
+ text: @text = text,
+ size_enum: @size_enum = size_enum,
+ alignment_enum: @alignment_enum = alignment_enum,
+ r: @r = r,
+ g: @g = g,
+ b: @b = b,
+ a: @a = a,
+ font: @font = font,
+ vertical_alignment_enum: @vertical_alignment_enum = vertical_alignment_enum }
+ end
+
+ def primative_marker
+ :label
+ end
+ end
+end
+end
diff --git a/deprecated/components/03_player_control.rb b/deprecated/components/03_player_control.rb
new file mode 100644
index 0000000..f48b155
--- /dev/null
+++ b/deprecated/components/03_player_control.rb
@@ -0,0 +1,26 @@
+
+FelFlame::Components.new :PlayerControl, north: 'up', south: 'down', east: 'right',
+ west: 'left', interact: 'space', menu: 'enter'
+=begin
+class Components
+ # Gives control(keyboard or otherwise) over an object
+ class PlayerControl < Helper::BaseComponent
+ attr_accessor :north, :south, :east, :west, :interact, :menu
+
+ def initialize
+ @north = 'up'
+ @south = 'down'
+ @east = 'right'
+ @west = 'left'
+ @interact = 'space'
+ @menu = 'enter'
+ end
+
+ def set(**opts)
+ opts.each do |key, value|
+ send "#{key}=", value
+ end
+ end
+ end
+end
+=end
diff --git a/deprecated/components/04_map.rb b/deprecated/components/04_map.rb
new file mode 100644
index 0000000..7700e9f
--- /dev/null
+++ b/deprecated/components/04_map.rb
@@ -0,0 +1,21 @@
+class Components
+ # dragonruby label wrapper
+ class Map < Helper::BaseComponent
+
+ attr_accessor :json_name, :json, :x, :y, :tilewidth, :tileheight, :a, :r, :g, :b
+
+ def set(json_name: @json_name, x: @x, y: @y, tilewidth: @tilewidth,
+ tileheight: @tileheight, a: @a, r: @r, g: @g, b: @b)
+ { json_name: @json_name = json_name,
+ json: @json = Helper.get_json_tiles(json_name),
+ x: @x = x,
+ y: @y = y,
+ tilewidth: @tilewidth = tilewidth,
+ tileheight: @tileheight = tileheight,
+ r: @r = r,
+ g: @g = g,
+ b: @b = b,
+ a: @a = a }
+ end
+ end
+end
diff --git a/deprecated/components/05_interactable.rb b/deprecated/components/05_interactable.rb
new file mode 100644
index 0000000..636a216
--- /dev/null
+++ b/deprecated/components/05_interactable.rb
@@ -0,0 +1,16 @@
+class Components
+ # If an entity can be rendered on screen
+ class Interactable < Helper::BaseComponent
+ attr_accessor :z
+
+ def initialize
+ @z = z
+ end
+
+ def set(**opts)
+ opts.each do |key, value|
+ self.send "#{key}=", value
+ end
+ end
+ end
+end
diff --git a/deprecated/components/06_collidable.rb b/deprecated/components/06_collidable.rb
new file mode 100644
index 0000000..76ce51e
--- /dev/null
+++ b/deprecated/components/06_collidable.rb
@@ -0,0 +1,22 @@
+class Components
+ # If an entity can be rendered on screen
+ class Collidable < Helper::BaseComponent
+ class <<self
+ def add(entity_id)
+ super(entity_id)
+ #add to grid?
+ end
+ end
+ attr_accessor :grid
+
+ def initialize
+ @grid = [[]]
+ end
+
+ def set(**opts)
+ opts.each do |key, value|
+ self.send "#{key}=", value
+ end
+ end
+ end
+end
diff --git a/deprecated/components/07_battle.rb b/deprecated/components/07_battle.rb
new file mode 100644
index 0000000..b4ef622
--- /dev/null
+++ b/deprecated/components/07_battle.rb
@@ -0,0 +1,4 @@
+class Components
+ class Battle < Helper::Level
+ end
+end
diff --git a/deprecated/components/07_indoor.rb b/deprecated/components/07_indoor.rb
new file mode 100644
index 0000000..e409da8
--- /dev/null
+++ b/deprecated/components/07_indoor.rb
@@ -0,0 +1,4 @@
+class Components
+ class Indoor < Helper::Level
+ end
+end
diff --git a/deprecated/components/07_overworld.rb b/deprecated/components/07_overworld.rb
new file mode 100644
index 0000000..55ab38a
--- /dev/null
+++ b/deprecated/components/07_overworld.rb
@@ -0,0 +1,16 @@
+class Components
+ class Overworld < Helper::Level
+ attr_accessor :x, :y
+
+ def initialize
+ @x = 0
+ @y = 0
+ end
+
+ def set(**opts)
+ opts.each do |key, value|
+ self.send "#{key}=", value
+ end
+ end
+ end
+end
diff --git a/deprecated/components/debug_singleton.rb b/deprecated/components/debug_singleton.rb
new file mode 100644
index 0000000..f298172
--- /dev/null
+++ b/deprecated/components/debug_singleton.rb
@@ -0,0 +1,13 @@
+class Components
+ # If an entity can be rendered on screen
+ class DebugSingleton
+ class <<self
+ @data = false
+ attr_accessor :data
+
+ def id
+ 0
+ end
+ end
+ end
+end
diff --git a/deprecated/helpers/00_tileset.rb b/deprecated/helpers/00_tileset.rb
new file mode 100644
index 0000000..c4293cb
--- /dev/null
+++ b/deprecated/helpers/00_tileset.rb
@@ -0,0 +1,56 @@
+# Coverage Ignored because the functionality of this
+# code will not be used for the core of FelFlame.
+# It will most likely be released as a seperate package
+# The code will most likely be kept here until it
+# eventually will be migrated to a new git repo
+# :nocov:
+class Helper
+ # Returns a loaded map and its dependecies(images,json)
+ # If any are missing then it will load them from files
+
+ @json_data = {}
+ class <<self
+ attr_accessor :json_data
+
+ def get_json_tiles(json_name, hitbox: false)
+ unless hitbox
+ return nil if json_name == 'hitbox' && !Components::DebugSingleton.data
+ end
+
+ if self.json_data[json_name].nil?
+ self.json_data[json_name] = $gtk.parse_json_file "assets/json/#{json_name}.json"
+ raise Exception.new "#{json_name} is null and not loaded. Cannot get json tile" if self.json_data[json_name].nil?
+
+ if self.json_data[json_name]['type'] == 'map' #json_name.split("_").first == 'map'
+ self.json_data[json_name]['tilesets'].each do |tileset|
+ tileset = Helper.get_json_tiles(tileset['source'].split('/').last.delete_suffix('.tsx'))
+ # download tileset here
+ # $gtk.args.gtk.http_get 'https://mysite.net/#{tileset['name']}.png'
+ end
+ end
+ end
+ self.json_data[json_name]
+ end
+
+ def get_tile(json_name:, tile_index:)
+ if json_name == 'hitbox' && !Components::DebugSingleton.data
+ return tile_index - 1 if tile_index > 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
+# :nocov:
diff --git a/deprecated/helpers/01_component.rb b/deprecated/helpers/01_component.rb
new file mode 100644
index 0000000..2065d0c
--- /dev/null
+++ b/deprecated/helpers/01_component.rb
@@ -0,0 +1,74 @@
+class FelFlame
+ class Helper
+
+=begin
+ # Unused:
+ class Level < FelFlame::Helper::ComponentManager
+ class <<self
+ def data
+ @data ||= { add: [], remove: [], grid: FelFlame::Helper::Array2D.new }
+ end
+
+ def add(entity_id)
+ super
+ data[:add].push entity_id
+ end
+
+ def remove(entity_id)
+ data[:remove].push entity_id
+ super
+ end
+ end
+ end
+=end
+=begin
+ class Array2D < Array
+ def [](val)
+ unless val.nil?
+ return self[val] = [] if super.nil?
+ end
+ super
+ end
+ end
+=end
+=begin
+ class ArrayOfHashes < Array
+ def [](val)
+ unless val.nil?
+ return self[val] = {} if super.nil?
+ end
+ super
+ end
+ end
+=end
+
+=begin
+ module ComponentHelper
+ class <<self
+ def up? char
+ char == char.upcase
+ end
+
+ def down? char
+ char == char.downcase
+ end
+
+ def underscore(input)
+ output = input[0].downcase
+ (1...(input.length - 1)).each do |iter|
+ if down?(input[iter]) && up?(input[iter + 1])
+ output += "#{input[iter].downcase}_"
+ elsif up?(input[iter - 1]) && up?(input[iter]) && down?(input[iter + 1])
+ output += "_#{input[iter].downcase}"
+ else
+ output += input[iter].downcase
+ end
+ end
+ output += input[-1].downcase unless input.length == 1
+ output
+ end
+ end
+ end
+=end
+ end
+end
diff --git a/deprecated/systems/00_update_levels.rb b/deprecated/systems/00_update_levels.rb
new file mode 100644
index 0000000..6f3a056
--- /dev/null
+++ b/deprecated/systems/00_update_levels.rb
@@ -0,0 +1,34 @@
+class Systems
+ class UpdateLevels
+ @co = Components::Overworld
+ def self.run
+ @co.data[:add].each do |id|
+ @co.data[:add].delete(id)
+ if !(Components::Sprite.id & Entity.signatures[id]).zero?
+ @co.data[:grid][@co.data[id].x][@co.data[id].y] = {} if @co.data[:grid][@co.data[id].x][@co.data[id].y].nil?
+ #@co.data[:grid][@co.data[id].x][@co.data[id].y].merge!({ player: true })
+ puts @co.data[:grid][@co.data[id].x][@co.data[id].y].inspect
+ elsif !(Components::Map.id & Entity.signatures[id]).zero?
+ if Components::Map.data[id].json['tilesets'].last['source'].split('/').last.delete('\\').delete_suffix('.tsx') == 'hitbox'
+ Components::Map.data[id].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|
+ if tile.to_i == Components::Map.data[id].json['tilesets'].last['firstgid'].to_i
+ @co.data[:grid][column_index][row_index] = {} if @co.data[:grid][column_index][row_index].nil?
+ @co.data[:grid][column_index][row_index].merge!({ hitbox: true })
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ puts @co.data[:grid]
+ end
+ Components::Overworld.data[:remove].each do |id|
+ Components::Overworld.data[:remove].delete(id)
+ end
+ end
+ end
+end
diff --git a/deprecated/systems/10_player.rb b/deprecated/systems/10_player.rb
new file mode 100644
index 0000000..307731a
--- /dev/null
+++ b/deprecated/systems/10_player.rb
@@ -0,0 +1,41 @@
+class Systems
+ class Player
+ @co = Components::Overworld
+ def self.run
+ Components::PlayerControl.data.each do |id, data|
+ puts6 "Right: #{@co.data[:grid][@co.data[id].x+1][@co.data[id].y]}"
+ puts6 "Left #{@co.data[:grid][@co.data[id].x-1][@co.data[id].y]}"
+ puts6 "Down #{@co.data[:grid][@co.data[id].x][@co.data[id].y+1]}"
+ puts6 "Up #{@co.data[:grid][@co.data[id].x][@co.data[id].y-1]}"
+ #puts6 @co.data[:grid][@co.data[id].x + 1][@co.data[id].y][:hitbox].nil?
+
+ if !(Components::Sprite.id & Entity.signatures[id]).zero?
+ if $gtk.args.inputs.keyboard.key_down.send(data.north) &&\
+ (@co.data[:grid][@co.data[id].x][@co.data[id].y - 1].nil? ||\
+ @co.data[:grid][@co.data[id].x][@co.data[id].y - 1][:hitbox].nil?)
+ Components::Sprite.data[id].y -= 64
+ @co.data[id].y -= 1
+ elsif $gtk.args.inputs.keyboard.key_down.send(data.south) &&\
+ (@co.data[:grid][@co.data[id].x][@co.data[id].y + 1].nil? ||\
+ @co.data[:grid][@co.data[id].x][@co.data[id].y + 1][:hitbox].nil?)
+ Components::Sprite.data[id].y += 64
+ @co.data[id].y += 1
+ elsif $gtk.args.inputs.keyboard.key_down.send(data.east) &&\
+ (@co.data[:grid][@co.data[id].x + 1][@co.data[id].y].nil? ||\
+ @co.data[:grid][@co.data[id].x + 1][@co.data[id].y][:hitbox].nil?)
+ Components::Sprite.data[id].x += 64
+ @co.data[id].x += 1
+ elsif $gtk.args.inputs.keyboard.key_down.send(data.west) &&\
+ (@co.data[:grid][@co.data[id].x - 1][@co.data[id].y].nil? || @co.data[:grid][@co.data[id].x - 1][@co.data[id].y][:hitbox].nil?)
+ Components::Sprite.data[id].x -= 64
+ @co.data[id].x -= 1
+ end
+ #Components::Sprite.data[id].y -= 64 if $gtk.args.inputs.keyboard.key_down.send(data.north)
+ #Components::Sprite.data[id].y += 64 if $gtk.args.inputs.keyboard.key_down.send(data.south)
+ #Components::Sprite.data[id].x += 64 if $gtk.args.inputs.keyboard.key_down.send(data.east)
+ #Components::Sprite.data[id].x -= 64 if $gtk.args.inputs.keyboard.key_down.send(data.west)
+ end
+ end
+ end
+ end
+end
diff --git a/deprecated/systems/99_render.rb b/deprecated/systems/99_render.rb
new file mode 100644
index 0000000..c71c6fc
--- /dev/null
+++ b/deprecated/systems/99_render.rb
@@ -0,0 +1,37 @@
+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?
+ $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?
+ 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?
+ 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) >= 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