package NET.worlds.scape; import NET.worlds.console.Console; import java.io.IOException; import java.text.MessageFormat; public class Teleport extends SwitchableBehavior implements FrameHandler, Persister, MouseDownHandler, BumpHandler, TeleportStatus { String trigger = "none"; String externalTriggerTag = ""; String worldName = ""; private Room currentRoom = null; @Override public boolean handle(FrameEvent e) { return true; } @Override public boolean handle(MouseDownEvent e) { if (this.enabled && this.trigger.equals("click")) { this.currentRoom = e.target.getRoom(); TeleportAction.teleport(this.worldName, this); } return true; } @Override public boolean handle(BumpEventTemp e) { if (this.enabled && this.trigger.equals("bump")) { this.currentRoom = e.target.getRoom(); TeleportAction.teleport(this.worldName, this); } return true; } @Override public void teleportStatus(String err, String url) { } @Override public Object properties(int index, int offset, int mode, Object value) throws NoSuchPropertyException { Object ret = null; switch (index - offset) { case 0: if (mode == 0) { ret = StringPropertyEditor.make(new Property(this, index, "Trigger")); } else if (mode == 1) { ret = new String(this.trigger); } else if (mode == 2) { this.trigger = ((String)value).trim(); } break; case 1: if (mode == 0) { ret = StringPropertyEditor.make(new Property(this, index, "External Trigger Tag")); } else if (mode == 1) { ret = new String(this.externalTriggerTag); } else if (mode == 2) { this.externalTriggerTag = ((String)value).trim(); } break; case 2: if (mode == 0) { ret = StringPropertyEditor.make(new Property(this, index, "World Name")); } else if (mode == 1) { ret = new String(this.worldName); } else if (mode == 2) { this.worldName = ((String)value).trim(); } break; default: ret = super.properties(index, offset + 3, mode, value); } return ret; } @Override public String toString() { return super.toString() + "[trigger " + this.trigger + ", External trigger" + this.externalTriggerTag + ", World Name " + this.worldName + ", enabled " + this.enabled + "]"; } @Override public void saveState(Saver s) throws IOException { s.saveString(this.trigger); s.saveString(this.externalTriggerTag); s.saveString(this.worldName); } @Override public void restoreState(Restorer r) throws IOException { this.trigger = r.restoreString(); this.externalTriggerTag = r.restoreString(); this.worldName = r.restoreString(); } @Override public void postRestore(int version) { String name = this.getName(); String arg1 = name == null ? "" : name; SuperRoot owner = this.getOwner(); String oname = ""; if (owner != null) { oname = owner.getName(); } String arg2 = oname == null ? "" : oname; Object[] arguments = new Object[]{new String(arg1), new String(arg2)}; Console.println(MessageFormat.format(Console.message("Teleport-obs"), arguments)); } }