diff options
| author | realtradam <[email protected]> | 2022-01-22 06:43:20 -0500 |
|---|---|---|
| committer | realtradam <[email protected]> | 2022-01-22 06:43:20 -0500 |
| commit | 943bffc40953b95e9d07aeda0b4b87ac7be848fd (patch) | |
| tree | b255b8ead8b3892d47cb25d45f82df3a5a3c1a1e /src | |
| parent | 23c419f485532689b41fdbf67b5aa3eb4ae05b70 (diff) | |
| download | orc-arena-of-time-943bffc40953b95e9d07aeda0b4b87ac7be848fd.tar.gz orc-arena-of-time-943bffc40953b95e9d07aeda0b4b87ac7be848fd.zip | |
init
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/player.rb | 21 | ||||
| -rw-r--r-- | src/systems/systems.rb | 47 |
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, +) |
