diff --git a/dev-assets/doodads/azulian/azulian.js b/dev-assets/doodads/azulian/azulian.js index 54db87e..bd63b64 100644 --- a/dev-assets/doodads/azulian/azulian.js +++ b/dev-assets/doodads/azulian/azulian.js @@ -1,7 +1,8 @@ // Azulian (Red and Blue) var playerSpeed = 12, animating = false, - direction = "right"; + direction = "right", + lastDirection = "right"; function setupAnimations(color) { var left = color === 'blue' ? 'blu-wl' : 'red-wl', @@ -49,9 +50,17 @@ function main() { var Vx = parseFloat(playerSpeed * (direction === "left" ? -1 : 1)); Self.SetVelocity(Vector(Vx, 0.0)); + // If we changed directions, stop animating now so we can + // turn around quickly without moonwalking. + if (direction !== lastDirection) { + Self.StopAnimation(); + } + if (!Self.IsAnimating()) { Self.PlayAnimation("walk-" + direction, null); } + + lastDirection = direction; }, 100); } diff --git a/dev-assets/doodads/bird/bird.js b/dev-assets/doodads/bird/bird.js index e6d38c8..5d94ebe 100644 --- a/dev-assets/doodads/bird/bird.js +++ b/dev-assets/doodads/bird/bird.js @@ -5,7 +5,8 @@ function main() { var Vx = Vy = 0; var altitude = Self.Position().Y; // original height in the level - var direction = "left"; + var direction = "left", + lastDirection = "left"; var states = { flying: 0, diving: 1, @@ -51,9 +52,17 @@ function main() { var Vx = parseFloat(speed * (direction === "left" ? -1 : 1)); Self.SetVelocity(Vector(Vx, 0.0)); + // If we changed directions, stop animating now so we can + // turn around quickly without moonwalking. + if (direction !== lastDirection) { + Self.StopAnimation(); + } + if (!Self.IsAnimating()) { Self.PlayAnimation("fly-" + direction, null); } + + lastDirection = direction; }, 100); } diff --git a/dev-assets/doodads/thief/Makefile b/dev-assets/doodads/thief/Makefile index fc6b00c..99bc045 100644 --- a/dev-assets/doodads/thief/Makefile +++ b/dev-assets/doodads/thief/Makefile @@ -3,6 +3,7 @@ ALL: build .PHONY: build build: doodad convert -t "Thief" stand-right.png stand-left.png \ + walk-right-{1,2,3}.png walk-left-{1,2,3}.png \ thief.doodad doodad install-script thief.js thief.doodad diff --git a/dev-assets/doodads/thief/stand-left.png b/dev-assets/doodads/thief/stand-left.png index 9e58a98..9dc96b5 100644 Binary files a/dev-assets/doodads/thief/stand-left.png and b/dev-assets/doodads/thief/stand-left.png differ diff --git a/dev-assets/doodads/thief/stand-right.png b/dev-assets/doodads/thief/stand-right.png index be7a8b5..96b5f13 100644 Binary files a/dev-assets/doodads/thief/stand-right.png and b/dev-assets/doodads/thief/stand-right.png differ diff --git a/dev-assets/doodads/thief/thief.js b/dev-assets/doodads/thief/thief.js index 3d97217..bdc945a 100644 --- a/dev-assets/doodads/thief/thief.js +++ b/dev-assets/doodads/thief/thief.js @@ -5,8 +5,8 @@ function main() { Self.SetGravity(true); Self.SetInventory(true); Self.SetHitbox(0, 0, 32, 58); - Self.AddAnimation("walk-left", 200, ["stand-left"]); //, "walk-left-1", "walk-left-2", "walk-left-3", "walk-left-2", "walk-left-1"]); - Self.AddAnimation("walk-right", 200, ["stand-right"]); //, "walk-right-1", "walk-right-2", "walk-right-3", "walk-right-2", "walk-right-1"]); + Self.AddAnimation("walk-left", 200, ["stand-left", "walk-left-1", "walk-left-2", "walk-left-3", "walk-left-2", "walk-left-1"]); + Self.AddAnimation("walk-right", 200, ["stand-right", "walk-right-1", "walk-right-2", "walk-right-3", "walk-right-2", "walk-right-1"]); // All thieves can steal items. stealable(); @@ -71,6 +71,7 @@ function ai() { var Vx = Vy = 0.0, playerSpeed = 4, direction = "right", + lastDirection = "right", lastSampledX = 0, sampleTick = 0, sampleRate = 2; @@ -89,8 +90,17 @@ function ai() { Vx = parseFloat(playerSpeed * (direction === "left" ? -1 : 1)); Self.SetVelocity(Vector(Vx, Vy)); - Self.StopAnimation(); - Self.PlayAnimation("walk-" + direction, null); + // If we changed directions, stop animating now so we can + // turn around quickly without moonwalking. + if (direction !== lastDirection) { + Self.StopAnimation(); + } + + if (!Self.IsAnimating()) { + Self.PlayAnimation("walk-" + direction, null); + } + + lastDirection = direction; }, 100); } diff --git a/dev-assets/doodads/thief/walk-left-1.png b/dev-assets/doodads/thief/walk-left-1.png new file mode 100644 index 0000000..5e0e16d Binary files /dev/null and b/dev-assets/doodads/thief/walk-left-1.png differ diff --git a/dev-assets/doodads/thief/walk-left-2.png b/dev-assets/doodads/thief/walk-left-2.png new file mode 100644 index 0000000..402e8d0 Binary files /dev/null and b/dev-assets/doodads/thief/walk-left-2.png differ diff --git a/dev-assets/doodads/thief/walk-left-3.png b/dev-assets/doodads/thief/walk-left-3.png new file mode 100644 index 0000000..352a45c Binary files /dev/null and b/dev-assets/doodads/thief/walk-left-3.png differ diff --git a/dev-assets/doodads/thief/walk-right-1.png b/dev-assets/doodads/thief/walk-right-1.png new file mode 100644 index 0000000..138d9a4 Binary files /dev/null and b/dev-assets/doodads/thief/walk-right-1.png differ diff --git a/dev-assets/doodads/thief/walk-right-2.png b/dev-assets/doodads/thief/walk-right-2.png new file mode 100644 index 0000000..2e33928 Binary files /dev/null and b/dev-assets/doodads/thief/walk-right-2.png differ diff --git a/dev-assets/doodads/thief/walk-right-3.png b/dev-assets/doodads/thief/walk-right-3.png new file mode 100644 index 0000000..e0b6244 Binary files /dev/null and b/dev-assets/doodads/thief/walk-right-3.png differ