package NET.worlds.scape; import java.io.IOException; public class DiffRoomSensor extends Sensor implements FrameHandler { private Room lastCamRoom; private static Object classCookie = new Object(); @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 == thisRoom) { this.trigger(e); } this.lastCamRoom = thisCamRoom; return true; } else { return true; } } @Override public void saveState(Saver s) throws IOException { s.saveVersion(0, classCookie); super.saveState(s); } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 0: super.restoreState(r); return; default: throw new TooNewException(); } } }