42 lines
1.4 KiB
Plaintext
42 lines
1.4 KiB
Plaintext
(defvar &inline :Float SPEED 200)
|
|
|
|
(defmethod new [:Float x :Float y]
|
|
(super x y)
|
|
(makeGraphic 16 16 FlxColor.BLUE)
|
|
(set drag.x (set drag.y 1600))
|
|
(return))
|
|
|
|
(defmethod updateMovement []
|
|
(let [[&mut up &mut down &mut left &mut right]
|
|
(map [[UP W] [DOWN S] [LEFT A] [RIGHT D]] FlxG.keys.anyPressed)]
|
|
(when (and up down)
|
|
(set up (set down false)))
|
|
(when (and left right)
|
|
(set left (set right false)))
|
|
(when (or up down left right)
|
|
(deflocal &mut :Float newAngle 0)
|
|
(cond
|
|
(up
|
|
(set newAngle -90)
|
|
(cond
|
|
(left
|
|
(set newAngle (- newAngle 45)))
|
|
(right
|
|
(set newAngle (+ newAngle 45)))))
|
|
(down
|
|
(set newAngle 90)
|
|
(cond
|
|
(left
|
|
(set newAngle (+ newAngle 45)))
|
|
(right
|
|
(set newAngle (- newAngle 45)))))
|
|
(left
|
|
(set newAngle 180))
|
|
(right
|
|
(set newAngle 0)))
|
|
(velocity.set SPEED 0)
|
|
(velocity.rotate (FlxPoint.weak 0 0) newAngle))))
|
|
|
|
(defmethod &override update [:Float elapsed]
|
|
(updateMovement)
|
|
(super.update elapsed)) |