diff options
| author | arngo <[email protected]> | 2022-01-28 01:53:46 -0500 |
|---|---|---|
| committer | arngo <[email protected]> | 2022-01-28 01:53:46 -0500 |
| commit | 9d6a026133866b229745f3a1e04108e942ced0e0 (patch) | |
| tree | 2a407b612dc6e12f28c90f36967c7d58b0b45976 /src | |
| parent | c75208ccd46971fcf0bc89cf80b52f28b140f582 (diff) | |
| download | orc-arena-of-time-9d6a026133866b229745f3a1e04108e942ced0e0.tar.gz orc-arena-of-time-9d6a026133866b229745f3a1e04108e942ced0e0.zip | |
implement level 2
Diffstat (limited to 'src')
| -rw-r--r-- | src/levels.rb | 164 | ||||
| -rw-r--r-- | src/logic.rb | 16 |
2 files changed, 167 insertions, 13 deletions
diff --git a/src/levels.rb b/src/levels.rb index 37a6731..32e6e84 100644 --- a/src/levels.rb +++ b/src/levels.rb @@ -2,10 +2,21 @@ FECS::Cmp.new('CurrentLevel', level: -1) CurrentLevel = FECS::Cmp::CurrentLevel.new + Levels = [] # First level level0 = { + map_texture: { + path: './assets/mapinit.png', + source_rec: Rl::Rectangle.new(0,0,448,336), + dest_rec: Rl::Rectangle.new(0,0,448*2,336*2) + }, + overhang_texture: { + path: './assets/mapinit-overhang.png', + source_rec: Rl::Rectangle.new(0,0,140,220), + dest_rec: Rl::Rectangle.new(0,0,140*2,220*2) + }, player_spawn: Rl::Vector2.new(425,325), scissor_size: Path.new( lambda do |time| @@ -105,7 +116,152 @@ level0 = { ] } +# Second level +level1 = { + map_texture: { + path: './assets/map2.png', + source_rec: Rl::Rectangle.new(0,0,480,368), + dest_rec: Rl::Rectangle.new(0,0,480*2,368*2) + }, + overhang_texture: { + path: './assets/map2-overhang.png', + source_rec: Rl::Rectangle.new(0,0,480,368), + dest_rec: Rl::Rectangle.new(0,0,480*2,368*2) + }, + player_spawn: Rl::Vector2.new(187,465), + scissor_size: Path.new( + lambda do |time| + [250, + 250] + end, + lambda do |time| + [250, + 250] + end, + lambda do |time| + [250, + 250] + end, + lambda do |time| + [250, + 250] + end, + lambda do |time| + [250+(50*(-(Math.cos(Math::PI*time)-1)/2)), + 250-(80*(-(Math.cos(Math::PI*time)-1)/2))] + end + ), + scissor_path: Path.new( + lambda do |time| + xstart = 206 + ystart = 509 + xstartnode = 204 + ystartnode = 390 + xendnode = 228 + yendnode = 336 + xend = 153 + yend = 268 + easeTime = time #1 - Math.cos((time * Math::PI) / 2) + [Math.bezier([xstart, xstartnode, xendnode, xend],easeTime)-(250/2), + Math.bezier([ystart, ystartnode, yendnode, yend],easeTime)-(250/2)] + end, + lambda do |time| + xstart = 153 + ystart = 268 + xstartnode = 78 + ystartnode = 202 + xendnode = 205 + yendnode = 75 + xend = 273 + yend = 186 + [Math.bezier([xstart, xstartnode, xendnode, xend],time)-(250/2), + Math.bezier([ystart, ystartnode, yendnode, yend],time)-(250/2)] + end, + lambda do |time| + xstart = 273 + ystart = 186 + xstartnode = 342 + ystartnode = 298 + xendnode = 634 + yendnode = 153 + xend = 691 + yend = 209 + [Math.bezier([xstart, xstartnode, xendnode, xend],time)-(250/2), + Math.bezier([ystart, ystartnode, yendnode, yend],time)-(250/2)] + end, + lambda do |time| + xstart = 691 + ystart = 209 + xstartnode = 749 + ystartnode = 266 + xendnode = 716 + yendnode = 316 + xend = 717 + yend = 373 + [Math.bezier([xstart, xstartnode, xendnode, xend],time)-(250/2), + Math.bezier([ystart, ystartnode, yendnode, yend],time)-(250/2)] + end, + lambda do |time| + xstart = 717 + ystart = 373 + xstartnode = 718 + ystartnode = 429 + xendnode = 720 + yendnode = 482 + xend = 721 + yend = 532 + [Math.bezier([xstart, xstartnode, xendnode, xend],time)-((250+(50*(-(Math.cos(Math::PI*time)-1)/2)))/2), + Math.bezier([ystart, ystartnode, yendnode, yend],time)-((250-(80*(-(Math.cos(Math::PI*time)-1)/2)))/2)] + end + ), + scissor_speed: [1.0/2.0, 1.0/3.5, 1.0/6.0, 1.0/4.5, 1.0/3.0], + timed_render: [], + end_goal: [352*2,240*2,16*2,16*2], + walls: [ + [178, 180, 60, 56], + [684, 406, 72, 56], + [628, 406, 56, 152], + [618, 320, 80, 24], + [266, 276, 32, 34], + [244, 310, 312, 120], + [468, 430, 88, 70], + [262, 224, 20, 26], + [886, 306, 42, 226], + [756, 406, 56, 152], + [566, 596, 64, 34], + [808, 614, 16, 16], + [566, 630, 276, 40], + [842, 596, 66, 74], + [874, 532, 54, 64], + [76, 84, 106, 34], + [182, 84, 52, 24], + [234, 84, 76, 34], + [310, 84, 448, 56], + [758, 84, 128, 248], + [742, 320, 80, 24], + [298, 246, 386, 88], + [166, 516, 84, 16], + [298, 500, 268, 154], + [90, 532, 208, 58], + [90, 468, 28, 64], + [106, 310, 64, 118], + [50, 214, 56, 254], + [50, 118, 68, 96] + ], + damage_areas: [ + #[10, 0,0, 100,100], + ], + damage_walls: [ + [1, 612, 186, 24, 34], + [1, 422, 186, 24, 34], + [1, 708, 154, 24, 34], + [1, 516, 154, 24, 34], + [1, 324, 154, 24, 34] + ] +} + Levels.push(level0) +Levels.push(level1) FECS::Sys.new('ConstructLevel') do FECS::Sys::DestroyLevel.call @@ -115,6 +271,14 @@ FECS::Sys.new('ConstructLevel') do FECS::Cmp::Player.first.state_direction = 'right' PlayerTileset.texture = OrcTextures[3] + MapTexture.texture = Rl::Texture.new(level[:map_texture][:path]) + MapTexture.source_rec = level[:map_texture][:source_rec] + MapTexture.dest_rec = level[:map_texture][:dest_rec] + + OverhangTexture.texture = Rl::Texture.new(level[:overhang_texture][:path]) + OverhangTexture.source_rec = level[:overhang_texture][:source_rec] + OverhangTexture.dest_rec = level[:overhang_texture][:dest_rec] + level[:walls].each do |wall| FECS::Cmp::Hitbox.new( rec: Rl::Rectangle.new(*wall), diff --git a/src/logic.rb b/src/logic.rb index 2af10d8..3ed886f 100644 --- a/src/logic.rb +++ b/src/logic.rb @@ -77,6 +77,8 @@ FECS::Cmp.new('EndGoal', :rec) FECS::Cmp::ScissorTime.new(time: 0) EndGoal = FECS::Cmp::EndGoal.new Input = FECS::Cmp::Input.new +MapTexture = FECS::Cmp::Sprite.new +OverhangTexture = FECS::Cmp::OverhangTexture.new OrcTextures = [ Rl::Texture.new('./assets/orc_.png'), @@ -126,18 +128,6 @@ end PlayerTileset.frames = PlayerAnimations[:standing_right] -FECS::Cmp::Sprite.new( - texture: Rl::Texture.new('./assets/mapinit.png'), - source_rec: Rl::Rectangle.new(0,0,448,336), - dest_rec: Rl::Rectangle.new(0,0,448*2,336*2) -) - -FECS::Cmp::OverhangTexture.new( - texture: Rl::Texture.new('./assets/mapinit-overhang.png'), - source_rec: Rl::Rectangle.new(0,0,140,220), - dest_rec: Rl::Rectangle.new(0,0,140*2,220*2) -) - =begin MovingHitbox1 = FECS::Cmp::Hitbox.new( rec: Rl::Rectangle.new(150,50,35,150), @@ -746,7 +736,7 @@ FECS::Scn::Play.add( end ) -CurrentLevel.level = 0 +CurrentLevel.level = 1 FelECS::Order.sort( FECS::Sys::PlayerInput, |
