diff options
| -rw-r--r-- | src/levels.rb | 18 | ||||
| -rw-r--r-- | src/logic.rb | 11 |
2 files changed, 21 insertions, 8 deletions
diff --git a/src/levels.rb b/src/levels.rb index abe67c5..2f7bf2a 100644 --- a/src/levels.rb +++ b/src/levels.rb @@ -19,7 +19,7 @@ level0 = { Math.bezier([200, 1183, 200, 200],time)-150] end ), - end_goal: Rl::Rectangle.new(40,40,10,10), + end_goal: [40,40,10,10], walls: [ [250,250, 250,150], [350,200, 050,350], @@ -63,16 +63,22 @@ FECS::Sys.new('ConstructLevel') do ) end - player_ent = FECS::Cmp::Player.first.entity - player_pos = player_ent.component[FECS::Cmp::Position] - player_vel = player_ent.component[FECS::Cmp::Velocity] + EndGoal.rec = Rl::Rectangle.new( + level[:end_goal][0], + level[:end_goal][1], + level[:end_goal][2], + level[:end_goal][3], + ) + + player_pos = Player.component[FECS::Cmp::Position] + player_vel = Player.component[FECS::Cmp::Velocity] player_pos.x = level[:player_spawn].x player_pos.y = level[:player_spawn].y player_vel.x = 0 player_vel.y = 0 - player_ent.component[FECS::Cmp::Player].moved = false + Player.component[FECS::Cmp::Player].moved = false FECS::Cmp::ScissorTime.first.time = 0 end @@ -80,7 +86,7 @@ end FECS::Sys.new('DestroyLevel') do FECS::Cmp::Hitbox.reverse_each do |hitbox_cmp| unless hitbox_cmp.entities.empty? - next if hitbox_cmp.entity.equal? @player + next if hitbox_cmp.entity.equal? Player end hitbox_cmp.delete end diff --git a/src/logic.rb b/src/logic.rb index b4fb3a1..6fb5baf 100644 --- a/src/logic.rb +++ b/src/logic.rb @@ -46,6 +46,7 @@ FECS::Cmp.new('DamageHitbox', damage: 1, offset_x: 0, offset_y: 0) +FECS::Cmp.new('EndGoal', :rec) #ScissorPath = Path.new( # lambda do |time| @@ -56,7 +57,7 @@ FECS::Cmp.new('DamageHitbox', #FECS::Cmp::ScissorBox.new(rec: Rl::Rectangle.new(200,200,250,250)) FECS::Cmp::ScissorTime.new(time: 0) - +EndGoal = FECS::Cmp::EndGoal.new Input = FECS::Cmp::Input.new lancelot = Tileset.new(texture: Rl::Texture.new('./assets/lancelot_.png')) @@ -104,7 +105,7 @@ FECS::Cmp::Hitbox.new( =end -@player = FECS::Ent.new( +Player = FECS::Ent.new( FECS::Cmp::Player.new, FECS::Cmp::Hp.new(value: 100, max_invincible_time: 2), FECS::Cmp::Position.new(x: 120, y: 300), @@ -337,6 +338,12 @@ FECS::Scn::Play.add( end end end, + FECS::Sys.new('CheckEndGoal') do + player_hitbox = Player.component[FECS::Cmp::Hitbox].rec + if EndGoal.rec.collide_with_rec? player_hitbox + puts 'you\'re winner' + end + end, FECS::Sys.new('ShowSpeed') do if Input.show_debug player = FECS::Cmp::Player.first.entity |
