package NET.worlds.scape; import java.io.IOException; public class SameRoomSensor extends Sensor implements FrameHandler { private Room lastCamRoom; private static Object classCookie = new Object(); public SameRoomSensor(Action a) { if (a != null) { this.addAction(a); } } public SameRoomSensor() { } @Override public void detach() { this.lastCamRoom = null; super.detach(); } @Override public boolean handle(FrameEvent e) { Object owner = this.getOwner(); if (owner != null && owner instanceof WObject) { WObject o = (WObject)owner; Room thisRoom = o.getRoom(); Room thisCamRoom = Pilot.getActiveRoom(); if (thisCamRoom == thisRoom && this.lastCamRoom != thisCamRoom) { this.trigger(e); } this.lastCamRoom = thisCamRoom; return true; } else { return true; } } @Override public void saveState(Saver s) throws IOException { super.saveState(s); s.saveVersion(0, classCookie); } @Override public void restoreState(Restorer r) throws IOException, TooNewException { int vers = super.restoreStateVers(r); if (vers > 1) { switch (r.restoreVersion(classCookie)) { case 0: return; default: throw new TooNewException(); } } } }