You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
947 B
38 lines
947 B
// 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");
|
|
}
|