diff --git a/res/clip3/backdrop0.png b/res/clip3/backdrop0.png index 38cd951..f0d5b4a 100644 Binary files a/res/clip3/backdrop0.png and b/res/clip3/backdrop0.png differ diff --git a/res/clip3/backdrop1.png b/res/clip3/backdrop1.png index 631b2ed..1a0251c 100644 Binary files a/res/clip3/backdrop1.png and b/res/clip3/backdrop1.png differ diff --git a/res/clip3/backdrop2.png b/res/clip3/backdrop2.png index 1b4744a..e10b5eb 100644 Binary files a/res/clip3/backdrop2.png and b/res/clip3/backdrop2.png differ diff --git a/res/clip3/backdrop3.png b/res/clip3/backdrop3.png index b920c24..2f49991 100644 Binary files a/res/clip3/backdrop3.png and b/res/clip3/backdrop3.png differ diff --git a/res/clip3/bigboi.png b/res/clip3/bigboi.png index cc0906b..a6a854b 100644 Binary files a/res/clip3/bigboi.png and b/res/clip3/bigboi.png differ diff --git a/res/clip3/sky0.png b/res/clip3/sky0.png index ef2f32c..5c1c825 100644 Binary files a/res/clip3/sky0.png and b/res/clip3/sky0.png differ diff --git a/res/clip3/sky1.png b/res/clip3/sky1.png index 5c27a2e..0ecdc79 100644 Binary files a/res/clip3/sky1.png and b/res/clip3/sky1.png differ diff --git a/res/clip3/sky2.png b/res/clip3/sky2.png index 8ac6ba2..88ed347 100644 Binary files a/res/clip3/sky2.png and b/res/clip3/sky2.png differ diff --git a/res/clip3/smallboi.png b/res/clip3/smallboi.png index ead2f8e..b28cc3b 100644 Binary files a/res/clip3/smallboi.png and b/res/clip3/smallboi.png differ diff --git a/res/clip3/sun.png b/res/clip3/sun.png index a26b8de..b1916fd 100644 Binary files a/res/clip3/sun.png and b/res/clip3/sun.png differ diff --git a/res/clip3/text0.png b/res/clip3/text0.png new file mode 100644 index 0000000..59c1ca8 Binary files /dev/null and b/res/clip3/text0.png differ diff --git a/res/clip3/text1.png b/res/clip3/text1.png new file mode 100644 index 0000000..5eb8745 Binary files /dev/null and b/res/clip3/text1.png differ diff --git a/res/clip3/text2.png b/res/clip3/text2.png new file mode 100644 index 0000000..ef54e90 Binary files /dev/null and b/res/clip3/text2.png differ diff --git a/res/clip3/text3.png b/res/clip3/text3.png new file mode 100644 index 0000000..4dc28e1 Binary files /dev/null and b/res/clip3/text3.png differ diff --git a/src/game/scenes/cutsc3.nim b/src/game/scenes/cutsc3.nim new file mode 100644 index 0000000..3620b2b --- /dev/null +++ b/src/game/scenes/cutsc3.nim @@ -0,0 +1,120 @@ +include ../../engine/base +import ../../engine/graphics/shader + + +type CutScene3* = ref object of Scene + sky0: Sprite + sky1: Sprite + sky2: Sprite + sun: Sprite + eldritch: Sprite + big: Sprite + backdrop0: Sprite + backdrop1: Sprite + backdrop2: Sprite + backdrop3: Sprite + + text: seq[Sprite] + text_prg: int + cur_time: float + text_time: float + text_times: seq[float] + music: WavHandle + time: float + +method init(this: CutScene3) = + renderer.camera.center = vec2f(320, 150) + renderer.camera.scale = 1.0 + renderer.fullscreen_shader = load_shader("res/shader/fullscreen_intro") + + this.sky0 = create_sprite("res/clip3/sky0.png") + this.sky1 = create_sprite("res/clip3/sky1.png") + this.sky2 = create_sprite("res/clip3/sky2.png") + + this.sun = create_sprite("res/clip3/sun.png") + this.eldritch = create_sprite("res/clip3/smallboi.png") + this.big = create_sprite("res/clip3/bigboi.png") + + this.backdrop0 = create_sprite("res/clip3/backdrop0.png") + this.backdrop1 = create_sprite("res/clip3/backdrop1.png") + this.backdrop2 = create_sprite("res/clip3/backdrop2.png") + this.backdrop3 = create_sprite("res/clip3/backdrop3.png") + + this.text.add(create_sprite("res/clip3/text0.png")) + this.text.add(create_sprite("res/clip3/text1.png")) + this.text.add(create_sprite("res/clip3/text2.png")) + this.text.add(create_sprite("res/clip3/text3.png")) + this.text_times.add(10.0) + this.text_times.add(8.0) + this.text_times.add(6.0) + this.text_times.add(20.0) + this.text_prg = -1 + this.text_time = 0.0 + + this.music = load_sound("res/clip1/music.mp3") + + discard play_sound(this.music) + +method update(this: CutScene3) = + this.time += dt + this.text_time -= dt + this.cur_time -= dt + + renderer.camera.center = vec2f(320, 192) + + this.eldritch.position = vec2f( + (sin(this.time * 0.3) + 1.0) * 5.0, + (cos(this.time * 0.4) + 0.5) * 10.0 + ) + + this.sun.position = vec2f( + 0.0, + max(200.0 - 200.0 * (this.time / 40.0), 0.0) + ) + + if this.time > 20.0: + this.backdrop3.tint = vec4f(1.0, 1.0, 1.0, (this.time - 20.0) * 0.2) + this.big.position = vec2f(0.0, max(200.0 - (this.time - 20.0) * 50.0, 0.0)) + + if this.text_time < 0.0: + inc this.text_prg + if this.text_prg < this.text.len: + this.text_time = this.text_times[this.text_prg] + this.cur_time = 1.0 + + for i in countup(0, this.text.len - 1): + if i == this.text_prg: + this.text[i].tint = vec4f(1.0, 1.0, 1.0, min(1.0 - this.cur_time, 1.0)) + elif i == this.text_prg - 1: + this.text[i].tint = vec4f(1.0, 1.0, 1.0, max(this.cur_time, 0.0)) + else: + this.text[i].tint = vec4f(1.0, 1.0, 1.0, 0.0) + + + +method render(this: CutScene3) = + if this.time < 5.0: + renderer.draw(this.sky0) + elif this.time < 10.0: + renderer.draw(this.sky1) + else: + renderer.draw(this.sky2) + + renderer.draw(this.sun) + if this.time > 20.0: + renderer.draw(this.big) + + renderer.draw(this.eldritch) + + if this.time < 5.0: + renderer.draw(this.backdrop0) + elif this.time < 10.0: + renderer.draw(this.backdrop1) + elif this.time < 20.0: + renderer.draw(this.backdrop2) + else: + renderer.draw(this.backdrop2) + renderer.draw(this.backdrop3) + + for text in this.text: + renderer.draw(text) \ No newline at end of file diff --git a/src/game/scenes/level4.nim b/src/game/scenes/level4.nim index a1cb994..2ff160d 100644 --- a/src/game/scenes/level4.nim +++ b/src/game/scenes/level4.nim @@ -8,6 +8,8 @@ import ../entities/physical_object import ../../engine/base/renderer as rnd import level +import cutsc3 + type Level4Scene* = ref object of Scene music: WavHandle musich: AudioHandle @@ -57,7 +59,7 @@ method update(this: Level4Scene) = if this.level.update(): this.musich.pause() - goto_scene(Level4Scene()) + goto_scene(CutScene3()) var op = true for button in this.level.buttons_idx: diff --git a/src/main.nim b/src/main.nim index 47ddaeb..d11afcb 100644 --- a/src/main.nim +++ b/src/main.nim @@ -1,15 +1,16 @@ import nimgl/[glfw] -#import game/scenes/intro +import game/scenes/intro #import game/scenes/level1 #import game/scenes/cutsc1 #import game/scenes/level2 -import game/scenes/level3 +#import game/scenes/level3 #import game/scenes/cutsc2 #import game/scenes/level4 +#import game/scenes/cutsc3 include engine/base -goto_scene(Level3Scene()) +goto_scene(IntroScene()) proc update() =