summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorarngo <[email protected]>2022-01-23 02:11:54 -0500
committerarngo <[email protected]>2022-01-23 02:11:54 -0500
commit3d141be357e0e3fb5bfd75b1f79e4e6a34e8ccb5 (patch)
tree0f02fac13de4f6712a62b7065d5d4942c08b4a08
parent7a34805a0dbb1238c742263438f01408fcf3c7f0 (diff)
downloadorc-arena-of-time-3d141be357e0e3fb5bfd75b1f79e4e6a34e8ccb5.tar.gz
orc-arena-of-time-3d141be357e0e3fb5bfd75b1f79e4e6a34e8ccb5.zip
rect -> rec, test drawing rectangles
-rw-r--r--src/components/player.rb34
-rw-r--r--src/helper.rb12
-rw-r--r--src/init.rb1
-rw-r--r--src/logic.rb38
-rw-r--r--src/systems/systems.rb90
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,
-)