summaryrefslogtreecommitdiff
path: root/src/player.fnl
blob: a4292822c4455922ebd9274204ca4ae5c7ddfcaf (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
(local player { :x 250 :y 250 })

(local SPEED 170)
(local SPRINT-SPEED 280)

(fn player.move [self dt world]
    (let [speed (if (love.keyboard.isScancodeDown :lshift :rshift) 
                    SPRINT-SPEED SPEED)
          up    (if (love.keyboard.isScancodeDown :w :up) 1 0)
          down  (if (love.keyboard.isScancodeDown :s :down) 1 0)
          left  (if (love.keyboard.isScancodeDown :a :left) 1 0)
          right (if (love.keyboard.isScancodeDown :d :right) 1 0)
          vy (- down up)
          vx (- right left)
          sf (math.sqrt (+ (* vx vx) (* vy vy)))]
         (when (not= sf 0)
               (let [vx (/ vx sf)
                     vy (/ vy sf)
                     tx (+ self.x (* vx dt speed))
                     ty (+ self.y (* vy dt speed))
                     (ax ay) (world:move :player tx ty)]
                    (tset self :x ax)
                    (tset self :y ay)))))

(fn player.draw [self]
    (love.graphics.setColor 0.91 0.62 0)
    (love.graphics.rectangle :fill self.x self.y  10 10))

player