Functional navbar (toggleable in ClientSettings) (#560)

* Fixed client frame offsets/padding

* Functional navbar (toggleable in ClientSettings)
This commit is contained in:
Pazaz
2023-01-28 17:06:05 -05:00
committed by GitHub
parent e517be1bfb
commit 62b26c5585
11 changed files with 218 additions and 29 deletions
@@ -55,6 +55,8 @@ public class ClientSettings {
public static final BigInteger RSA_MODULUS = new BigInteger("91553247461173033466542043374346300088148707506479543786501537350363031301992107112953015516557748875487935404852620239974482067336878286174236183516364787082711186740254168914127361643305190640280157664988536979163450791820893999053469529344247707567448479470137716627440246788713008490213212272520901741443");
public static final BigInteger RSA_EXPONENT = new BigInteger("65537");
public static final boolean SHOW_NAVBAR = true;
// smooths out lines and sprites on the minimap
public static final boolean BILINEAR_MINIMAP_FILTERING = false;
+4 -1
View File
@@ -4672,7 +4672,10 @@ public class Game extends RSApplet {
mouseDetection.running = false;
}
mouseDetection = null;
onDemandFetcher.disable();
if (onDemandFetcher != null) {
// prevent an exception if the client hasn't connected but tries to close the client, so it will actually close
onDemandFetcher.disable();
}
onDemandFetcher = null;
aStream_834 = null;
stream = null;
+204 -14
View File
@@ -2,22 +2,15 @@
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
import java.applet.Applet;
import javax.swing.*;
import java.awt.*;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.event.*;
import java.awt.font.TextAttribute;
import java.net.URI;
import java.util.Map;
@SuppressWarnings("serial")
public class RSApplet extends Applet implements Runnable, MouseListener, MouseWheelListener, MouseMotionListener, KeyListener, FocusListener, WindowListener {
public class RSApplet extends JApplet implements Runnable, MouseListener, MouseWheelListener, MouseMotionListener, KeyListener, FocusListener, WindowListener {
public static boolean ctrlDown = false;
public static boolean shiftDown = false;
@@ -33,7 +26,204 @@ public class RSApplet extends Applet implements Runnable, MouseListener, MouseWh
gameFrame = new RSFrame(this);
graphics = getGameComponent().getGraphics();
fullGameScreen = new RSImageProducer(myWidth, myHeight, getGameComponent());
if (ClientSettings.SHOW_NAVBAR) {
try {
java.awt.Font arial = new java.awt.Font("Arial", java.awt.Font.PLAIN, 11);
Map attributes = arial.getAttributes();
attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
JLayeredPane layers = new JLayeredPane();
layers.setPreferredSize(new Dimension(765, 25));
ImageIcon backgroundImg = new ImageIcon(this.getClass().getResource("navbar.gif"));
ImageIcon menuImg = new ImageIcon(this.getClass().getResource("navbar_mainmenu.gif"));
ImageIcon companyImg = new ImageIcon(this.getClass().getResource("navbar_jagex.gif"));
ImageIcon worldmapImg = new ImageIcon(this.getClass().getResource("navbar_worldmap.gif"));
ImageIcon manualImg = new ImageIcon(this.getClass().getResource("navbar_manual.gif"));
ImageIcon rulesImg = new ImageIcon(this.getClass().getResource("navbar_rules.gif"));
// set up containers
JLabel background = new JLabel(backgroundImg);
background.setBounds(0, 0, backgroundImg.getIconWidth(), backgroundImg.getIconHeight());
JLabel company = new JLabel(companyImg);
company.setBounds(5, 0, companyImg.getIconWidth(), companyImg.getIconHeight());
JLabel mainMenu = new JLabel(menuImg);
mainMenu.setBounds(126, 0, menuImg.getIconWidth(), menuImg.getIconHeight());
mainMenu.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
try {
Desktop.getDesktop().browse(URI.create("https://2006scape.org/"));
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
JLabel mainMenuText = new JLabel();
mainMenuText.setForeground(Color.WHITE);
mainMenuText.setFont(arial.deriveFont(attributes));
mainMenuText.setBounds(126 + menuImg.getIconWidth() + 4, 0, 75, 25);
mainMenuText.setText("Main Menu");
mainMenuText.addMouseListener(mainMenu.getMouseListeners()[0]);
mainMenuText.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
mainMenuText.setForeground(Color.LIGHT_GRAY);
mainMenuText.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseExited(MouseEvent e) {
mainMenuText.setForeground(Color.WHITE);
mainMenuText.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
});
JLabel worldSelect = new JLabel(menuImg);
worldSelect.setBounds(250, 0, menuImg.getIconWidth(), menuImg.getIconHeight());
worldSelect.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
// TODO: world select popup? redirect to launcher?
}
});
JLabel worldSelectText = new JLabel();
worldSelectText.setForeground(Color.WHITE);
worldSelectText.setFont(arial.deriveFont(attributes));
worldSelectText.setBounds(250 + menuImg.getIconWidth() + 4, 0, 75, 25);
worldSelectText.setText("World Select");
worldSelectText.addMouseListener(worldSelect.getMouseListeners()[0]);
worldSelectText.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
worldSelectText.setForeground(Color.LIGHT_GRAY);
worldSelectText.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseExited(MouseEvent e) {
worldSelectText.setForeground(Color.WHITE);
worldSelectText.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
});
JLabel worldmap = new JLabel(worldmapImg);
worldmap.setBounds(387, 0, worldmapImg.getIconWidth(), worldmapImg.getIconHeight());
worldmap.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
try {
Desktop.getDesktop().browse(URI.create("https://2006scape.org/img/worldmap.jpg"));
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
JLabel worldmapText = new JLabel();
worldmapText.setForeground(Color.WHITE);
worldmapText.setFont(arial.deriveFont(attributes));
worldmapText.setBounds(387 + worldmapImg.getIconWidth() + 4, 0, 75, 25);
worldmapText.setText("World Map");
worldmapText.addMouseListener(worldmap.getMouseListeners()[0]);
worldmapText.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
worldmapText.setForeground(Color.LIGHT_GRAY);
worldmapText.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseExited(MouseEvent e) {
worldmapText.setForeground(Color.WHITE);
worldmapText.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
});
JLabel manual = new JLabel(manualImg);
manual.setBounds(520, 0, manualImg.getIconWidth(), manualImg.getIconHeight());
manual.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
try {
Desktop.getDesktop().browse(URI.create("https://2006scape.org/"));
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
JLabel manualText = new JLabel();
manualText.setForeground(Color.WHITE);
manualText.setFont(arial.deriveFont(attributes));
manualText.setBounds(520 + manualImg.getIconWidth() + 4, 0, 50, 25);
manualText.setText("Manual");
manualText.addMouseListener(manual.getMouseListeners()[0]);
manualText.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
manualText.setForeground(Color.LIGHT_GRAY);
manualText.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseExited(MouseEvent e) {
manualText.setForeground(Color.WHITE);
manualText.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
});
JLabel rules = new JLabel(rulesImg);
rules.setBounds(636, 0, rulesImg.getIconWidth(), rulesImg.getIconHeight());
rules.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
try {
Desktop.getDesktop().browse(URI.create("https://2006scape.org/kbase/rules.php"));
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
JLabel rulesText = new JLabel();
rulesText.setForeground(Color.WHITE);
rulesText.setFont(arial.deriveFont(attributes));
rulesText.setBounds(636 + rulesImg.getIconWidth() + 4, 0, 100, 25);
rulesText.setText("Rules & Security");
rulesText.addMouseListener(rules.getMouseListeners()[0]);
rulesText.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
rulesText.setForeground(Color.LIGHT_GRAY);
rulesText.setCursor(new Cursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseExited(MouseEvent e) {
rulesText.setForeground(Color.WHITE);
rulesText.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
});
// layer images
layers.add(background, 0);
layers.add(company, 0);
layers.add(mainMenu, 0);
layers.add(mainMenuText, 0);
layers.add(worldSelect, 0);
layers.add(worldSelectText, 0);
layers.add(worldmap, 0);
layers.add(worldmapText, 0);
layers.add(manual, 0);
layers.add(manualText, 0);
layers.add(rules, 0);
layers.add(rulesText, 0);
gameFrame.add(layers, BorderLayout.NORTH);
gameFrame.pack();
gameFrame.setLocationRelativeTo(null); // re-center based on the new size
} catch (Exception ex) {
ex.printStackTrace();
}
}
startRunnable(this, 1);
this.requestFocus();
}
final void initClientFrame(int i, int j) {
@@ -184,7 +374,7 @@ public class RSApplet extends Applet implements Runnable, MouseListener, MouseWh
public final void destroy() {
anInt4 = -1;
try {
Thread.sleep(5000L);
Thread.sleep(1000L);
} catch (Exception _ex) {
}
if (anInt4 == -1) {
+8 -14
View File
@@ -6,29 +6,23 @@ import java.awt.*;
final class RSFrame extends Frame {
public RSFrame(RSApplet RSApplet_) {
rsApplet = RSApplet_;
public RSFrame(RSApplet applet) {
rsApplet = applet;
setTitle(ClientSettings.SERVER_NAME + " World: " + ClientSettings.SERVER_WORLD);
this.setResizable(false);
this.setBackground(Color.BLACK);
this.setLayout(new BorderLayout());
this.add(rsApplet);
this.add(applet, BorderLayout.CENTER);
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
this.toFront();
this.setLocationRelativeTo(null);
}
@Override
public void update(Graphics g) {
rsApplet.update(g);
}
@Override
public void paint(Graphics g) {
rsApplet.paint(g);
this.transferFocus();
}
private final RSApplet rsApplet;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB