diff options
| author | arngo <[email protected]> | 2022-01-23 02:11:54 -0500 |
|---|---|---|
| committer | arngo <[email protected]> | 2022-01-23 02:11:54 -0500 |
| commit | 3d141be357e0e3fb5bfd75b1f79e4e6a34e8ccb5 (patch) | |
| tree | 0f02fac13de4f6712a62b7065d5d4942c08b4a08 /src | |
| parent | 7a34805a0dbb1238c742263438f01408fcf3c7f0 (diff) | |
| download | orc-arena-of-time-3d141be357e0e3fb5bfd75b1f79e4e6a34e8ccb5.tar.gz orc-arena-of-time-3d141be357e0e3fb5bfd75b1f79e4e6a34e8ccb5.zip | |
rect -> rec, test drawing rectangles
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/player.rb | 34 | ||||
| -rw-r--r-- | src/helper.rb | 12 | ||||
| -rw-r--r-- | src/init.rb | 1 | ||||
| -rw-r--r-- | src/logic.rb | 38 | ||||
| -rw-r--r-- | src/systems/systems.rb | 90 |
5 files changed, 18 insertions, 157 deletions
diff --git a/src/components/player.rb b/src/components/player.rb deleted file mode 100644 index 3de1b7a..0000000 --- a/src/components/player.rb +++ /dev/null @@ -1,34 +0,0 @@ -FECS::Cmp.new('Player') -FECS::Cmp.new('Velocity', x: 0, y: 0) -FECS::Cmp.new('Position', x: 0, y: 0) -FECS::Cmp.new('Movement', deceleration: 3, acceleration: 8, max_speed: 15) -FECS::Cmp.new('Sprite', - :texture, - :origin, - :source_rect, - :dest_rect, - :rotation, - :tint) -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), - origin: Rl::Vector2.new(0,0), - tint: Rl::Color.new(255,255,255,255), - rotation: 0 - ), - FECS::Cmp::Movement.new( - deceleration: 1.1, - acceleration: 1.5, - max_speed: 900, - ), -) - - - diff --git a/src/helper.rb b/src/helper.rb index b925c12..2eddcfe 100644 --- a/src/helper.rb +++ b/src/helper.rb @@ -1,20 +1,16 @@ -# different states -# each state has a set of frames -# each state remembers what frame it was set it -# each frame has a rectangle for rendering, and a rectangle for a hitbox class Tileset attr_accessor :texture attr_writer :frames - def initialize(*source_rects, texture:) - source_rects.each do |rect| - self.frames.push rect + def initialize(*source_recs, texture:) + source_recs.each do |rec| + self.frames.push rec end self.texture = texture end - def rect + def rec self.frames[self.frame.to_i] end diff --git a/src/init.rb b/src/init.rb index 595e10d..26f9cca 100644 --- a/src/init.rb +++ b/src/init.rb @@ -4,3 +4,4 @@ Rl.init_audio_device if Rl.platform == 'web' WHITE = Rl::Color.new(255,255,255,255) BLACK = Rl::Color.new(0,0,0,255) +BLUE = Rl::Color.new(0,0,255,255) diff --git a/src/logic.rb b/src/logic.rb index e921988..fffcf7d 100644 --- a/src/logic.rb +++ b/src/logic.rb @@ -5,18 +5,18 @@ FECS::Cmp.new('Movement', deceleration: 3, acceleration: 8, max_speed: 15) FECS::Cmp.new('Sprite', :texture, :origin, - :source_rect, - :dest_rect, + :source_rec, + :dest_rec, :rotation, :tint) FECS::Cmp.new('Tileset', :origin, :tileset, - :dest_rect, + :dest_rec, :rotation, :tint) FECS::Cmp.new('Hitbox', - :rect, + :rec, offset_x: 0, offset_y: 0) FECS::Cmp.new('Hp', value: 0) @@ -32,17 +32,9 @@ end 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), - # origin: Rl::Vector2.new(0,0), - # tint: Rl::Color.new(255,255,255,255), - # rotation: 0 - #), FECS::Cmp::Tileset.new( tileset: lancelot, - dest_rect: Rl::Rectangle.new(0,0,48,48), + dest_rec: Rl::Rectangle.new(0,0,48,48), origin: Rl::Vector2.new(0,0), tint: Rl::Color.new(255,255,255,255), rotation: 0 @@ -53,7 +45,7 @@ end max_speed: 300, ), FECS::Cmp::Hitbox.new( - rect: Rl::Rectangle.new(0,0,16,20), + rec: Rl::Rectangle.new(0,0,16,20), offset_x: 4, offset_y: 4 ), @@ -138,7 +130,7 @@ FECS::Scn::Play.add( player_hitbox = player.component[FECS::Cmp::Hitbox] FECS::Cmp::Hitbox.each do |hitbox| next if player_hitbox.equal? hitbox - if player_hitbox.collide_with_rect? hitbox + if player_hitbox.collide_with_rec? hitbox end end end, @@ -178,24 +170,20 @@ FECS::Scn::Play.add( Rl.draw_text(text: "n vel: #{"%.1f" % vel}", x: 500, y: 120, font_size: 30, color: BLACK) end, FECS::Sys.new('Render') do - #FECS::Cmp::Tileset.each do |sprite_cmp| - # Rl.draw_texture_pro(texture: sprite_cmp.texture, - # origin: sprite_cmp.origin, - # source_rect: sprite_cmp.source_rect, - # dest_rect: sprite_cmp.dest_rect, - # tint: sprite_cmp.tint, - # rotation: sprite_cmp.rotation) - #end FECS::Cmp::Tileset.each do |sprite_cmp| Rl.draw_texture_pro(texture: sprite_cmp.tileset.texture, origin: sprite_cmp.origin, - source_rect: sprite_cmp.tileset.rect, - dest_rect: sprite_cmp.dest_rect, + source_rec: sprite_cmp.tileset.rec, + dest_rec: sprite_cmp.dest_rec, tint: sprite_cmp.tint, rotation: sprite_cmp.rotation) end end, FelECS::Sys.new('DebugRenderHitbox') do + FECS::Cmp::Hitbox.each do |hitbox| + hitbox.rec.draw(color: BLACK) + hitbox.rec.draw_lines(line_thick: 2, color: BLUE) + end end ) diff --git a/src/systems/systems.rb b/src/systems/systems.rb deleted file mode 100644 index 824856e..0000000 --- a/src/systems/systems.rb +++ /dev/null @@ -1,90 +0,0 @@ -FECS::Stg.add(FECS::Scn.new('Play')) - -FECS::Scn::Play.add( - FECS::Sys.new('PlayerInput') do - ent = FECS::Cmp::Player.first.entity - velocity_cmp = ent.component[FECS::Cmp::Velocity] - #velocity_cmp.x = 0 - #velocity_cmp.y = 0 - movement_cmp = ent.component[FECS::Cmp::Movement] - if Rl.key_down? 87 # UP W - velocity_cmp.y += movement_cmp.acceleration * Rl.frame_time - velocity_cmp.y = [velocity_cmp.y, - (movement_cmp.max_speed + movement_cmp.deceleration) * Rl.frame_time].min - end - if Rl.key_down? 83 # DOWN S - velocity_cmp.y -= movement_cmp.acceleration * Rl.frame_time - velocity_cmp.y = [velocity_cmp.y, - (-movement_cmp.max_speed - movement_cmp.deceleration) * Rl.frame_time].max - end - if Rl.key_down? 65 # LEFT A - velocity_cmp.x += movement_cmp.acceleration * Rl.frame_time - velocity_cmp.x = [velocity_cmp.x, - (movement_cmp.max_speed + movement_cmp.deceleration) * Rl.frame_time].min - end - if Rl.key_down? 68 # RIGHT D - velocity_cmp.x -= movement_cmp.acceleration * Rl.frame_time - velocity_cmp.x = [velocity_cmp.x, - (-movement_cmp.max_speed - movement_cmp.deceleration) * Rl.frame_time].max - end - if velocity_cmp.x > (movement_cmp.deceleration * Rl.frame_time) - velocity_cmp.x -= movement_cmp.deceleration * Rl.frame_time - elsif velocity_cmp.x < (-movement_cmp.deceleration * Rl.frame_time) - velocity_cmp.x += movement_cmp.deceleration * Rl.frame_time - else - velocity_cmp.x = 0 - end - if velocity_cmp.y > (movement_cmp.deceleration * Rl.frame_time) - velocity_cmp.y -= movement_cmp.deceleration * Rl.frame_time - elsif velocity_cmp.y < (-movement_cmp.deceleration * Rl.frame_time) - velocity_cmp.y += movement_cmp.deceleration * Rl.frame_time - else - velocity_cmp.y = 0 - end - end, - FECS::Sys.new('Movement') do - FECS::Cmp::Velocity.each do |velocity_cmp| - ent = velocity_cmp.entity - position_component = ent.component[FECS::Cmp::Position] - movement_cmp = ent.component[FECS::Cmp::Movement] - - position_component.x += velocity_cmp.x - position_component.y += velocity_cmp.y - end - end, - FECS::Sys.new('ApplyPositionToSprite') do - FECS::Cmp::Position.each do |position_cmp| - sprite = position_cmp.entity.component[FECS::Cmp::Sprite] - if sprite - sprite.origin.x = position_cmp.x - sprite.origin.y = position_cmp.y - end - end - end, - FECS::Sys.new('ShowSpeed') do - player = FECS::Cmp::Player.first.entity - player_accel = player.component[FECS::Cmp::Velocity].x - movement = player.component[FECS::Cmp::Movement] - max_speed = (movement.max_speed + movement.deceleration) * Rl.frame_time - - Rl.draw_text(text: "x vel: #{"%.3f" % player_accel}", x: 500, y: 0, font_size: 30, color: BLACK) - Rl.draw_text(text: "x max: #{"%.3f" % max_speed}", x: 500, y: 30, font_size: 30, color: BLACK) - 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, - source_rect: sprite_cmp.source_rect, - dest_rect: sprite_cmp.dest_rect, - tint: sprite_cmp.tint, - rotation: sprite_cmp.rotation) - end - end, -) - -FelECS::Order.sort( - FECS::Sys::PlayerInput, - FECS::Sys::Movement, - FECS::Sys::ApplyPositionToSprite, - FECS::Sys::Render, -) |
