From 4cbf14f214dff7af40c0270699d5202b00bb0d2b Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 22 Jul 2018 14:07:40 +0200 Subject: lorenzo: Accept shader and position keyword args. --- characters/lorenzo.scm | 40 +++++++++++++++++++++++++++++++++++++--- scenes/game.scm | 2 +- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/characters/lorenzo.scm b/characters/lorenzo.scm index 5fa2268..7117c4e 100644 --- a/characters/lorenzo.scm +++ b/characters/lorenzo.scm @@ -18,6 +18,7 @@ (define-module (characters lorenzo) #:use-module (chickadee render texture) #:use-module (chickadee render color) + #:use-module (chickadee render shader) #:use-module (chickadee math rect) #:use-module (chickadee math vector) #:use-module (engine assets) @@ -35,7 +36,37 @@ music talking? - lorenzo)) + lorenzo + + player-atlas)) + +;; Copied from (chickadee render sprite) +(define default-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) { + gl_FragColor = texture2D(color_texture, frag_tex); +} +"))) (define-class () (previous-key-presses #:accessor previous-key-presses #:init-form (list)) @@ -51,15 +82,18 @@ (define-asset player-atlas (load-atlas "assets/images/lorenzo.png" 32 32)) -(define (lorenzo the-position) +(define* (lorenzo #:key + (position (vec2 0 0)) + (shader default-shader)) (make #:name 'player - #:position the-position + #:position position #:children (cons (make #:name 'sprite #:atlas player-atlas + #:shader shader #:animations '((idle-right . #(8 8 8 8 8 7 7 7 7 7)) (idle-left . #(0 0 0 0 0 15 15 15 15 15)) (idle-front . #(24 24 24 24 24 32 32 32 32 32)) diff --git a/scenes/game.scm b/scenes/game.scm index d1500ff..c081f5e 100644 --- a/scenes/game.scm +++ b/scenes/game.scm @@ -83,7 +83,7 @@ map's object layer." (vec2 0.0 0.0)))) (define-method (populate (game )) - (let ((player (lorenzo (start-position game "player")))) + (let ((player (lorenzo #:position (start-position game "player")))) (list (reaper (start-position game "reaper")) (make #:name 'hit -- cgit v1.2.3