summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2022-01-22 06:43:20 -0500
committerrealtradam <[email protected]>2022-01-22 06:43:20 -0500
commit943bffc40953b95e9d07aeda0b4b87ac7be848fd (patch)
treeb255b8ead8b3892d47cb25d45f82df3a5a3c1a1e /src
parent23c419f485532689b41fdbf67b5aa3eb4ae05b70 (diff)
downloadorc-arena-of-time-943bffc40953b95e9d07aeda0b4b87ac7be848fd.tar.gz
orc-arena-of-time-943bffc40953b95e9d07aeda0b4b87ac7be848fd.zip
init
Diffstat (limited to 'src')
-rw-r--r--src/components/player.rb21
-rw-r--r--src/systems/systems.rb47
2 files changed, 68 insertions, 0 deletions
diff --git a/src/components/player.rb b/src/components/player.rb
new file mode 100644
index 0000000..1a6e9b6
--- /dev/null
+++ b/src/components/player.rb
@@ -0,0 +1,21 @@
+FECS::Cmp.new('Player')
+FECS::Cmp.new('Velocity', x: 0, y: 0)
+FECS::Cmp.new('Position', x: 0, y: 0)
+FECS::Cmp.new('Sprite',
+ :texture,
+ :origin,
+ :source_rect,
+ :dest_rect,
+ :rotation)
+FECS::Cmp.new('Hp', value: 0)
+
+@player = FECS::Ent.new(FECS::Cmp::Player.new,
+ FECS::Cmp::Position.new,
+ FECS::Cmp::Velocity.new,
+ FECS::Cmp::Sprite.new(
+ texture: Rl::Texture.new('./assets/lancelot_.png'),
+ source_rect: Rl::Rectangle.new(0,0,24,24),
+ dest_rect: Rl::Rectangle.new(0,0,48,48)))
+
+
+
diff --git a/src/systems/systems.rb b/src/systems/systems.rb
new file mode 100644
index 0000000..6bcffa9
--- /dev/null
+++ b/src/systems/systems.rb
@@ -0,0 +1,47 @@
+FECS::Stg.add(FECS::Scn.new('Play'))
+
+FECS::Scn::Play.add(
+ FECS::Sys.new('PlayerInput') do
+ puts 'start player input'
+ ent = FECS::Cmp::Player.first.entity
+ velocity_component = ent.component[FECS::Cmp::Velocity]
+ velocity_component.x = 0
+ velocity_component.y = 0
+ velocity_component.y -= 10 if Rl.key_down? 87
+ velocity_component.y += 10 if Rl.key_down? 83
+ velocity_component.x -= 10 if Rl.key_down? 65
+ velocity_component.x += 10 if Rl.key_down? 68
+ puts 'end player input'
+ end,
+ FECS::Sys.new('Movement') do
+ FECS::Cmp::Velocity.each do |velocity_component|
+ position_component = velocity_component.entity.component[FECS::Cmp::Position]
+ position_component.x += velocity_component.x
+ position_component.y += velocity_component.y
+ end
+ end,
+ FECS::Sys.new('TakePosition') do
+ FECS::Cmp::Position.each do |position_cmp|
+ sprite = position_cmp.entity.component[FECS::Cmp::Sprite]
+ if sprite
+ sprite.dest_rect.x = position_cmp.x
+ sprite.dest_rect.y = position_cmp.y
+ end
+ end
+ end,
+ FECS::Sys.new('Render') do
+ FECS::Cmp::Sprite.each do |sprite_cmp|
+ #Rl.draw_texture_pro(texture: sprite_cmp.texture,
+ # origin: sprite_cmp.origin_rect,
+ # source_rect: sprite_cmp.source_rect,
+ # dest_rect: sprite_cmp.dest_rect)
+ end
+ end,
+)
+
+FelECS::Order.sort(
+ FECS::Sys::PlayerInput,
+ FECS::Sys::Movement,
+ FECS::Sys::TakePosition,
+ FECS::Sys::Render,
+)