blob: 6e8f7fb1bd9053881071ffcb8ba4171d0968868d (
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
|
(define-module (bonnie-bee player)
#:use-module (bonnie-bee actor)
#:use-module (bonnie-bee assets)
#:use-module (chickadee math vector)
#:use-module (oop goops)
#:use-module (starling node)
#:use-module (starling node-2d)
#:export (<player>
move-left?
move-right?
move-down?
move-up?
shoot?
speed
lives
pollen))
(define-class <player> (<actor>)
(move-left? #:accessor move-left? #:init-value #f)
(move-right? #:accessor move-right? #:init-value #f)
(move-down? #:accessor move-down? #:init-value #f)
(move-up? #:accessor move-up? #:init-value #f)
(shoot? #:accessor shoot? #:init-value #f)
(speed #:accessor speed #:init-value 2.0)
(lives #:accessor lives #:init-value 3)
(pollen #:accessor pollen #:init-value 0))
(define-method (on-boot (player <player>))
(attach-to player
(make <atlas-sprite>
#:atlas bee-atlas
#:index 12
#:origin (vec2 16.0 16.0))))
(define-method (update (player <player>) dt)
(let ((v (velocity player)))
(set-vec2! v
(+ (if (move-left? player) -1.0 0.0)
(if (move-right? player) 1.0 0.0))
(+ (if (move-down? player) -1.0 0.0)
(if (move-up? player) 1.0 0.0)))
(vec2-normalize! v)
(vec2-mult! v (speed player)))
(next-method))
|