diff --git a/dev-assets/doodads/build.sh b/dev-assets/doodads/build.sh index e06763e..97ce263 100755 --- a/dev-assets/doodads/build.sh +++ b/dev-assets/doodads/build.sh @@ -24,6 +24,23 @@ buttons() { cd .. } +switches() { + cd switches/ + + doodad convert -t "Switch" switch-off.png switch-on.png switch.doodad + doodad convert -t "Floor Switch" down-off.png down-on.png switch-down.doodad + doodad convert -t "Left Switch" left-off.png left-on.png switch-left.doodad + doodad convert -t "Right Switch" right-off.png right-on.png switch-right.doodad + + doodad install-script switch.js switch.doodad + doodad install-script switch.js switch-down.doodad + doodad install-script switch.js switch-left.doodad + doodad install-script switch.js switch-right.doodad + + cp *.doodad ../../../assets/doodads/ + cd .. +} + doors() { cd doors/ @@ -104,6 +121,7 @@ objects() { } buttons +switches doors trapdoors azulians diff --git a/dev-assets/doodads/doors/electric-door.js b/dev-assets/doodads/doors/electric-door.js index cd028b7..7ecdbdb 100644 --- a/dev-assets/doodads/doors/electric-door.js +++ b/dev-assets/doodads/doors/electric-door.js @@ -23,8 +23,8 @@ function main() { }); } else { animating = true; + opened = false; Self.PlayAnimation("close", function() { - opened = false; animating = false; }) } diff --git a/dev-assets/doodads/switches/down-off.png b/dev-assets/doodads/switches/down-off.png new file mode 100644 index 0000000..2b08ca0 Binary files /dev/null and b/dev-assets/doodads/switches/down-off.png differ diff --git a/dev-assets/doodads/switches/down-on.png b/dev-assets/doodads/switches/down-on.png new file mode 100644 index 0000000..527b2a0 Binary files /dev/null and b/dev-assets/doodads/switches/down-on.png differ diff --git a/dev-assets/doodads/switches/left-off.png b/dev-assets/doodads/switches/left-off.png new file mode 100644 index 0000000..33acceb Binary files /dev/null and b/dev-assets/doodads/switches/left-off.png differ diff --git a/dev-assets/doodads/switches/left-on.png b/dev-assets/doodads/switches/left-on.png new file mode 100644 index 0000000..36d5c45 Binary files /dev/null and b/dev-assets/doodads/switches/left-on.png differ diff --git a/dev-assets/doodads/switches/right-off.png b/dev-assets/doodads/switches/right-off.png new file mode 100644 index 0000000..500e65c Binary files /dev/null and b/dev-assets/doodads/switches/right-off.png differ diff --git a/dev-assets/doodads/switches/right-on.png b/dev-assets/doodads/switches/right-on.png new file mode 100644 index 0000000..c5a196e Binary files /dev/null and b/dev-assets/doodads/switches/right-on.png differ diff --git a/dev-assets/doodads/switches/switch-off.png b/dev-assets/doodads/switches/switch-off.png new file mode 100644 index 0000000..4e7c006 Binary files /dev/null and b/dev-assets/doodads/switches/switch-off.png differ diff --git a/dev-assets/doodads/switches/switch-on.png b/dev-assets/doodads/switches/switch-on.png new file mode 100644 index 0000000..bb191ce Binary files /dev/null and b/dev-assets/doodads/switches/switch-on.png differ diff --git a/dev-assets/doodads/switches/switch.js b/dev-assets/doodads/switches/switch.js new file mode 100644 index 0000000..6a273ee --- /dev/null +++ b/dev-assets/doodads/switches/switch.js @@ -0,0 +1,38 @@ +function main() { + console.log("%s initialized!", Self.Doodad.Title); + + // Switch has two frames: + // 0: Off + // 1: On + + var state = false; + var collide = false; + + Message.Subscribe("power", function(powered) { + state = powered; + showState(state); + }); + + Events.OnCollide(function(e) { + if (collide === false) { + state = !state; + Message.Publish("power", state); + showState(state); + + collide = true; + } + }); + + Events.OnLeave(function(e) { + collide = false; + }); +} + +// showState shows the on/off frame based on the boolean powered state. +function showState(state) { + if (state) { + Self.ShowLayer(1); + } else { + Self.ShowLayer(0); + } +}