summaryrefslogtreecommitdiffhomepage
path: root/src/levels.rb
diff options
context:
space:
mode:
Diffstat (limited to 'src/levels.rb')
-rw-r--r--src/levels.rb164
1 files changed, 164 insertions, 0 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),