From 41445ed2a2fff494f552e18801000b3a5623fd5d Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 24 Jul 2018 23:04:24 +0200 Subject: Finish death/credits scene. --- scenes/death.scm | 276 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 256 insertions(+), 20 deletions(-) (limited to 'scenes/death.scm') diff --git a/scenes/death.scm b/scenes/death.scm index 4682217..29d006f 100644 --- a/scenes/death.scm +++ b/scenes/death.scm @@ -16,23 +16,37 @@ ;;; . (define-module (scenes death) + #:use-module (srfi srfi-1) + #:use-module (ice-9 match) + #:use-module (chickadee) #:use-module (chickadee audio) + #:use-module (chickadee math rect) #:use-module (chickadee math vector) + #:use-module (chickadee render color) #:use-module (chickadee render font) + #:use-module (chickadee render texture) + #:use-module (chickadee render shader) + #:use-module (chickadee render tiled) + #:use-module (chickadee scripting) #:use-module (engine assets) #:use-module (engine node) #:use-module (engine node-2d) #:use-module (engine scene) - #:use-module (engine shell) - #:use-module (scenes credits) #:use-module (oop goops) + #:use-module (config) + #:use-module (characters) + #:use-module (characters lorenzo) + #:use-module (characters reaper) #:export (death)) -(define-class ()) +(define-asset death-map (load-tile-map "assets/maps/death.tmx")) + +(define-class () + (tile-map #:accessor tile-map #:init-form death-map) + (pretend-walking? #:accessor pretend-walking? #:init-form #f)) (define-asset death-font - (load-tile-font "assets/fonts/bubblemad_8x8.png" 8 8 - " !\"©_%❤'()*+,-./0123456789:←<=>?@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")) + (load-font "assets/fonts/good_neighbors_starling.xml")) (define-asset music-death (load-music "assets/music/death.ogg")) @@ -75,31 +89,253 @@ to fight. Let go." Life is hard, but thankfully quite short.")) +(define credits + '(("The Inevitable Game" + "Made by Ricardo Wurmus" + "For Lorenzo") + ("Reaper character graphics" + "based on \"Lil Reaper Pet\" by Tracy") + ("Lorenzo character graphics" + "Based on \"Small 3/4 RPG character base\"" + "by Stephen Challener (Redshrike)") + ("Map tiles" + "taken from \"Zelda-like tilesets and sprites\"" + "by ArMM1998") + ("Food graphics" + "taken from \"The Humble Food Pack\"" + "by \"The Wise Hedgehog\"") + ("All music" + "composed and recorded" + "by Ricardo Wurmus") + ("Bird sounds" + "taken from the public domain") + ("Made with 100% Free Software including" + "- GNU Guile" + "- Chickadee" + "- Guile OpenGL" + "- SDL") + ("Thanks for enduring this game!"))) + (set! *random-state* (random-state-from-platform)) +;; This shader renders the texture after blending each pixel with a +;; 0.1 opacity pixel, thereby rendering everything with increased +;; transparency. +(define ghost-shader + (delay + (strings->shader + " +#version 130 + +in vec2 position; +in vec2 tex; +out vec2 frag_tex; +uniform mat4 mvp; + +void main(void) { + frag_tex = tex; + gl_Position = mvp * vec4(position.xy, 0.0, 1.0); +} +" + " +#version 130 + +in vec2 frag_tex; +uniform sampler2D color_texture; + +void main (void) { + vec4 original = texture2D(color_texture, frag_tex); + vec4 g; + + g = vec4(1, 1, 1, 0.1); + g = mix(g, original, 0.5); + gl_FragColor = vec4(original.rgb, min(g.a,original.a)); + if (gl_FragColor.a < 0.5) + { + discard; + } +} +"))) + (define-method (populate (death )) (cons - (make