diff options
Diffstat (limited to 'NET/worlds/console/UniversePanel.java')
| -rw-r--r-- | NET/worlds/console/UniversePanel.java | 729 |
1 files changed, 729 insertions, 0 deletions
diff --git a/NET/worlds/console/UniversePanel.java b/NET/worlds/console/UniversePanel.java new file mode 100644 index 0000000..a3c5c66 --- /dev/null +++ b/NET/worlds/console/UniversePanel.java @@ -0,0 +1,729 @@ +/* */ package NET.worlds.console; +/* */ +/* */ import NET.worlds.core.IniFile; +/* */ import NET.worlds.core.Std; +/* */ import NET.worlds.network.NetUpdate; +/* */ import NET.worlds.network.ProgressDialog; +/* */ import NET.worlds.network.URL; +/* */ import NET.worlds.scape.BGLoaded; +/* */ import NET.worlds.scape.BackgroundLoader; +/* */ import NET.worlds.scape.Room; +/* */ import NET.worlds.scape.World; +/* */ import java.awt.Component; +/* */ import java.awt.Dimension; +/* */ import java.awt.Event; +/* */ import java.awt.Graphics; +/* */ import java.awt.Image; +/* */ import java.awt.Panel; +/* */ import java.io.DataInputStream; +/* */ import java.io.File; +/* */ import java.io.FileInputStream; +/* */ import java.io.FileNotFoundException; +/* */ import java.io.IOException; +/* */ import java.io.PrintStream; +/* */ import java.util.StringTokenizer; +/* */ import java.util.Vector; +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public class UniversePanel +/* */ extends Panel +/* */ implements MainCallback, ImageButtonsCallback, BGLoaded +/* */ { +/* */ private static final long serialVersionUID = 4029344486393517219L; +/* */ UniverseImage bg; +/* 292 */ int xOff = 0; +/* 293 */ int yOff = 0; +/* */ +/* */ ImageButtons backButton; +/* */ +/* */ DefaultConsole owningConsole; +/* */ +/* 299 */ private static String datName = "universe/universe.dat"; +/* 300 */ private static String bgName = "universe/universe.jpg"; +/* */ static String lastCacheDat; +/* */ +/* 303 */ public UniversePanel(DefaultConsole cons) { this.owningConsole = cons; +/* 304 */ setLayout(null); +/* */ +/* 306 */ this.backButton = new ImageButtons(Console.message("back.gif"), 60, 22, this); +/* */ +/* 308 */ String rbgName = IniFile.override().getIniString("UniverseBgFile", +/* 309 */ bgName); +/* 310 */ String rdatName = IniFile.override().getIniString("UniverseDatFile", +/* 311 */ datName); +/* */ +/* 313 */ if (!new File(datName).exists()) +/* */ { +/* */ +/* 316 */ lastCacheDat = ""; +/* 317 */ if (!ProgressDialog.copyFile("universe.dat", datName)) +/* 318 */ ProgressDialog.copyFile("../universe.dat", datName); +/* */ } +/* 320 */ readUniverseFile(datName); +/* */ +/* 322 */ if (!new File(bgName).exists()) { +/* 323 */ lastCacheBg = ""; +/* 324 */ if (!ProgressDialog.copyFile("universe.jpg", bgName)) +/* 325 */ ProgressDialog.copyFile("../universe.jpg", bgName); +/* */ } +/* 327 */ this.bg = new UniverseImage(bgName); +/* 328 */ add(this.bg); +/* */ +/* 330 */ Dimension image = this.bg.imageSize(); +/* 331 */ this.bg.setSize(image.width, image.height); +/* */ +/* */ +/* 334 */ String serv = NetUpdate.getUpgradeServerURL(); +/* 335 */ BackgroundLoader.get(this, URL.make(serv + rbgName)); +/* 336 */ BackgroundLoader.get(this, URL.make(serv + rdatName)); +/* */ } +/* */ +/* */ +/* */ static String lastCacheBg; +/* 341 */ static Object locker = new Object(); +/* */ Image offscreen; +/* */ private boolean registered; +/* */ int upDownState; +/* */ int leftRightState; +/* */ int lastKeyTime; +/* */ +/* */ private boolean safeCopyFile(String name) +/* */ { +/* 350 */ synchronized (locker) { +/* 351 */ if ((name.endsWith("dat")) && (!name.equals(lastCacheDat))) +/* */ { +/* 353 */ lastCacheDat = name; +/* 354 */ if (ProgressDialog.copyFile(name, datName)) { +/* 355 */ readUniverseFile(datName); +/* 356 */ add(this.bg); +/* 357 */ return true; +/* */ } +/* 359 */ } else if ((name.endsWith("jpg")) && (!name.equals(lastCacheBg))) { +/* 360 */ lastCacheBg = name; +/* 361 */ if (ProgressDialog.copyFile(name, bgName)) { +/* 362 */ remove(this.bg); +/* 363 */ this.bg.flushImage(); +/* */ +/* 365 */ add(this.bg = new UniverseImage(bgName)); +/* */ +/* 367 */ Dimension image = this.bg.imageSize(); +/* 368 */ this.bg.setSize(image.width, image.height); +/* 369 */ return true; +/* */ } +/* */ } +/* 372 */ return false; +/* */ } +/* */ } +/* */ +/* */ public void flushImage() +/* */ { +/* 378 */ remove(this.bg); +/* 379 */ this.bg.flushImage(); +/* */ } +/* */ +/* */ public synchronized Object asyncBackgroundLoad(String localName, URL remoteURL) +/* */ { +/* 384 */ return localName; +/* */ } +/* */ +/* */ public boolean syncBackgroundLoad(Object obj, URL remoteURL) { +/* 388 */ String localName = (String)obj; +/* 389 */ if ((localName != null) && (new File(localName).exists()) && +/* 390 */ (safeCopyFile(localName))) +/* */ { +/* 392 */ invalidate(); +/* 393 */ validate(); +/* 394 */ doLayout(); +/* 395 */ repaint(); +/* */ } +/* */ +/* 398 */ return false; +/* */ } +/* */ +/* */ public Room getBackgroundLoadRoom() { +/* 402 */ return null; +/* */ } +/* */ +/* */ public synchronized void setViewportPos() +/* */ { +/* 407 */ Dimension viewport = getSize(); +/* 408 */ Dimension image = this.bg.imageSize(); +/* */ +/* 410 */ int centerToLeft = image.width - viewport.width >> 1; +/* 411 */ int centerToTop = image.height - viewport.height >> 1; +/* */ +/* 413 */ if (centerToLeft < 0) +/* 414 */ this.xOff = 0; +/* 415 */ if (centerToTop < 0) { +/* 416 */ this.yOff = 0; +/* */ } +/* 418 */ int x = this.xOff + centerToLeft; +/* 419 */ int y = this.yOff + centerToTop; +/* */ +/* */ +/* 422 */ Dimension backSize = this.backButton.getPreferredSize(); +/* 423 */ this.backButton.setSize(backSize); +/* 424 */ this.backButton.setLocation(viewport.width - backSize.width - 5, +/* 425 */ viewport.height - backSize.height - 3); +/* */ +/* 427 */ this.bg.setLocation(-x, -y); +/* 428 */ int i = this.buttons.size(); +/* 429 */ do { WorldButton b = (WorldButton)this.buttons.elementAt(i); +/* 430 */ b.setLocation(-x + b.buttonX, -y + b.buttonY); +/* */ +/* 432 */ WorldButtonBullet bl = (WorldButtonBullet)this.bullets.elementAt(i); +/* 433 */ bl.setLocation(-x + bl.circleX, -y + bl.circleY);i--; +/* 428 */ } while (i >= 0); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public void invalidate() +/* */ { +/* 441 */ super.invalidate(); +/* 442 */ this.offscreen = null; +/* */ } +/* */ +/* */ public void update(Graphics g) +/* */ { +/* 447 */ paint(g); +/* */ } +/* */ +/* */ public synchronized void paint(Graphics g) +/* */ { +/* 452 */ setViewportPos(); +/* */ +/* 454 */ if (this.offscreen == null) { +/* 455 */ this.offscreen = createImage(getSize().width, getSize().height); +/* */ } +/* 457 */ Graphics og = this.offscreen.getGraphics(); +/* 458 */ og.setClip(0, 0, getSize().width, getSize().height); +/* 459 */ super.paint(og); +/* */ try { +/* 461 */ g.drawImage(this.offscreen, 0, 0, this); +/* */ +/* */ } +/* */ catch (NullPointerException e) +/* */ { +/* 466 */ this.offscreen = null; +/* */ } +/* 468 */ og.dispose(); +/* */ +/* 470 */ startWatch(); +/* */ } +/* */ +/* */ +/* */ public synchronized void startWatch() +/* */ { +/* 476 */ if (!this.registered) { +/* 477 */ Main.register(this); +/* 478 */ this.registered = true; +/* */ } +/* */ } +/* */ +/* */ public synchronized void stopWatch() +/* */ { +/* 484 */ if (this.registered) { +/* 485 */ Main.unregister(this); +/* 486 */ this.registered = false; +/* */ } +/* */ } +/* */ +/* */ public void setOffset(int x, int y) +/* */ { +/* 492 */ if (!this.owningConsole.isUniverseMode()) { +/* 493 */ return; +/* */ } +/* 495 */ Dimension viewport = getSize(); +/* 496 */ Dimension image = this.bg.imageSize(); +/* */ +/* */ +/* 499 */ int centerToLeft = image.width - viewport.width >> 1; +/* 500 */ int centerToTop = image.height - viewport.height >> 1; +/* */ +/* 502 */ x += centerToLeft; +/* 503 */ y += centerToTop; +/* */ +/* 505 */ if (x < 0) { +/* 506 */ x = 0; +/* 507 */ } else if (x + viewport.width > image.width) { +/* 508 */ x = image.width - viewport.width; +/* */ } +/* 510 */ if (y < 0) { +/* 511 */ y = 0; +/* 512 */ } else if (y + viewport.height > image.height) { +/* 513 */ y = image.height - viewport.height; +/* */ } +/* */ +/* 516 */ x -= centerToLeft; +/* 517 */ y -= centerToTop; +/* */ +/* */ +/* 520 */ if (viewport.width > image.width) { +/* 521 */ x = 0; +/* */ } +/* 523 */ if (viewport.height > image.height) { +/* 524 */ y = 0; +/* */ } +/* 526 */ if ((x != this.xOff) || (y != this.yOff)) { +/* 527 */ this.xOff = x; +/* 528 */ this.yOff = y; +/* */ +/* 530 */ repaint(); +/* */ } +/* */ } +/* */ +/* */ public void addOffset(int dx, int dy) +/* */ { +/* 536 */ setOffset(this.xOff + dx, this.yOff + dy); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ @Deprecated +/* */ public boolean keyUp(Event event, int key) +/* */ { +/* 549 */ if ((key != 1004) && +/* 550 */ (key != 1005) && +/* 551 */ (key != 1006) && +/* 552 */ (key != 1007)) +/* */ { +/* 554 */ return super.keyUp(event, key); +/* */ } +/* 556 */ if ((this.upDownState != 0) || (this.leftRightState != 0)) +/* */ { +/* 558 */ mainCallback(); +/* */ +/* 560 */ this.upDownState = 0; +/* 561 */ this.leftRightState = 0; +/* */ } +/* */ +/* 564 */ return true; +/* */ } +/* */ +/* */ public synchronized void mainCallback() { +/* 568 */ int now = Std.getRealTime(); +/* 569 */ int xDiff = 0; +/* 570 */ int yDiff = 0; +/* */ +/* 572 */ if (this.upDownState != 0) { +/* 573 */ yDiff = this.upDownState * (now - this.lastKeyTime) / 5; +/* */ } +/* 575 */ if (this.leftRightState != 0) { +/* 576 */ xDiff = this.leftRightState * (now - this.lastKeyTime) / 5; +/* */ } +/* 578 */ if (xDiff < -50) +/* 579 */ xDiff = -50; +/* 580 */ if (xDiff > 50) +/* 581 */ xDiff = 50; +/* 582 */ if (yDiff < -50) +/* 583 */ yDiff = -50; +/* 584 */ if (yDiff > 50) { +/* 585 */ yDiff = 50; +/* */ } +/* 587 */ String curpkg = WorldsMarkPart.getCurrentPackageName(); +/* 588 */ if ((curpkg != null) && (!curpkg.equals(WorldButton.currentPackageName))) { +/* 589 */ WorldButton.currentPackageName = curpkg; +/* 590 */ if ((xDiff == 0) && (yDiff == 0)) { +/* 591 */ repaint(); +/* */ } +/* */ } +/* 594 */ if ((xDiff != 0) || (yDiff != 0)) { +/* 595 */ addOffset(xDiff, yDiff); +/* */ } +/* 597 */ this.lastKeyTime = now; +/* */ +/* 599 */ if ((this.owningConsole != Console.getActive()) || +/* 600 */ (!this.owningConsole.isUniverseMode())) { +/* 601 */ stopWatch(); +/* */ } +/* */ } +/* */ +/* */ @Deprecated +/* */ public synchronized boolean keyDown(Event event, int key) +/* */ { +/* 608 */ boolean changed = false; +/* */ +/* 610 */ if (key == 1004) { +/* 611 */ if (this.upDownState != -1) { +/* 612 */ this.upDownState = -1; +/* 613 */ changed = true; +/* */ } +/* 615 */ } else if (key == 1005) { +/* 616 */ if (this.upDownState != 1) { +/* 617 */ this.upDownState = 1; +/* 618 */ changed = true; +/* */ } +/* 620 */ } else if (key == 1006) { +/* 621 */ if (this.leftRightState != -1) { +/* 622 */ this.leftRightState = -1; +/* 623 */ changed = true; +/* */ } +/* 625 */ } else if (key == 1007) { +/* 626 */ if (this.leftRightState != 1) { +/* 627 */ this.leftRightState = 1; +/* 628 */ changed = true; +/* */ } +/* */ } else { +/* 631 */ return super.keyDown(event, key); +/* */ } +/* 633 */ if (changed) +/* */ { +/* 635 */ startWatch(); +/* 636 */ this.lastKeyTime = (Std.getRealTime() - 20); +/* */ } +/* */ +/* 639 */ return true; +/* */ } +/* */ +/* 642 */ Vector<WorldButton> buttons = new Vector(); +/* 643 */ Vector<WorldButtonBullet> bullets = new Vector(); +/* */ +/* */ private synchronized void readUniverseFile(String localName) { +/* 646 */ removeAll(); +/* */ +/* 648 */ this.buttons = new Vector(); +/* 649 */ this.bullets = new Vector(); +/* 650 */ boolean showAll = IniFile.gamma().getIniInt("ShowAllWorlds", 0) != 0; +/* */ +/* 652 */ add(this.backButton); +/* */ +/* */ try +/* */ { +/* 656 */ FileInputStream in = new FileInputStream(localName); +/* 657 */ DataInputStream dis = new DataInputStream(in); +/* */ +/* */ String line; +/* 660 */ while ((line = dis.readLine()) != null) { String line; +/* 661 */ StringTokenizer st = new StringTokenizer(line); +/* 662 */ if ((st.hasMoreTokens()) && (line.charAt(0) != ';')) { +/* 663 */ int circleX = Integer.parseInt(st.nextToken()); +/* 664 */ int circleY = Integer.parseInt(st.nextToken()); +/* 665 */ int buttonX = Integer.parseInt(st.nextToken()); +/* 666 */ int buttonY = Integer.parseInt(st.nextToken()); +/* */ +/* 668 */ String pkg = st.nextToken(); +/* */ +/* */ +/* 671 */ int privacy = Integer.parseInt(st.nextToken()); +/* */ +/* 673 */ String text = st.nextToken("").trim(); +/* */ +/* 675 */ Dimension sz = WorldButton.measure(text); +/* */ +/* 677 */ String[] texts = { text }; +/* 678 */ boolean isLoaded = WorldsMarkPart.findPackage(pkg) != null; +/* */ +/* */ +/* 681 */ if ((showAll) || (privacy == 0) || ((privacy == 1) && +/* 682 */ (!World.isCloistered())) || ((privacy <= 2) && +/* 683 */ (isLoaded)) || ((privacy == 3) && +/* 684 */ (!World.isWorldsStoreProscribed()))) { +/* 685 */ WorldButton button = new WorldButton(isLoaded, buttonX, +/* 686 */ buttonY, sz.width, sz.height, texts, pkg, +/* 687 */ privacy, this.owningConsole, this); +/* 688 */ add(button); +/* 689 */ this.buttons.addElement(button); +/* */ +/* 691 */ WorldButtonBullet bullet = new WorldButtonBullet( +/* 692 */ circleX, circleY, button); +/* 693 */ if ((circleX > 0) || (circleY > 0)) +/* 694 */ add(bullet); +/* 695 */ this.bullets.addElement(bullet); +/* */ } +/* */ } +/* */ } +/* */ +/* 700 */ dis.close(); +/* 701 */ in.close(); +/* */ } catch (FileNotFoundException e) { +/* 703 */ System.out.println(e); +/* */ } catch (IOException e) { +/* 705 */ System.out.println(e); +/* */ } +/* */ } +/* */ +/* */ public Object imageButtonsCallback(Component who, int which) { +/* 710 */ if ((who instanceof WorldButton)) { +/* 711 */ ((WorldButton)who).doAction(); +/* 712 */ } else if (who == this.backButton) { +/* 713 */ this.owningConsole.toggleUniverseMode(); +/* */ } +/* 715 */ return null; +/* */ } +/* */ } + + +/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\console\UniversePanel.class + * Java compiler version: 6 (50.0) + * JD-Core Version: 0.7.1 + */
\ No newline at end of file |