diff --git a/dev-assets/doodads/boy/Makefile b/dev-assets/doodads/boy/Makefile index 39d98a8..aaa98ed 100644 --- a/dev-assets/doodads/boy/Makefile +++ b/dev-assets/doodads/boy/Makefile @@ -5,6 +5,8 @@ build: doodad convert -t "Boy" stand-right.png stand-left.png \ walk-right-1.png walk-right-2.png walk-right-3.png \ walk-left-1.png walk-left-2.png walk-left-3.png \ + idle-right-1.png idle-right-2.png idle-right-3.png \ + idle-left-1.png idle-left-2.png idle-left-3.png \ boy.doodad doodad install-script boy.js boy.doodad diff --git a/dev-assets/doodads/boy/boy.js b/dev-assets/doodads/boy/boy.js index 6b087e5..c62bf8d 100644 --- a/dev-assets/doodads/boy/boy.js +++ b/dev-assets/doodads/boy/boy.js @@ -1,8 +1,9 @@ const playerSpeed = 12; let Vx = Vy = 0, - animating = false, - animStart = animEnd = 0; + walking = false, + direction = "right", + lastDirection = direction; function main() { Self.SetMobile(true); @@ -11,6 +12,8 @@ function main() { Self.SetHitbox(0, 0, 32, 52); 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("idle-left", 200, ["idle-left-1", "idle-left-2", "idle-left-3", "idle-left-2"]); + Self.AddAnimation("idle-right", 200, ["idle-right-1", "idle-right-2", "idle-right-3", "idle-right-2"]); // If the player suddenly changes direction, reset the animation state to quickly switch over. let lastVelocity = Vector(0, 0); @@ -25,20 +28,35 @@ function main() { Self.StopAnimation(); } lastVelocity = curVelocity; + lastDirection = direction; + let wasWalking = walking; if (ev.Right) { - if (!Self.IsAnimating()) { - Self.PlayAnimation("walk-right", null); - } + direction = "right"; Vx = playerSpeed; + walking = true; } else if (ev.Left) { - if (!Self.IsAnimating()) { - Self.PlayAnimation("walk-left", null); - } + direction = "left"; Vx = -playerSpeed; + walking = true; } else { + // Has stopped walking! + walking = false; + stoppedWalking = true; + } + + // Should we stop animating? (changed state) + if (direction !== lastDirection || wasWalking !== walking) { Self.StopAnimation(); - animating = false; + } + + // And play what animation? + if (!Self.IsAnimating()) { + if (walking) { + Self.PlayAnimation("walk-"+direction, null); + } else { + Self.PlayAnimation("idle-"+direction, null); + } } }) } diff --git a/dev-assets/doodads/boy/idle-left-1.png b/dev-assets/doodads/boy/idle-left-1.png new file mode 100644 index 0000000..ca64929 Binary files /dev/null and b/dev-assets/doodads/boy/idle-left-1.png differ diff --git a/dev-assets/doodads/boy/idle-left-2.png b/dev-assets/doodads/boy/idle-left-2.png new file mode 100644 index 0000000..192388b Binary files /dev/null and b/dev-assets/doodads/boy/idle-left-2.png differ diff --git a/dev-assets/doodads/boy/idle-left-3.png b/dev-assets/doodads/boy/idle-left-3.png new file mode 100644 index 0000000..7c0aa43 Binary files /dev/null and b/dev-assets/doodads/boy/idle-left-3.png differ diff --git a/dev-assets/doodads/boy/idle-right-1.png b/dev-assets/doodads/boy/idle-right-1.png new file mode 100644 index 0000000..def2698 Binary files /dev/null and b/dev-assets/doodads/boy/idle-right-1.png differ diff --git a/dev-assets/doodads/boy/idle-right-2.png b/dev-assets/doodads/boy/idle-right-2.png new file mode 100644 index 0000000..ab55a73 Binary files /dev/null and b/dev-assets/doodads/boy/idle-right-2.png differ diff --git a/dev-assets/doodads/boy/idle-right-3.png b/dev-assets/doodads/boy/idle-right-3.png new file mode 100644 index 0000000..345b43f Binary files /dev/null and b/dev-assets/doodads/boy/idle-right-3.png differ diff --git a/pkg/branding/branding.go b/pkg/branding/branding.go index 28162f6..0bff209 100644 --- a/pkg/branding/branding.go +++ b/pkg/branding/branding.go @@ -9,7 +9,7 @@ import ( const ( AppName = "Sketchy Maze" Summary = "A drawing-based maze game" - Version = "0.12.1" + Version = "0.13.0" Website = "https://www.sketchymaze.com" Copyright = "2022 Noah Petherbridge" Byline = "a game by Noah Petherbridge." diff --git a/pkg/modal/modal.go b/pkg/modal/modal.go index 9b58e6f..c4c33c5 100644 --- a/pkg/modal/modal.go +++ b/pkg/modal/modal.go @@ -3,6 +3,7 @@ package modal import ( "git.kirsle.net/apps/doodle/pkg/balance" + "git.kirsle.net/apps/doodle/pkg/cursor" "git.kirsle.net/apps/doodle/pkg/keybind" "git.kirsle.net/apps/doodle/pkg/modal/loadscreen" "git.kirsle.net/apps/doodle/pkg/shmem" @@ -91,6 +92,7 @@ func Handled(ev *event.State) bool { // Draw the modal UI to the screen. func Draw() { if ready && current != nil { + cursor.Current = cursor.NewPointer(engine) screen.Present(engine, render.Origin) supervisor.Present(engine) }