Add end-game credits sequence.
This commit is contained in:
parent
91ba2fab66
commit
4ec1666a1d
6 changed files with 110 additions and 6 deletions
3
Makefile
3
Makefile
|
@ -29,7 +29,8 @@ levels = \
|
|||
modules/game/levels/level-1.scm \
|
||||
modules/game/levels/level-2.scm \
|
||||
modules/game/levels/level-3.scm \
|
||||
modules/game/levels/level-4.scm
|
||||
modules/game/levels/level-4.scm \
|
||||
modules/game/levels/credits.scm
|
||||
|
||||
game.wasm: game.scm $(modules) $(levels)
|
||||
guild compile-wasm -L modules -o $@ $<
|
||||
|
|
3
assets/fonts/AUTHORS
Normal file
3
assets/fonts/AUTHORS
Normal file
|
@ -0,0 +1,3 @@
|
|||
Monogram font by datagoblin
|
||||
https://datagoblin.itch.io/monogram
|
||||
Licensed under CC0
|
BIN
assets/fonts/monogram-extended.woff2
Normal file
BIN
assets/fonts/monogram-extended.woff2
Normal file
Binary file not shown.
7
game.css
7
game.css
|
@ -1,3 +1,10 @@
|
|||
@font-face {
|
||||
font-family: 'monogram';
|
||||
src: url('assets/fonts/monogram-extended.woff2');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
body {
|
||||
/* background-color: #000; */
|
||||
margin: 0;
|
||||
|
|
75
game.scm
75
game.scm
|
@ -33,6 +33,7 @@
|
|||
(game levels level-2)
|
||||
(game levels level-3)
|
||||
(game levels level-4)
|
||||
(game levels credits)
|
||||
(game scripts)
|
||||
(game tileset)
|
||||
(goblins core)
|
||||
|
@ -168,6 +169,15 @@
|
|||
(set! *level* ((vector-ref levels idx) (collected-gem? idx)))
|
||||
(update-objects!)))
|
||||
|
||||
(define (load-credits!)
|
||||
(set! *state* 'win)
|
||||
(set! *actormap* (make-whactormap))
|
||||
(set-vec2-y! *credits-scroll* 0.0)
|
||||
(clear-snapshots!)
|
||||
(with-goblins
|
||||
(set! *level* (load-credits #t))
|
||||
(update-objects!)))
|
||||
|
||||
(define (next-level!)
|
||||
(let ((idx (+ *level-idx* 1)))
|
||||
(pk 'next-level idx)
|
||||
|
@ -177,10 +187,19 @@
|
|||
(save-game!)
|
||||
(run-script
|
||||
(lambda ()
|
||||
(set! *state* 'interstitial)
|
||||
(show-effect! (make-fade-out+in-effect 1.0))
|
||||
(wait 30) ; ~half the effect time
|
||||
(load-level! idx))))
|
||||
(set! *state* 'win))))
|
||||
(begin
|
||||
(run-script
|
||||
(lambda ()
|
||||
(set! *level-idx* 0)
|
||||
(save-game!)
|
||||
(set! *state* 'interstitial)
|
||||
(show-effect! (make-fade-out+in-effect 2.0))
|
||||
(wait 60)
|
||||
(load-credits!)))))))
|
||||
|
||||
;; Auto-save/load to local storage.
|
||||
(define (save-game!)
|
||||
|
@ -390,10 +409,58 @@
|
|||
(define (draw-interstitial)
|
||||
(draw-level))
|
||||
|
||||
(define *credits-scroll* (vec2 0.0 0.0))
|
||||
(define credits
|
||||
#("Congratulations!"
|
||||
#f
|
||||
#f
|
||||
"Cirkoban was made by the"
|
||||
"Spritely Institute"
|
||||
#f
|
||||
"https://spritely.institute"
|
||||
#f
|
||||
"Programming"
|
||||
#f
|
||||
"David Thompson"
|
||||
"Juliana Sims"
|
||||
#f
|
||||
"Art"
|
||||
#f
|
||||
"Christine Lemmer-Webber"
|
||||
#f
|
||||
"monogram font by datagoblin"
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
#f
|
||||
"Thank you for playing!"))
|
||||
(define credits-line-spacing 16.0)
|
||||
(define max-credits-scroll
|
||||
(+ game-height (* (- (vector-length credits) 9) credits-line-spacing)))
|
||||
(define (draw-win)
|
||||
(set-fill-color! context "#000000")
|
||||
(set-text-align! context "left")
|
||||
(fill-text context "OMG YOU DID IT WOW CONGRATS" 32.0 120.0))
|
||||
(draw-level)
|
||||
(set-fill-color! context "#ffffff")
|
||||
(set-text-align! context "center")
|
||||
(set-font! context "bold 16px monogram")
|
||||
(set-vec2-y! *credits-scroll*
|
||||
(min (+ (vec2-y *credits-scroll*) 1.0)
|
||||
max-credits-scroll))
|
||||
(let* ((x (* game-width 0.7))
|
||||
(lines-on-screen 15)
|
||||
(scroll-y (vec2-y *credits-scroll*))
|
||||
;; TODO: Only render the lines on screen.
|
||||
(start 0)
|
||||
(end (vector-length credits)))
|
||||
(let lp ((i start) (y (- game-height scroll-y)))
|
||||
(when (< i end)
|
||||
(match (vector-ref credits i)
|
||||
(#f #f)
|
||||
(str (fill-text context str x y)))
|
||||
(lp (1+ i) (+ y credits-line-spacing))))))
|
||||
|
||||
(define (draw prev-time)
|
||||
(clear-rect context 0.0 0.0 *canvas-width* *canvas-height*)
|
||||
|
|
26
modules/game/levels/credits.tmx
Normal file
26
modules/game/levels/credits.tmx
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.8" tiledversion="1.8.6" orientation="orthogonal" renderorder="right-down" width="20" height="15" tilewidth="16" tileheight="16" infinite="0" nextlayerid="3" nextobjectid="11">
|
||||
<tileset firstgid="1" source="tiles.tsx"/>
|
||||
<layer id="1" name="background" width="20" height="15">
|
||||
<data encoding="csv">
|
||||
150,211,91,111,150,150,149,131,131,109,210,150,110,191,210,91,131,109,211,131,
|
||||
211,171,209,110,110,111,151,109,191,210,191,91,131,91,150,150,150,151,210,171,
|
||||
130,189,151,211,189,170,209,191,151,211,189,171,150,110,111,189,131,210,210,129,
|
||||
211,169,110,131,189,109,150,191,191,110,190,211,189,131,189,89,170,149,171,130,
|
||||
169,110,81,82,83,83,84,91,91,171,210,150,189,91,150,189,171,110,169,210,
|
||||
170,81,108,24,24,24,107,88,90,110,170,130,129,131,209,110,130,191,151,90,
|
||||
210,85,24,24,24,24,24,86,191,170,109,110,169,150,191,189,210,149,110,151,
|
||||
91,85,24,24,24,24,24,86,191,169,150,210,170,170,210,130,110,90,170,211,
|
||||
89,85,24,24,24,24,24,86,131,109,190,150,131,129,131,209,169,189,91,151,
|
||||
129,101,88,24,24,24,87,104,209,131,169,150,210,189,171,211,169,189,131,190,
|
||||
111,189,101,102,102,103,104,110,91,150,189,190,211,170,150,170,171,169,130,109,
|
||||
111,131,110,170,171,169,149,90,90,190,109,170,89,131,150,89,131,209,210,149,
|
||||
171,189,189,189,111,210,131,171,129,190,209,150,90,191,150,209,151,169,209,90,
|
||||
90,210,111,171,210,210,211,149,151,209,190,129,169,129,91,131,170,109,90,191,
|
||||
170,190,210,131,109,210,131,90,131,211,111,130,89,191,169,110,190,109,211,170
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup id="2" name="objects">
|
||||
<object id="1" type="player-spawn" gid="1" x="64" y="112" width="16" height="16"/>
|
||||
</objectgroup>
|
||||
</map>
|
Loading…
Add table
Reference in a new issue