diff options
Diffstat (limited to 'NET/worlds/scape/Drone.java')
| -rw-r--r-- | NET/worlds/scape/Drone.java | 1289 |
1 files changed, 1289 insertions, 0 deletions
diff --git a/NET/worlds/scape/Drone.java b/NET/worlds/scape/Drone.java new file mode 100644 index 0000000..5699ad2 --- /dev/null +++ b/NET/worlds/scape/Drone.java @@ -0,0 +1,1289 @@ +/* */ package NET.worlds.scape; +/* */ +/* */ import NET.worlds.console.BBAppearDroneCommand; +/* */ import NET.worlds.console.BBDisappearDroneCommand; +/* */ import NET.worlds.console.BBDroneBitmapCommand; +/* */ import NET.worlds.console.BBDroneDeltaPosCommand; +/* */ import NET.worlds.console.BBMoveDroneCommand; +/* */ import NET.worlds.console.BlackBox; +/* */ import NET.worlds.console.Console; +/* */ import NET.worlds.console.FriendsListPart; +/* */ import NET.worlds.console.Main; +/* */ import NET.worlds.console.MainCallback; +/* */ import NET.worlds.console.MuteListPart; +/* */ import NET.worlds.core.IniFile; +/* */ import NET.worlds.core.ServerTableManager; +/* */ import NET.worlds.core.Std; +/* */ import NET.worlds.network.FilthFilter; +/* */ import NET.worlds.network.Galaxy; +/* */ import NET.worlds.network.InfiniteWaitException; +/* */ import NET.worlds.network.NetworkObject; +/* */ import NET.worlds.network.ObjID; +/* */ import NET.worlds.network.OldPropertyList; +/* */ import NET.worlds.network.PacketTooLargeException; +/* */ import NET.worlds.network.PropertyList; +/* */ import NET.worlds.network.URL; +/* */ import NET.worlds.network.WorldServer; +/* */ import NET.worlds.network.net2Property; +/* */ import NET.worlds.network.netProperty; +/* */ import NET.worlds.network.propReqCmd; +/* */ import java.awt.Color; +/* */ import java.io.IOException; +/* */ import java.io.PrintStream; +/* */ import java.net.MalformedURLException; +/* */ import java.util.Enumeration; +/* */ import java.util.Hashtable; +/* */ import java.util.Vector; +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public abstract class Drone +/* */ extends WObject +/* */ implements NetworkObject, WobLoaded, MouseDownHandler, FrameHandler +/* */ { +/* */ private int _last_FrameTime; +/* */ private int _last_PosTime; +/* */ private int _vel_x; +/* */ private int _vel_y; +/* */ private int _vel_z; +/* */ private int _vel_yaw; +/* */ private int _last_x; +/* */ private int _last_y; +/* */ private int _last_z; +/* */ private int _last_yaw; +/* */ private int _x; +/* */ private int _y; +/* */ private int _z; +/* */ private int _yaw; +/* 170 */ private boolean inited = false; +/* */ +/* */ +/* */ +/* */ protected WObject tag; +/* */ +/* */ +/* */ +/* */ protected WObject tagbg; +/* */ +/* */ +/* */ +/* */ private Console console; +/* */ +/* */ +/* */ +/* */ private float tagHeight; +/* */ +/* */ +/* */ +/* */ private Shape sleepBox; +/* */ +/* */ +/* */ +/* */ +/* */ public Drone(ObjID id, WorldServer serv) +/* */ { +/* 197 */ if (serv != null) { +/* 198 */ assert (id != null); +/* 199 */ attachToServer(serv.getLongID(id), serv); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ protected Drone(String longID, WorldServer serv) +/* */ { +/* 211 */ assert (longID != null); +/* 212 */ if (serv != null) { +/* 213 */ attachToServer(longID, serv); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ private void attachToServer(String longID, WorldServer serv) +/* */ { +/* 222 */ if (serv == null) { +/* 223 */ return; +/* */ } +/* */ +/* */ +/* 227 */ assert (Main.isMainThread()); +/* 228 */ String nameWas = null; +/* 229 */ if (this.tag != null) { +/* 230 */ nameWas = getLongID(); +/* */ } +/* */ +/* 233 */ getSharer().createDynamicFromNet(); +/* */ +/* 235 */ setName(longID); +/* 236 */ String nameIs = getLongID(); +/* 237 */ this._server = serv; +/* 238 */ this._server.incRefCnt(this); +/* */ +/* 240 */ this._server.regObject(nameIs, this); +/* */ try { +/* 242 */ this._server.sendNetworkMsg(new propReqCmd(new ObjID(getLongID()))); +/* */ } +/* */ catch (InfiniteWaitException localInfiniteWaitException) {}catch (PacketTooLargeException e) { +/* 245 */ if (!$assertionsDisabled) { throw new AssertionError(); +/* */ } +/* */ } +/* 248 */ if (nameIs.equals(nameWas)) +/* */ { +/* 250 */ avatarHeightChangedTo(189.0F); +/* */ } else { +/* 252 */ makeTag(false); +/* */ } +/* 254 */ Main.register(new MakeSleepBox()); +/* */ } +/* */ +/* */ class MakeSleepBox +/* */ implements MainCallback +/* */ { +/* */ MakeSleepBox() {} +/* */ +/* */ public void mainCallback() +/* */ { +/* 264 */ if ((Drone.this.sleepMode != null) && +/* 265 */ (Drone.this.sleepMode.equals(Console.message("asleep"))) && +/* 266 */ (!(Drone.this instanceof MutedDrone))) +/* */ { +/* 268 */ if (Drone.this.sleepBox == null) { +/* 269 */ Drone.this.sleepBox = new Shape(); +/* 270 */ Drone.this.sleepBox.setURL(URL.make("home:idle.rwg")); +/* 271 */ Drone.this.sleepBox.setBumpable(false); +/* 272 */ Drone.this.sleepBox.scale(100.0F); +/* 273 */ Drone.this.sleepBox.spin(0.0F, 1.0F, 1.0F, 180.0F); +/* 274 */ Drone.this.sleepBox.raise(189.0F); +/* 275 */ Drone.this.add(Drone.this.sleepBox); +/* */ } +/* */ +/* */ } +/* 279 */ else if (Drone.this.sleepBox != null) { +/* 280 */ Drone.this.sleepBox.detach(); +/* 281 */ Drone.this.sleepBox = null; +/* */ } +/* */ +/* 284 */ Main.unregister(this); +/* */ } +/* */ } +/* */ +/* */ static class Flusher implements MainCallback { +/* */ int lastTime; +/* */ +/* */ public void mainCallback() { +/* 292 */ int now = Std.getFastTime(); +/* 293 */ if (now > this.lastTime + 1000) { +/* 294 */ Drone.access$3(); +/* 295 */ this.lastTime = now; +/* */ } +/* */ } +/* */ } +/* */ +/* */ static { +/* 301 */ Main.register(new Flusher()); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ private static void flushUnusedDrones() +/* */ { +/* 309 */ synchronized (usableDrones) { +/* 310 */ int now = Std.getFastTime(); +/* 311 */ int i = usableDrones.size(); +/* 312 */ do { Drone d = (Drone)usableDrones.elementAt(i); +/* 313 */ if (now > d.lastUsed + 2000) { +/* 314 */ usableDrones.removeElementAt(i); +/* 315 */ d.discard(); +/* */ } +/* 311 */ i--; } while (i >= 0); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* 321 */ static boolean showNametags = IniFile.gamma().getIniInt("SHOWNAMETAGS", 1) == 1; +/* */ +/* 323 */ private static String[] employeeAccounts = ServerTableManager.instance() +/* 324 */ .getTable("employeeAccounts"); +/* */ +/* 326 */ private static Hashtable<String, String> employeeHash = null; +/* */ +/* */ public static boolean isEmployeeAccount(String name) { +/* 329 */ if (employeeHash == null) { +/* 330 */ employeeHash = new Hashtable(); +/* 331 */ for (int i = 0; i < employeeAccounts.length; i++) { +/* 332 */ employeeHash.put(employeeAccounts[i], employeeAccounts[i]); +/* */ } +/* */ } +/* */ +/* 336 */ return employeeHash.get(name) != null; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void makeTag(boolean force) +/* */ { +/* 345 */ this.tagHeight = 195.0F; +/* 346 */ if (this.tag != null) +/* */ { +/* 348 */ this.tagHeight = this.tag.getPosition().z; +/* 349 */ this.tag.detach(); +/* 350 */ this.tag = null; +/* */ } +/* 352 */ if (this.tagbg != null) { +/* 353 */ this.tagbg.detach(); +/* 354 */ this.tagbg = null; +/* */ } +/* */ +/* */ +/* 358 */ if (((this._server == null) && (!force)) || ((this instanceof MutedDrone)) || +/* 359 */ (!showNametags)) { +/* 360 */ return; +/* */ } +/* 362 */ String unfilteredName = getLongID(); +/* */ +/* 364 */ String name = FilthFilter.get().filterName(unfilteredName); +/* 365 */ if ((name == null) || (name.equals(""))) { +/* 366 */ return; +/* */ } +/* 368 */ Texture[] tagText = new Texture[1]; +/* */ +/* */ +/* 371 */ boolean hw = RenderWare.get3DHardwareInUse(); +/* */ +/* 373 */ boolean isHost = (name.toLowerCase().startsWith(Console.message("host"))) || +/* 374 */ (name.toLowerCase().startsWith("host")); +/* 375 */ if (isHost) { +/* 376 */ name = Console.message("host-upper") + name.substring(4); +/* */ } +/* 378 */ boolean isSpecialGuest = +/* 379 */ (name.toLowerCase().startsWith(Console.message("guest-"))) || +/* 380 */ (name.toLowerCase().startsWith("guest-")); +/* 381 */ if (isSpecialGuest) { +/* 382 */ name = Console.message("guest-upper") + name.substring(5); +/* */ } +/* 384 */ boolean isEmployee = isEmployeeAccount(name); +/* */ +/* */ Color bgColor; +/* */ Color bgColor; +/* 388 */ if (isSpecialGuest) { +/* 389 */ bgColor = Color.pink; } else { Color bgColor; +/* 390 */ if (isHost) { +/* 391 */ bgColor = Color.yellow; } else { Color bgColor; +/* 392 */ if (isEmployee) { +/* 393 */ bgColor = Color.cyan; +/* */ } else +/* 395 */ bgColor = Color.lightGray; +/* */ } } +/* 397 */ tagText[0] = new StringTexture(name, Console.message("TagFont"), 48, +/* 398 */ Color.black, hw ? new Color(254, 254, 254) : bgColor); +/* */ +/* */ +/* */ +/* */ +/* 403 */ int height = 14; +/* */ +/* 405 */ int width = name.length() * 10; +/* 406 */ Hologram h = new Hologram(width, height, tagText); +/* 407 */ h.setViewplaneAligned(true); +/* 408 */ h.raise(this.tagHeight); +/* 409 */ h.setScaleDist(300.0F); +/* 410 */ this.tag = h; +/* 411 */ this.tag.setVisible(true); +/* 412 */ this.tag.setBumpable(false); +/* 413 */ this.tag.setLocalShadowed(false); +/* 414 */ this.tag.setShadowedLocally(true); +/* 415 */ add(this.tag); +/* */ +/* 417 */ if (hw) { +/* 418 */ Texture[] bgText = new Texture[1]; +/* 419 */ bgText[0] = new StringTexture(name, Console.message("TagFont"), 48, +/* 420 */ Color.black, +/* */ +/* */ +/* */ +/* */ +/* 425 */ bgColor); +/* 426 */ Hologram h2 = new Hologram(width, height, bgText); +/* 427 */ h2.setViewplaneAligned(true); +/* 428 */ h2.raise(this.tagHeight); +/* */ +/* 430 */ h2.setScaleDist(300.0F); +/* 431 */ h2.setMaterial(new Material(0.75F, 0.0F, 0.0F, Color.white, null, 0.5F, +/* 432 */ false, false)); +/* 433 */ this.tagbg = h2; +/* 434 */ this.tagbg.setVisible(true); +/* 435 */ this.tagbg.setBumpable(false); +/* 436 */ this.tagbg.setLocalShadowed(false); +/* 437 */ this.tagbg.setShadowedLocally(true); +/* 438 */ add(this.tagbg); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ protected void avatarHeightChangedTo(float h) +/* */ { +/* 447 */ if (this.tag != null) { +/* 448 */ this.tag.raise(h + 1.0F + 5.0F - this.tag.getPosition().z); +/* */ } +/* 450 */ if (this.tagbg != null) { +/* 451 */ this.tagbg.raise(h + 1.0F + 5.0F - this.tagbg.getPosition().z); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void detachFromServer(boolean reuse) +/* */ { +/* 461 */ assert (Main.isMainThread()); +/* 462 */ if (this._server != null) { +/* 463 */ this._server.delObject(new ObjID(getLongID())); +/* 464 */ this._server.decRefCnt(this); +/* 465 */ this._server = null; +/* */ } +/* */ +/* */ +/* 469 */ if (reuse) { +/* 470 */ this.lastUsed = Std.getFastTime(); +/* 471 */ synchronized (usableDrones) { +/* 472 */ usableDrones.addElement(this); +/* */ } +/* */ } +/* */ } +/* */ +/* 477 */ public static Vector<Drone> usableDrones = new Vector(); +/* */ +/* */ private int lastUsed; +/* */ +/* */ protected WorldServer _server; +/* */ private String sleepMode; +/* */ +/* */ public static Drone make(ObjID id, WorldServer serv) +/* */ { +/* 486 */ synchronized (usableDrones) { +/* 487 */ if ((usableDrones.isEmpty()) || (id == null) || (serv == null)) +/* */ { +/* 489 */ return new HoloDrone(id, serv); +/* */ } +/* 491 */ String name = "!" + serv.getLongID(id); +/* */ +/* */ +/* */ +/* */ +/* 496 */ for (int i = usableDrones.size() - 1; i > 0; i--) { +/* 497 */ Drone d = (Drone)usableDrones.elementAt(i); +/* 498 */ if (d.getName().equals(name)) { +/* */ break; +/* */ } +/* */ } +/* 502 */ Drone d = (Drone)usableDrones.elementAt(i); +/* */ +/* */ +/* */ +/* 506 */ if ((!d.getName().equals(name)) && (usableDrones.size() < 5)) +/* */ { +/* 508 */ return new HoloDrone(id, serv); +/* */ } +/* 510 */ usableDrones.removeElementAt(i); +/* */ +/* 512 */ d.attachToServer(serv.getLongID(id), serv); +/* 513 */ return d; +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ public boolean handle(MouseDownEvent event) +/* */ { +/* 522 */ if ((this._server != null) && ((event.key & 0x1) == '\001')) +/* */ { +/* 524 */ FriendsListPart.droneClick(this, event); +/* */ } +/* */ +/* 527 */ return true; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ public float animate(String action) +/* */ { +/* 535 */ if (action.equalsIgnoreCase("_hdb")) { +/* 536 */ getClass();new BounceNametag(); } +/* 537 */ return 0.0F; +/* */ } +/* */ +/* */ class BounceNametag implements MainCallback { +/* */ int start; +/* */ WObject origTag; +/* */ WObject origTagbg; +/* */ +/* */ BounceNametag() { +/* 546 */ if (Drone.this.tag != null) { +/* 547 */ this.start = Std.getFastTime(); +/* 548 */ this.origTag = Drone.this.tag; +/* 549 */ this.origTagbg = Drone.this.tagbg; +/* 550 */ Main.register(this); +/* */ } +/* */ } +/* */ +/* */ +/* */ public void mainCallback() +/* */ { +/* 557 */ int now = Std.getFastTime(); +/* 558 */ float h = Drone.this.tagHeight; +/* 559 */ if ((now > this.start + 6000) || (this.origTag != Drone.this.tag) || (this.origTagbg != Drone.this.tagbg)) { +/* 560 */ Main.unregister(this); +/* 561 */ } else if (now < this.start + 1500) { +/* 562 */ h = Drone.this.tagHeight + 200.0F * ((now - this.start) / 1500.0F); +/* */ } +/* */ else { +/* 565 */ float t = (now - this.start) / 1500.0F; +/* 566 */ h = (float)(200.0D * Math.pow(1.4140000343322754D, t) * +/* 567 */ Math.cos(t * 3.14159F)); +/* */ } +/* */ +/* 570 */ this.origTag.setZ(h); +/* 571 */ if (this.origTagbg != null) +/* 572 */ this.origTagbg.setZ(h); +/* */ } +/* */ } +/* */ +/* */ public Vector<String> getAnimationList() { +/* 577 */ return new Vector(); +/* */ } +/* */ +/* */ +/* */ public void muteStateChanged() +/* */ { +/* 583 */ setAvatarNow(getCurrentURL()); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ public boolean shouldBeMuted() +/* */ { +/* 591 */ return MuteListPart.isMuted(this._server, getLongID()); +/* */ } +/* */ +/* */ private World getOwnerWorld() { +/* 595 */ WObject o = (WObject)getOwner(); +/* 596 */ Room room = o == null ? null : o.getRoom(); +/* 597 */ World w = room == null ? null : room.getWorld(); +/* 598 */ return w; +/* */ } +/* */ +/* */ public boolean shouldBeForcedHuman() { +/* 602 */ World w = getOwnerWorld(); +/* 603 */ return (w != null) && (w.getForceHuman()); +/* */ } +/* */ +/* */ public URL getCurrentURL() { +/* 607 */ if ((this instanceof PosableDrone)) { +/* 608 */ return ((PosableDrone)this).getPosableShapeURL(); +/* */ } +/* */ +/* 611 */ return getSourceURL(); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public Drone setAvatarNow(URL url) +/* */ { +/* 627 */ if (url == null) { +/* 628 */ return this; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* 634 */ if (shouldBeForcedHuman()) { +/* 635 */ url = PosableShape.getHuman(url); +/* 636 */ if (Console.getActive() != null) +/* */ { +/* 638 */ Console.getActive().pendingPilot = url.toString(); +/* */ } +/* */ } +/* */ +/* */ +/* 643 */ url = PosableShape.getPermitted(url, getWorld()); +/* */ +/* 645 */ boolean muted = shouldBeMuted(); +/* */ +/* 647 */ if ((url.equals(getCurrentURL())) && +/* 648 */ (muted == this instanceof MutedDrone)) { +/* 649 */ return this; +/* */ } +/* 651 */ if ((url.endsWith(".rwx")) || (url.endsWith(".rwg")) || +/* 652 */ (url.endsWith(".mov"))) +/* */ { +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* 667 */ WObject o = (WObject)getOwner(); +/* 668 */ if (o == null) +/* */ { +/* */ +/* */ +/* */ +/* 673 */ return this; +/* */ } +/* */ +/* 676 */ WorldServer serv = this._server; +/* 677 */ String longID = getLongID(); +/* */ +/* */ +/* 680 */ detachFromServer(false); +/* */ +/* 682 */ detach(); +/* */ +/* */ Drone d; +/* */ Drone d; +/* 686 */ if (muted) { +/* 687 */ d = new MutedDrone(new ObjID(longID), serv, url); +/* 688 */ } else if (url.endsWith(".mov")) { +/* 689 */ Drone d = new HoloDrone(new ObjID(longID), serv); +/* 690 */ d.setAvatarNow(url); +/* */ } +/* */ else { +/* 693 */ d = new PosableDrone(new ObjID(longID), serv, url); +/* */ } +/* */ +/* 696 */ if (serv != null) { +/* 697 */ d.transferFrom(this); +/* 698 */ d.addTo(o.getRoom()); +/* */ } else { +/* 700 */ d.makeIdentity().post(this); +/* 701 */ d.setName(getLongID()); +/* 702 */ o.add(d); +/* */ } +/* 704 */ return d; +/* */ } +/* 706 */ String s = url.getInternal(); +/* 707 */ if (s.endsWith(".pilot")) { +/* 708 */ s = s.substring(0, s.length() - 6) + ".drone"; +/* 709 */ } else if (!s.endsWith(".drone")) { +/* 710 */ s = s + ".drone"; +/* */ } +/* 712 */ url = URL.make(s); +/* */ +/* 714 */ if (url.equals(getSourceURL())) { +/* 715 */ return this; +/* */ } +/* 717 */ new WobLoader(url, this); +/* */ +/* 719 */ return this; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void wobLoaded(WobLoader loader, SuperRoot w) +/* */ { +/* 728 */ if (!(w instanceof Drone)) +/* 729 */ return; +/* 730 */ assert (w != null); +/* */ +/* 732 */ Drone d = (Drone)w; +/* 733 */ d.setName(getLongID()); +/* */ +/* */ +/* */ +/* 737 */ if (this._server == null) { +/* 738 */ WObject o = (WObject)getOwner(); +/* 739 */ detach(); +/* 740 */ d.makeIdentity().post(this); +/* 741 */ o.add(d); +/* 742 */ return; +/* */ } +/* */ +/* 745 */ WorldServer serv = this._server; +/* 746 */ String longID = getLongID(); +/* 747 */ detachFromServer(false); +/* */ +/* */ +/* 750 */ Room r = getRoom(); +/* 751 */ detach(); +/* */ +/* */ +/* 754 */ d.addTo(r); +/* */ +/* 756 */ d.attachToServer(longID, serv); +/* */ +/* 758 */ d.transferFrom(this); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void addTo(Room r) +/* */ { +/* 767 */ if (r == null) { +/* 768 */ return; +/* */ } +/* 770 */ Console c = r.getWorld().getConsole(); +/* */ +/* 772 */ if (this.console == null) { +/* 773 */ this.console = c; +/* 774 */ if (c != null) { +/* 775 */ Pilot.copySoul(c.getDroneSoulTemplate(), this); +/* */ } +/* */ } +/* 778 */ r.add(this); +/* */ } +/* */ +/* */ +/* */ public void add(WObject w) +/* */ { +/* 784 */ super.add(w); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ protected void noteUnadding(SuperRoot child) +/* */ { +/* 793 */ if ((child instanceof WObject)) { +/* 794 */ WObject w = (WObject)child; +/* */ +/* 796 */ if (w.isDynamic()) { +/* 797 */ w.setVisible(true); +/* */ } +/* */ } +/* 800 */ super.noteUnadding(child); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ public void setSleepMode(String mode) +/* */ { +/* 808 */ if (mode.equals(this.sleepMode)) { +/* 809 */ return; +/* */ } +/* 811 */ this.sleepMode = mode; +/* 812 */ Main.register(new MakeSleepBox()); +/* */ } +/* */ +/* */ private void handleVAR_ASLEEP(String s) +/* */ { +/* 817 */ if ((s != null) && (s.length() > 2) && (s.charAt(0) == 0)) { +/* 818 */ s = s.substring(2); +/* */ } +/* 820 */ setSleepMode(s); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ public Drone handleVAR_BITMAP(String s) +/* */ { +/* 828 */ if (s.equals("")) { +/* 829 */ return this; +/* */ } +/* 831 */ BlackBox.getInstance().submitEvent( +/* 832 */ new BBDroneBitmapCommand(getName(), s)); +/* */ +/* */ +/* 835 */ if (s.charAt(0) == 0) { +/* 836 */ s = s.substring(2); +/* */ } +/* */ try { +/* 839 */ return setAvatarNow(new URL(URL.getAvatar(), s)); +/* */ } catch (MalformedURLException e) { +/* 841 */ Console.println(Console.message("Invalid-av") + s); } +/* 842 */ return this; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public Point3Temp getVelocity() +/* */ { +/* 852 */ return Point3Temp.make(this._vel_x, this._vel_y, this._vel_z); +/* */ } +/* */ +/* */ public int getYawRate() { +/* 856 */ return this._vel_yaw; +/* */ } +/* */ +/* */ public boolean handle(FrameEvent fe) { +/* 860 */ if (this._server == null) { +/* 861 */ return true; +/* */ } +/* */ +/* 864 */ int timeNow = fe.time; +/* */ +/* 866 */ interpolate(timeNow, this._server.getUpdateTime(), this); +/* */ +/* 868 */ return true; +/* */ } +/* */ +/* */ public void interpolate(int timeNow, int updateTime, Transform target) { +/* 872 */ if (!this.inited) { +/* 873 */ return; +/* */ } +/* 875 */ if (timeNow - this._last_PosTime > updateTime) +/* */ { +/* */ +/* 878 */ this._last_PosTime = timeNow; +/* 879 */ this._vel_x = (this._last_x - this._x); +/* 880 */ this._vel_y = (this._last_y - this._y); +/* 881 */ this._vel_z = (this._last_z - this._z); +/* 882 */ this._vel_yaw = (((this._last_yaw - this._yaw) % 360 + 360) % 360); +/* */ +/* 884 */ assert (this._vel_yaw >= 0); +/* 885 */ if (this._vel_yaw > 180) { +/* 886 */ this._vel_yaw -= 360; +/* */ } +/* */ } +/* */ +/* 890 */ double timeDiff = (timeNow - this._last_FrameTime) / +/* 891 */ updateTime; +/* 892 */ if (timeNow - this._last_FrameTime > updateTime) { +/* 893 */ timeDiff = 0.0D; +/* */ } +/* 895 */ this._x += (int)(timeDiff * this._vel_x); +/* 896 */ this._y += (int)(timeDiff * this._vel_y); +/* 897 */ this._z += (int)(timeDiff * this._vel_z); +/* 898 */ this._yaw += (int)(timeDiff * this._vel_yaw) % 360; +/* */ +/* 900 */ target.makeIdentity().moveBy(this._x, this._y, this._z).yaw(this._yaw); +/* */ +/* 902 */ this._last_FrameTime = timeNow; +/* */ } +/* */ +/* */ public void reset(short x, short y, short z, short yaw) { +/* 906 */ this._x = x; +/* 907 */ this._y = y; +/* 908 */ this._z = z; +/* 909 */ this._yaw = yaw; +/* */ +/* 911 */ this._vel_x = (this._vel_y = this._vel_z = 0); +/* 912 */ this._vel_yaw = 0; +/* 913 */ this._last_x = this._x; +/* 914 */ this._last_y = this._y; +/* 915 */ this._last_z = this._z; +/* 916 */ this._last_yaw = this._yaw; +/* */ +/* 918 */ this._last_PosTime = (this._last_FrameTime = Std.getRealTime()); +/* */ +/* 920 */ this.inited = true; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ protected void transferFrom(Drone i) +/* */ { +/* 930 */ makeIdentity().post(i); +/* */ +/* 932 */ this._x = i._x; +/* 933 */ this._y = i._y; +/* 934 */ this._z = i._z; +/* 935 */ this._yaw = i._yaw; +/* 936 */ this._vel_x = i._vel_x; +/* 937 */ this._vel_y = i._vel_y; +/* 938 */ this._vel_z = i._vel_z; +/* 939 */ this._vel_yaw = i._vel_yaw; +/* 940 */ this._last_x = i._last_x; +/* 941 */ this._last_y = i._last_y; +/* 942 */ this._last_z = i._last_z; +/* 943 */ this._last_yaw = i._last_yaw; +/* 944 */ this._last_PosTime = i._last_PosTime; +/* 945 */ this._last_FrameTime = i._last_FrameTime; +/* 946 */ this.inited = true; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void appear(Room rm, short x, short y, short z, short yaw) +/* */ { +/* 961 */ assert (rm != null); +/* */ +/* 963 */ BlackBox.getInstance() +/* 964 */ .submitEvent( +/* 965 */ new BBAppearDroneCommand(rm.toString(), getName(), x, +/* 966 */ y, z, yaw)); +/* */ +/* 968 */ if (getRoom() != rm) { +/* 969 */ detach(); +/* 970 */ rm.add(this); +/* */ } +/* */ +/* 973 */ makeIdentity().moveBy(x, y, z).yaw(yaw); +/* */ +/* */ +/* 976 */ this._x = x; +/* 977 */ this._y = y; +/* 978 */ this._z = z; +/* 979 */ this._yaw = yaw; +/* 980 */ this._vel_x = (this._vel_y = this._vel_z = 0); +/* 981 */ this._vel_yaw = 0; +/* 982 */ this._last_x = x; +/* 983 */ this._last_y = y; +/* 984 */ this._last_z = z; +/* 985 */ this._last_yaw = yaw; +/* */ +/* 987 */ this._last_PosTime = (this._last_FrameTime = Std.getRealTime()); +/* */ +/* 989 */ URL u = getCurrentURL(); +/* 990 */ if (u != null) { +/* 991 */ setAvatarNow(u); +/* */ } +/* */ +/* 994 */ this.inited = true; +/* */ } +/* */ +/* */ public void disappear() { +/* 998 */ BlackBox.getInstance().submitEvent( +/* 999 */ new BBDisappearDroneCommand(getName())); +/* 1000 */ detachFromServer(true); +/* 1001 */ detach(); +/* */ } +/* */ +/* */ public void longLoc(short x, short y, short z, short yaw) { +/* 1005 */ if (!(getOwner() instanceof Pilot)) { +/* 1006 */ BlackBox.getInstance().submitEvent( +/* 1007 */ new BBMoveDroneCommand(getName(), x, y, z, yaw)); +/* */ } +/* */ +/* 1010 */ this._last_x = x; +/* 1011 */ this._last_y = y; +/* 1012 */ this._last_z = z; +/* 1013 */ this._last_yaw = yaw; +/* 1014 */ this._vel_x = (this._last_x - this._x); +/* 1015 */ this._vel_y = (this._last_y - this._y); +/* 1016 */ this._vel_z = (this._last_z - this._z); +/* 1017 */ this._vel_yaw = (((this._last_yaw - this._yaw) % 360 + 360) % 360); +/* */ +/* 1019 */ assert (this._vel_yaw >= 0); +/* 1020 */ if (this._vel_yaw > 180) { +/* 1021 */ this._vel_yaw -= 360; +/* */ } +/* */ +/* 1024 */ this._last_PosTime = Std.getRealTime(); +/* 1025 */ this.inited = true; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void property(OldPropertyList propList) +/* */ { +/* 1034 */ int end = propList.size(); +/* 1035 */ for (int i = 0; i < end; i++) { +/* 1036 */ netProperty tmpProp = propList.elementAt(i); +/* 1037 */ switch (tmpProp.property()) { +/* */ case 5: +/* 1039 */ handleVAR_BITMAP(tmpProp.value()); +/* 1040 */ break; +/* */ +/* */ case 23: +/* 1043 */ handleVAR_ASLEEP(tmpProp.value()); +/* 1044 */ break; +/* */ +/* */ +/* */ +/* */ +/* */ default: +/* 1050 */ byte[] data = tmpProp.value().getBytes(); +/* 1051 */ getSharer().setFromNetData(tmpProp.property(), data); +/* */ } +/* */ +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void propertyUpdate(PropertyList propList) +/* */ { +/* 1064 */ int end = propList.size(); +/* 1065 */ for (int i = 0; i < end; i++) { +/* 1066 */ net2Property tmpProp = propList.elementAt(i); +/* */ +/* 1068 */ switch (tmpProp.property()) { +/* */ case 5: +/* 1070 */ handleVAR_BITMAP(tmpProp.value()); +/* 1071 */ break; +/* */ +/* */ case 23: +/* 1074 */ handleVAR_ASLEEP(tmpProp.value()); +/* 1075 */ break; +/* */ +/* */ default: +/* 1078 */ getSharer().setFromNetData(tmpProp.property(), tmpProp.data()); +/* */ } +/* */ +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ public void roomChange(Room newRoom, short x, short y, short z, short yaw) +/* */ { +/* 1088 */ detach(); +/* 1089 */ if (newRoom != null) { +/* 1090 */ appear(newRoom, x, y, z, yaw); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ public void shortLoc(byte dx, byte dy, byte dyaw) +/* */ { +/* 1098 */ if (!(getOwner() instanceof Pilot)) { +/* 1099 */ BlackBox.getInstance().submitEvent( +/* 1100 */ new BBDroneDeltaPosCommand(getName(), dx, dy, dyaw)); +/* */ } +/* */ +/* 1103 */ this._last_x += dx; +/* 1104 */ this._last_y += dy; +/* */ +/* 1106 */ this._last_yaw += dyaw; +/* 1107 */ this._last_yaw %= 360; +/* */ +/* 1109 */ this._vel_x = (this._last_x - this._x); +/* 1110 */ this._vel_y = (this._last_y - this._y); +/* */ +/* 1112 */ this._vel_z = 0; +/* 1113 */ this._vel_yaw = (((this._last_yaw - this._yaw) % 360 + 360) % 360); +/* */ +/* 1115 */ assert (this._vel_yaw >= 0); +/* 1116 */ if (this._vel_yaw > 180) { +/* 1117 */ this._vel_yaw -= 360; +/* */ } +/* */ +/* 1120 */ this._last_PosTime = Std.getRealTime(); +/* */ } +/* */ +/* */ public void teleport(WorldServer serv, byte exitType, byte entryType, Room newRoom, short x, short y, short z, short yaw) +/* */ { +/* 1125 */ assert (serv.getObject(new ObjID(getLongID())) == this); +/* 1126 */ Room curRoom = getRoom(); +/* 1127 */ switch (exitType) +/* */ { +/* */ case 0: +/* */ break; +/* */ default: +/* 1132 */ if (curRoom != null) +/* */ { +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* 1142 */ assert (curRoom != null); +/* 1143 */ detach(); +/* */ } +/* */ break; +/* */ } +/* */ +/* 1148 */ switch (entryType) { +/* */ case 0: +/* 1150 */ detachFromServer(true); +/* 1151 */ detach(); +/* 1152 */ break; +/* */ default: +/* 1154 */ if (newRoom == null) +/* */ { +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* 1163 */ detach(); +/* */ } else { +/* 1165 */ assert (newRoom != null); +/* 1166 */ appear(newRoom, x, y, z, yaw); +/* */ } +/* */ break; +/* */ } +/* */ +/* */ } +/* */ +/* */ public WorldServer getServer() +/* */ { +/* 1175 */ return this._server; +/* */ } +/* */ +/* */ public String getLongID() { +/* 1179 */ String name = getName(); +/* 1180 */ if (name.startsWith("!")) { +/* 1181 */ name = name.substring(1); +/* */ } +/* 1183 */ return name; +/* */ } +/* */ +/* */ public void register() +/* */ { +/* 1188 */ if (!$assertionsDisabled) throw new AssertionError(); +/* */ } +/* */ +/* */ public void galaxyDisconnected() +/* */ { +/* 1193 */ if (!$assertionsDisabled) throw new AssertionError(); +/* */ } +/* */ +/* */ public void reacquireServer(WorldServer oldServ) +/* */ { +/* 1198 */ if (!$assertionsDisabled) throw new AssertionError(); +/* */ } +/* */ +/* */ public void changeChannel(Galaxy g, String oldChannel, String newChannel) +/* */ { +/* 1203 */ if (!$assertionsDisabled) { throw new AssertionError(); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public Object properties(int index, int offset, int mode, Object value) +/* */ throws NoSuchPropertyException +/* */ { +/* 1221 */ Object ret = null; +/* 1222 */ (index - offset); +/* */ +/* 1224 */ ret = super.properties(index, offset + 0, mode, value); +/* */ +/* 1226 */ return ret; +/* */ } +/* */ +/* 1229 */ private static Object classCookie = new Object(); +/* 1230 */ private static Object classCookieInterpolatedDrone = new Object(); +/* */ +/* */ public void saveState(Saver s) throws IOException +/* */ { +/* 1234 */ if (this.console != null) { +/* 1235 */ System.out.println("Warning: saving drone " + getName() + +/* 1236 */ " WITH soul, which won't restore correctly!"); +/* */ } +/* */ +/* 1239 */ s.saveVersion(0, classCookieInterpolatedDrone); +/* 1240 */ s.saveVersion(0, classCookie); +/* 1241 */ super.saveState(s); +/* */ } +/* */ +/* */ public void restoreStateDrone(Restorer r) throws IOException, TooNewException +/* */ { +/* 1246 */ r.restoreVersion(classCookieInterpolatedDrone); +/* 1247 */ switch (r.restoreVersion(classCookie)) { +/* */ case 0: +/* 1249 */ super.restoreState(r); +/* 1250 */ break; +/* */ +/* */ default: +/* 1253 */ throw new TooNewException(); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* 1259 */ Enumeration<WObject> e = getContents(); +/* 1260 */ while (e.hasMoreElements()) { +/* 1261 */ WObject w = (WObject)e.nextElement(); +/* 1262 */ if ((w instanceof Hologram)) { +/* 1263 */ Hologram h = (Hologram)w; +/* 1264 */ if (h.getMovieName() == null) { +/* 1265 */ this.tag = h; +/* */ } +/* */ } +/* */ } +/* */ } +/* */ +/* */ public void restoreState(Restorer r) throws IOException, TooNewException +/* */ { +/* 1273 */ restoreStateDrone(r); +/* */ } +/* */ +/* */ public Drone() {} +/* */ } + + +/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\scape\Drone.class + * Java compiler version: 6 (50.0) + * JD-Core Version: 0.7.1 + */
\ No newline at end of file |