diff --git a/dev-assets/doodads/buttons/sticky.js b/dev-assets/doodads/buttons/sticky.js index a715a59..1702f8c 100644 --- a/dev-assets/doodads/buttons/sticky.js +++ b/dev-assets/doodads/buttons/sticky.js @@ -2,7 +2,7 @@ function main() { var pressed = false; // When a sticky button receives power, it pops back up. - Message.Subscribe("power", function(powered) { + Message.Subscribe("power", function (powered) { if (powered && pressed) { Self.ShowLayer(0); pressed = false; @@ -12,7 +12,7 @@ function main() { } }) - Events.OnCollide(function(e) { + Events.OnCollide(function (e) { if (!e.Settled) { return; } diff --git a/dev-assets/doodads/objects/Makefile b/dev-assets/doodads/objects/Makefile index 86e33ce..e79ee47 100644 --- a/dev-assets/doodads/objects/Makefile +++ b/dev-assets/doodads/objects/Makefile @@ -10,6 +10,11 @@ build: doodad convert -t "Exit Flag" exit-flag.png exit-flag.doodad doodad install-script exit-flag.js exit-flag.doodad + # Checkpoint Flag + doodad convert -t "Checkpoint Flag" checkpoint-active.png \ + checkpoint-inactive.png checkpoint-flag.doodad + doodad install-script checkpoint-flag.js checkpoint-flag.doodad + # Anvil doodad convert -t "Anvil" anvil.png anvil.doodad doodad install-script anvil.js anvil.doodad diff --git a/dev-assets/doodads/objects/checkpoint-active.png b/dev-assets/doodads/objects/checkpoint-active.png new file mode 100644 index 0000000..d8d9503 Binary files /dev/null and b/dev-assets/doodads/objects/checkpoint-active.png differ diff --git a/dev-assets/doodads/objects/checkpoint-flag.js b/dev-assets/doodads/objects/checkpoint-flag.js new file mode 100644 index 0000000..a50608a --- /dev/null +++ b/dev-assets/doodads/objects/checkpoint-flag.js @@ -0,0 +1,38 @@ +// Checkpoint Flag. +var isCurrentCheckpoint = false; + +function main() { + Self.SetHitbox(22 + 16, 16, 75 - 16, 86); + setActive(false); + + // Checkpoints broadcast to all of their peers so they all + // know which one is the most recently activated. + Message.Subscribe("broadcast:checkpoint", function (currentID) { + setActive(false); + }); + + Events.OnCollide(function (e) { + if (!e.Settled) { + return; + } + + // Only care about the player character. + if (!e.Actor.IsPlayer()) { + return; + } + + // Set the player checkpoint. + SetCheckpoint(Self.Position()); + setActive(true); + Message.Broadcast("broadcast:checkpoint", Self.ID()) + }); +} + +function setActive(v) { + if (v && !isCurrentCheckpoint) { + Flash("Checkpoint!"); + } + + isCurrentCheckpoint = v; + Self.ShowLayerNamed(v ? "checkpoint-active" : "checkpoint-inactive"); +} \ No newline at end of file diff --git a/dev-assets/doodads/objects/checkpoint-inactive.png b/dev-assets/doodads/objects/checkpoint-inactive.png new file mode 100644 index 0000000..6781ff9 Binary files /dev/null and b/dev-assets/doodads/objects/checkpoint-inactive.png differ