package NET.worlds.console; import NET.worlds.scape.DeepEnumeration; import NET.worlds.scape.Drone; import NET.worlds.scape.Pilot; import NET.worlds.scape.Point3Temp; import NET.worlds.scape.Room; import NET.worlds.scape.SuperRoot; import NET.worlds.scape.WObject; import java.util.Enumeration; import java.util.Hashtable; class ArmyOfZombies { Hashtable zombies = new Hashtable(); private static ArmyOfZombies instance = new ArmyOfZombies(); public static ArmyOfZombies instance() { return instance; } protected ArmyOfZombies() { } public void killZombies() { Enumeration e = this.zombies.elements(); while (e.hasMoreElements()) { Drone id = e.nextElement(); Enumeration en = (Enumeration)id.getContents(); while (en.hasMoreElements()) { WObject wob = en.nextElement(); wob.detach(); } id.detach(); id.discard(); } this.zombies.clear(); } public void addZombie(Drone id) { String name = id.getName(); if (name.charAt(0) == '!') { name = name.substring(1); } this.zombies.put(name, id); } public void replaceZombie(String name, Drone id) { Drone oldId = this.get(name); if (oldId != id) { this.zombies.remove(name); this.addZombie(id); id.makeTag(true); } } public void killZombie(String name) { Drone id = this.get(name); if (id != null) { this.zombies.remove(name); id.detach(); } } public void zombify() { if (Pilot.getActive() != null) { if (Pilot.getActive().getRoom() != null) { if (Pilot.getActive().getRoom().getWorld() != null) { Enumeration rooms = Pilot.getActive().getRoom().getWorld().getRooms(); while (rooms.hasMoreElements()) { Room r = (Room)rooms.nextElement(); if (r != null) { DeepEnumeration de = new DeepEnumeration(); r.getChildren(de); while (de.hasMoreElements()) { Object o = de.nextElement(); if (o instanceof Drone) { Drone d = (Drone)o; Point3Temp pos = d.getPosition(); short dir = (short)(-d.getYaw() + 90.0F); dir = (short)(dir % 360); while (dir < 0) { dir = (short)(dir + 360); } SuperRoot wobj = d.getOwner(); if (wobj != null) { Room rm = wobj.getRoom(); if (rm != null && d.getName() != null) { BlackBox.getInstance() .submitEvent(new BBAppearDroneCommand(r.getRoom().toString(), d.getName(), (short)pos.x, (short)pos.y, (short)pos.z, dir)); if (d.getCurrentURL() != null) { BlackBox.getInstance().submitEvent(new BBDroneBitmapCommand(d.getName(), d.getCurrentURL().toString())); } } } } } } } } } } } Drone get(String name) { if (name.charAt(0) == '!') { name = name.substring(1); } return this.zombies.get(name); } }