package NET.worlds.scape; import java.io.IOException; public class TalkAction extends Action { String txt = null; private static Object classCookie = new Object(); public TalkAction() { } public TalkAction(String text) { this.txt = text; } @Override public Persister trigger(Event arg, Persister seqID) { Pilot.getActive(); Pilot.sendText(this.txt); return null; } @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, "Message")); } else if (mode == 1) { ret = this.txt; } else if (mode == 2) { this.txt = (String)value; } break; default: ret = super.properties(index, offset + 1, mode, value); } return ret; } @Override public void saveState(Saver s) throws IOException { s.saveVersion(0, classCookie); super.saveState(s); s.saveString(this.txt); } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 0: super.restoreState(r); this.txt = r.restoreString(); return; default: throw new TooNewException(); } } @Override public String toString() { return super.toString() + "[" + this.txt + "]"; } }