blob: b95ccc9e018770b2441e80dece04aa752b969b6b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
(import scheme
(chicken base)
(prefix sdl2 "sdl2:")
(prefix sdl2-ttf "ttf:")
(prefix sdl2-image "img:")
downstroke/engine
downstroke/world
downstroke/tilemap
downstroke/renderer
downstroke/input
downstroke/physics
downstroke/assets
downstroke/entity
downstroke/scene-loader)
(define *game*
(make-game
title: "Demo: Top-down Explorer" width: 600 height: 400
create: (lambda (game)
(let* ((scene (game-load-scene! game "demo/assets/level-0.tmx"))
(player (list #:type 'player
#:x 100 #:y 100
#:width 16 #:height 16
#:vx 0 #:vy 0
#:gravity? #f
#:tile-id 1
#:tags '(player)))
(_ (scene-add-entity scene player)))
(scene-camera-target-set! scene 'player)))
update: (lambda (game dt)
(let* ((input (game-input game))
(scene (game-scene game))
(tm (scene-tilemap scene))
(player (car (scene-entities scene)))
(dx (+ (if (input-held? input 'left) -3 0)
(if (input-held? input 'right) 3 0)))
(dy (+ (if (input-held? input 'up) -3 0)
(if (input-held? input 'down) 3 0)))
(player (entity-set (entity-set player #:vx dx) #:vy dy))
(player (apply-velocity-x player))
(player (resolve-tile-collisions-x player tm))
(player (apply-velocity-y player))
(player (resolve-tile-collisions-y player tm)))
(scene-entities-set! scene (list player))))))
(game-run! *game*)
|