Fix animation bug

This commit is contained in:
2021-01-03 18:54:05 -07:00
parent 53f0da0f46
commit 4300b70600

View File

@@ -20,46 +20,49 @@
(set up (set down false))) (set up (set down false)))
(when (and left right) (when (and left right)
(set left (set right false))) (set left (set right false)))
(when (or up down left right) (if (or up down left right)
(deflocal &mut :Float newAngle 0) (let [&mut :Float newAngle 0]
(cond
(up
(set newAngle -90)
(cond (cond
(up
(set newAngle -90)
(cond
(left
(set newAngle (- newAngle 45)))
(right
(set newAngle (+ newAngle 45))))
(set facing FlxObject.UP))
(down
(set newAngle 90)
(cond
(left
(set newAngle (+ newAngle 45)))
(right
(set newAngle (- newAngle 45))))
(set facing FlxObject.DOWN))
(left (left
(set newAngle (- newAngle 45))) (set newAngle 180)
(set facing FlxObject.LEFT))
(right (right
(set newAngle (+ newAngle 45)))) (set newAngle 0)
(set facing FlxObject.UP)) (set facing FlxObject.RIGHT)))
(down (velocity.set SPEED 0)
(set newAngle 90) (velocity.rotate (FlxPoint.weak 0 0) newAngle))
(cond (when animation.curAnim
(left (set animation.curAnim.curFrame 0)
(set newAngle (+ newAngle 45))) (animation.curAnim.pause)))
(right
(set newAngle (- newAngle 45))))
(set facing FlxObject.DOWN))
(left
(set newAngle 180)
(set facing FlxObject.LEFT))
(right
(set newAngle 0)
(set facing FlxObject.RIGHT)))
(velocity.set SPEED 0)
(velocity.rotate (FlxPoint.weak 0 0) newAngle)))
// TODO != is not implemented. Not sure how it would work as a variadic, because other // TODO != is not implemented. Not sure how it would work as a variadic, because other
// Lisps don't have that either // Lisps don't have that either
(when !(and (= 0 velocity.x) (= 0 velocity.y)) (when !(and (= 0 velocity.x) (= 0 velocity.y))
(case facing (case facing
((or FlxObject.LEFT FlxObject.RIGHT) ((or FlxObject.LEFT FlxObject.RIGHT)
(animation.play "lr")) (animation.play "lr"))
(FlxObject.UP (FlxObject.UP
(animation.play "u")) (animation.play "u"))
(FlxObject.DOWN (FlxObject.DOWN
(animation.play "d")) (animation.play "d"))
(otherwise (otherwise
(return)))) (return))))
(return)) (return)))
(defmethod &override update [:Float elapsed] (defmethod &override update [:Float elapsed]
(updateMovement) (updateMovement)