diff --git a/dev-assets/doodads/build.sh b/dev-assets/doodads/build.sh index 5b91a4d..e06763e 100755 --- a/dev-assets/doodads/build.sh +++ b/dev-assets/doodads/build.sh @@ -63,7 +63,13 @@ trapdoors() { cd trapdoors/ doodad convert -t "Trapdoor" down{1,2,3,4}.png trapdoor-down.doodad - doodad install-script down.js trapdoor-down.doodad + doodad convert -t "Trapdoor Left" left{1,2,3,4}.png trapdoor-left.doodad + doodad convert -t "Trapdoor Right" right{1,2,3,4}.png trapdoor-right.doodad + doodad convert -t "Trapdoor Up" up{1,2,3,4}.png trapdoor-up.doodad + doodad install-script trapdoor.js trapdoor-down.doodad + doodad install-script trapdoor.js trapdoor-left.doodad + doodad install-script trapdoor.js trapdoor-right.doodad + doodad install-script trapdoor.js trapdoor-up.doodad cp trapdoor-*.doodad ../../../assets/doodads/ diff --git a/dev-assets/doodads/trapdoors/left1.png b/dev-assets/doodads/trapdoors/left1.png new file mode 100644 index 0000000..e8cc2a6 Binary files /dev/null and b/dev-assets/doodads/trapdoors/left1.png differ diff --git a/dev-assets/doodads/trapdoors/left2.png b/dev-assets/doodads/trapdoors/left2.png new file mode 100644 index 0000000..9c74728 Binary files /dev/null and b/dev-assets/doodads/trapdoors/left2.png differ diff --git a/dev-assets/doodads/trapdoors/left3.png b/dev-assets/doodads/trapdoors/left3.png new file mode 100644 index 0000000..d9a21bc Binary files /dev/null and b/dev-assets/doodads/trapdoors/left3.png differ diff --git a/dev-assets/doodads/trapdoors/left4.png b/dev-assets/doodads/trapdoors/left4.png new file mode 100644 index 0000000..96d1537 Binary files /dev/null and b/dev-assets/doodads/trapdoors/left4.png differ diff --git a/dev-assets/doodads/trapdoors/right1.png b/dev-assets/doodads/trapdoors/right1.png new file mode 100644 index 0000000..85e4394 Binary files /dev/null and b/dev-assets/doodads/trapdoors/right1.png differ diff --git a/dev-assets/doodads/trapdoors/right2.png b/dev-assets/doodads/trapdoors/right2.png new file mode 100644 index 0000000..d4b090f Binary files /dev/null and b/dev-assets/doodads/trapdoors/right2.png differ diff --git a/dev-assets/doodads/trapdoors/right3.png b/dev-assets/doodads/trapdoors/right3.png new file mode 100644 index 0000000..73bc55b Binary files /dev/null and b/dev-assets/doodads/trapdoors/right3.png differ diff --git a/dev-assets/doodads/trapdoors/right4.png b/dev-assets/doodads/trapdoors/right4.png new file mode 100644 index 0000000..cf7a4e0 Binary files /dev/null and b/dev-assets/doodads/trapdoors/right4.png differ diff --git a/dev-assets/doodads/trapdoors/trapdoor.js b/dev-assets/doodads/trapdoors/trapdoor.js new file mode 100644 index 0000000..7c3571b --- /dev/null +++ b/dev-assets/doodads/trapdoors/trapdoor.js @@ -0,0 +1,71 @@ +function main() { + // What direction is the trapdoor facing? + // - Titles are like "Trapdoor Left" or "Trapdoor Right" + // - The default (down) is called just "Trapdoor" + var direction = Self.Doodad.Title.split(" ")[1]; + if (!direction) { + direction = "down"; + } + direction = direction.toLowerCase(); + + console.log("Trapdoor(%s) initialized", direction); + + var timer = 0; + + // Set our hitbox based on our orientation. + var thickness = 6; + var doodadSize = 72; + if (direction === "left") { + Self.SetHitbox(48, 0, doodadSize, doodadSize); + } else if (direction === "right") { + Self.SetHitbox(0, 0, thickness+4, doodadSize); + } else if (direction === "up") { + Self.SetHitbox(0, doodadSize - thickness, doodadSize, doodadSize); + } else { // Down, default. + Self.SetHitbox(0, 0, 72, 6); + } + + var animationSpeed = 100; + var opened = false; + + // Register our animations. + var frames = []; + for (var i = 1; i <= 4; i++) { + frames.push(direction + i); + } + + Self.AddAnimation("open", animationSpeed, frames); + frames.reverse(); + Self.AddAnimation("close", animationSpeed, frames); + + Events.OnCollide( function(e) { + if (opened) { + return; + } + + // Is the actor colliding our solid part? + if (e.InHitbox) { + // Are they touching our opening side? + if (direction === "left" && (e.Overlap.X+e.Overlap.W) < (doodadSize-thickness)) { + return false; + } else if (direction === "right" && e.Overlap.X > 0) { + return false; + } else if (direction === "up" && (e.Overlap.Y+e.Overlap.H) < doodadSize) { + return false; + } else if (direction === "down" && e.Overlap.Y > 0) { + return false; + } else { + opened = true; + Self.PlayAnimation("open", null); + } + } + }); + + Events.OnLeave(function() { + if (opened) { + Self.PlayAnimation("close", function() { + opened = false; + }); + } + }) +} diff --git a/dev-assets/doodads/trapdoors/up1.png b/dev-assets/doodads/trapdoors/up1.png new file mode 100644 index 0000000..686664b Binary files /dev/null and b/dev-assets/doodads/trapdoors/up1.png differ diff --git a/dev-assets/doodads/trapdoors/up2.png b/dev-assets/doodads/trapdoors/up2.png new file mode 100644 index 0000000..9898ed1 Binary files /dev/null and b/dev-assets/doodads/trapdoors/up2.png differ diff --git a/dev-assets/doodads/trapdoors/up3.png b/dev-assets/doodads/trapdoors/up3.png new file mode 100644 index 0000000..1d75b3d Binary files /dev/null and b/dev-assets/doodads/trapdoors/up3.png differ diff --git a/dev-assets/doodads/trapdoors/up4.png b/dev-assets/doodads/trapdoors/up4.png new file mode 100644 index 0000000..cd880a8 Binary files /dev/null and b/dev-assets/doodads/trapdoors/up4.png differ