public void run(UI ui) throws InterruptedException { this.ui = ui; ui.setreceiver(this); while (sess.alive()) { Message msg; while ((msg = sess.getuimsg()) != null) { if (msg.type == Message.RMSG_NEWWDG) { int id = msg.uint16(); String type = msg.string(); Coord c = msg.coord(); int parent = msg.uint16(); Object[] args = msg.list(); if (type.equals("cnt")) { args[0] = MainFrame.getInnerSize(); } else if (type.equals("img") && args.length >= 1) { if (((String) args[0]).equals("gfx/ccscr")) c = MainFrame.getCenterPoint().add(-400, -300); if (((String) args[0]).equals("gfx/logo2")) c = MainFrame.getCenterPoint().add(-415, -300); if (((String) args[0]).indexOf("gfx/hud/prog/") >= 0) // new addons.HavenUtil.HourglassID = id; // new } else if (type.equals("charlist") && args.length >= 1) { c = MainFrame.getCenterPoint().add(-380, -50); } else if (type.equals("ibtn") && args.length >= 2) { if (((String) args[0]).equals("gfx/hud/buttons/ncu") && ((String) args[1]).equals("gfx/hud/buttons/ncd")) { c = MainFrame.getCenterPoint().add(86, 214); } } else if (type.equals("wnd") && c.x == 400 && c.y == 200) { c = MainFrame.getCenterPoint().add(0, -100); } ui.newwidget(id, type, c, parent, args); } else if (msg.type == Message.RMSG_WDGMSG) { int id = msg.uint16(); String name = msg.string(); ui.uimsg(id, name, msg.list()); } else if (msg.type == Message.RMSG_DSTWDG) { int id = msg.uint16(); ui.destroy(id); if (id == addons.HavenUtil.HourglassID) addons.HavenUtil.HourglassID = -1; // new } } synchronized (sess) { sess.wait(); } } }