summaryrefslogtreecommitdiff
path: root/NET/worlds/console/WorldButton.java
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-02-12 22:33:32 -0800
committerFuwn <[email protected]>2026-02-12 22:33:32 -0800
commitc7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9 (patch)
treedf9f48bf128a6c0186a8e91857d6ff30fe0e9f18 /NET/worlds/console/WorldButton.java
downloadworldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.tar.xz
worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.zip
Initial commit
Diffstat (limited to 'NET/worlds/console/WorldButton.java')
-rw-r--r--NET/worlds/console/WorldButton.java125
1 files changed, 125 insertions, 0 deletions
diff --git a/NET/worlds/console/WorldButton.java b/NET/worlds/console/WorldButton.java
new file mode 100644
index 0000000..8aba031
--- /dev/null
+++ b/NET/worlds/console/WorldButton.java
@@ -0,0 +1,125 @@
+package NET.worlds.console;
+
+import NET.worlds.network.NetUpdate;
+import NET.worlds.scape.TeleportAction;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Event;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.MenuItem;
+import java.awt.PopupMenu;
+
+class WorldButton extends TextImageButtons {
+ private static final long serialVersionUID = 8349532719484982330L;
+ int buttonX;
+ int buttonY;
+ String pkg;
+ int privacyLevel;
+ boolean isLoaded;
+ String readableName;
+ DefaultConsole console;
+ static String currentPackageName = "";
+ private static Font wfont = new Font(Console.message("UniverseFont"), 0, 10);
+ private static final int[] xText = new int[1];
+ PopupMenu lastPackageMenu;
+
+ public WorldButton(
+ boolean isLoaded,
+ int buttonX,
+ int buttonY,
+ int buttonWidth,
+ int buttonHeight,
+ String[] texts,
+ String pkg,
+ int privacy,
+ DefaultConsole console,
+ ImageButtonsCallback handler
+ ) {
+ super(null, buttonWidth, intToInts(buttonHeight), xText, texts, handler, wfont);
+ this.readableName = texts[0];
+ this.buttonX = buttonX;
+ this.buttonY = buttonY;
+ this.pkg = pkg;
+ this.isLoaded = isLoaded;
+ this.privacyLevel = privacy;
+ this.console = console;
+ this.setSize(buttonWidth, buttonHeight);
+ this.setWidth(buttonWidth);
+ this.setHeight(buttonHeight);
+ }
+
+ public static Dimension measure(String text) {
+ return TextImageButtons.measure(text, wfont);
+ }
+
+ public void doAction() {
+ if (this.console == null || !this.showPackageMenu()) {
+ NetUpdate.loadWorld(this.pkg, true);
+ }
+ }
+
+ public boolean showPackageMenu() {
+ if (this.lastPackageMenu != null) {
+ this.remove(this.lastPackageMenu);
+ this.lastPackageMenu = null;
+ }
+
+ this.lastPackageMenu = WorldsMarkPart.getPackageMenu(this.pkg);
+ if (this.lastPackageMenu != null && this.lastPackageMenu.getItemCount() != 0) {
+ MenuItem first = this.lastPackageMenu.getItem(0);
+ if (first instanceof BookmarkMenuItem) {
+ BookmarkMenuItem title = new BookmarkMenuItem(this.readableName + " World:", ((BookmarkMenuItem)first).getTarget());
+ this.lastPackageMenu.insert(title, 0);
+ this.lastPackageMenu.insertSeparator(1);
+ }
+
+ this.add(this.lastPackageMenu);
+
+ try {
+ this.lastPackageMenu.show(this, -15, -7);
+ } catch (RuntimeException var3) {
+ System.out.println("Warning - could not show teleport location menu.");
+ }
+
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public void update(Graphics g) {
+ this.paint(g);
+ }
+
+ @Override
+ public boolean action(Event event, Object what) {
+ Object target = event.target;
+ if (target instanceof BookmarkMenuItem) {
+ TeleportAction.teleport(((BookmarkMenuItem)target).getTarget(), null);
+ this.console.toggleUniverseMode();
+ return true;
+ } else {
+ return super.action(event, what);
+ }
+ }
+
+ @Override
+ protected Graphics drawButton(Graphics g, int button, int state) {
+ Color c;
+ if (state == 1) {
+ if (this.isLoaded) {
+ c = currentPackageName.equalsIgnoreCase(this.pkg) ? new Color(192, 255, 192) : Color.white;
+ } else {
+ c = Color.red;
+ }
+ } else if (state == 2) {
+ c = new Color(255, 192, 192);
+ } else {
+ c = Color.green;
+ }
+
+ return super.drawButton(g, button, state, c);
+ }
+}