package NET.worlds.console; import NET.worlds.scape.DeepEnumeration; import NET.worlds.scape.MouseDownEvent; import NET.worlds.scape.MouseDownHandler; import NET.worlds.scape.Pilot; import NET.worlds.scape.Room; import NET.worlds.scape.SuperRoot; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class BBWObjClickedCommand extends BlackBoxCommand { private String objUrl; int x; int y; char key; public BBWObjClickedCommand() { this.commandType = 4; } public BBWObjClickedCommand(String obj, char pkey, int px, int py) { this(); this.objUrl = new String(obj); this.key = pkey; this.x = px; this.y = py; } @Override public boolean execute() { MouseDownHandler target = null; if (Pilot.getActive() == null) { return false; } else { Room r = Pilot.getActive().getRoom(); if (r == null) { return false; } else { DeepEnumeration de = new DeepEnumeration(); r.getChildren(de); while (de.hasMoreElements()) { Object o = de.nextElement(); if (o instanceof MouseDownHandler && ((SuperRoot)o).getName().equals(this.objUrl)) { target = (MouseDownHandler)o; break; } } if (target == null) { this.doCallback(false); return false; } else { MouseDownEvent e = new MouseDownEvent(0, null, this.key, this.x, this.y); target.handle(e); this.doCallback(true); return true; } } } } @Override public void save(DataOutputStream dos) throws IOException { super.save(dos); dos.writeInt(this.x); dos.writeInt(this.y); dos.writeChar(this.key); dos.writeUTF(this.objUrl); } @Override public void load(DataInputStream dis) throws IOException { super.load(dis); this.x = dis.readInt(); this.y = dis.readInt(); this.key = dis.readChar(); this.objUrl = dis.readUTF(); } }