package NET.worlds.scape; import java.io.IOException; public class PosableAction extends Action { private String action = "wave"; private static Object classCookie = new Object(); public PosableAction() { } public PosableAction(String action) { this.action = action; this.rightMenuLabel = action; } @Override public Persister trigger(Event e, Persister seqID) { SuperRoot o = this.getOwner(); if (o instanceof PosableShape) { ((PosableShape)o).animate(this.action); } else if (o instanceof Drone) { ((Drone)o).animate(this.action); } else if (o instanceof Pilot) { ((Pilot)o).animate(this.action); } 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, "Action Name")); } else if (mode == 1) { ret = new String(this.action); } else if (mode == 2) { this.action = (String)value; } break; default: ret = super.properties(index, offset + 1, mode, value); } return ret; } @Override public String toString() { return super.toString() + "[action " + this.action + "]"; } @Override public void saveState(Saver s) throws IOException { s.saveVersion(0, classCookie); super.saveState(s); s.saveString(this.action); } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 0: super.restoreState(r); this.action = r.restoreString(); return; default: throw new TooNewException(); } } }