From 9d6a026133866b229745f3a1e04108e942ced0e0 Mon Sep 17 00:00:00 2001
From: arngo <27396817+arngo@users.noreply.github.com>
Date: Fri, 28 Jan 2022 01:53:46 -0500
Subject: implement level 2
---
LevelDesign/tiled_files/dungeonDecoration_0.tsx | 4 +
LevelDesign/tiled_files/dungeonDecoration_1.tsx | 4 +
LevelDesign/tiled_files/dungeon_.tsx | 2 +-
LevelDesign/tiled_files/map2.tmx | 164 ++++++++++++++++++++++++
LevelDesign/tiled_files/traps_.tsx | 4 +
LevelDesign/tiled_files/waterLavaAcid_.tsx | 4 +
assets/map2-overhang.png | Bin 0 -> 1221 bytes
assets/map2.png | Bin 0 -> 7260 bytes
src/levels.rb | 164 ++++++++++++++++++++++++
src/logic.rb | 16 +--
10 files changed, 348 insertions(+), 14 deletions(-)
create mode 100644 LevelDesign/tiled_files/dungeonDecoration_0.tsx
create mode 100644 LevelDesign/tiled_files/dungeonDecoration_1.tsx
create mode 100644 LevelDesign/tiled_files/map2.tmx
create mode 100644 LevelDesign/tiled_files/traps_.tsx
create mode 100644 LevelDesign/tiled_files/waterLavaAcid_.tsx
create mode 100644 assets/map2-overhang.png
create mode 100644 assets/map2.png
diff --git a/LevelDesign/tiled_files/dungeonDecoration_0.tsx b/LevelDesign/tiled_files/dungeonDecoration_0.tsx
new file mode 100644
index 0000000..a1955c3
--- /dev/null
+++ b/LevelDesign/tiled_files/dungeonDecoration_0.tsx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/LevelDesign/tiled_files/dungeonDecoration_1.tsx b/LevelDesign/tiled_files/dungeonDecoration_1.tsx
new file mode 100644
index 0000000..eb9850f
--- /dev/null
+++ b/LevelDesign/tiled_files/dungeonDecoration_1.tsx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/LevelDesign/tiled_files/dungeon_.tsx b/LevelDesign/tiled_files/dungeon_.tsx
index b4feb87..034d053 100644
--- a/LevelDesign/tiled_files/dungeon_.tsx
+++ b/LevelDesign/tiled_files/dungeon_.tsx
@@ -1,4 +1,4 @@
-
+
diff --git a/LevelDesign/tiled_files/map2.tmx b/LevelDesign/tiled_files/map2.tmx
new file mode 100644
index 0000000..216fea8
--- /dev/null
+++ b/LevelDesign/tiled_files/map2.tmx
@@ -0,0 +1,164 @@
+
+
diff --git a/LevelDesign/tiled_files/traps_.tsx b/LevelDesign/tiled_files/traps_.tsx
new file mode 100644
index 0000000..2aef163
--- /dev/null
+++ b/LevelDesign/tiled_files/traps_.tsx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/LevelDesign/tiled_files/waterLavaAcid_.tsx b/LevelDesign/tiled_files/waterLavaAcid_.tsx
new file mode 100644
index 0000000..572aeed
--- /dev/null
+++ b/LevelDesign/tiled_files/waterLavaAcid_.tsx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/map2-overhang.png b/assets/map2-overhang.png
new file mode 100644
index 0000000..a797d42
Binary files /dev/null and b/assets/map2-overhang.png differ
diff --git a/assets/map2.png b/assets/map2.png
new file mode 100644
index 0000000..162ac3b
Binary files /dev/null and b/assets/map2.png differ
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,
--
cgit v1.2.3