Add a config setting for the game applet's size

This commit is contained in:
UniquePassive
2018-01-26 00:47:29 +01:00
parent b0429cbd65
commit 0cede52ba5
4 changed files with 74 additions and 2 deletions

View File

@@ -140,6 +140,7 @@ public class RuneLite
eventBus.register(overlayRenderer);
eventBus.register(menuManager);
eventBus.register(chatMessageManager);
eventBus.register(gui);
// Setup the notifier
notifier = new Notifier(properties.getTitle(), gui.getTrayIcon());
@@ -161,7 +162,19 @@ public class RuneLite
// Load the session, including saved configuration
sessionManager.loadSession();
SwingUtilities.invokeAndWait(() -> gui.showWithChrome(runeliteConfig.enableCustomChrome()));
SwingUtilities.invokeAndWait(() ->
{
if (client != null)
{
client.setSize(runeliteConfig.gameSize());
client.setPreferredSize(runeliteConfig.gameSize());
client.getParent().setPreferredSize(runeliteConfig.gameSize());
client.getParent().setSize(runeliteConfig.gameSize());
}
gui.showWithChrome(runeliteConfig.enableCustomChrome());
});
eventBus.post(new ClientUILoaded());
}

View File

@@ -24,6 +24,8 @@
*/
package net.runelite.client.config;
import java.awt.Dimension;
@ConfigGroup(
keyName = "runelite",
name = "RuneLite",
@@ -31,6 +33,16 @@ package net.runelite.client.config;
)
public interface RuneLiteConfig extends Config
{
@ConfigItem(
keyName = "gameSize",
name = "Game size",
description = "The game will resize to this resolution upon starting the client"
)
default Dimension gameSize()
{
return new Dimension(765, 503);
}
@ConfigItem(
keyName = "chatCommandsRecolorEnabled",
name = "Enable chat commands recolor",

View File

@@ -28,7 +28,6 @@ import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.ItemEvent;

View File

@@ -61,10 +61,12 @@ import javax.swing.ToolTipManager;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.plaf.FontUIResource;
import com.google.common.eventbus.Subscribe;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.events.ConfigChanged;
import net.runelite.client.RuneLiteProperties;
import org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel;
import org.pushingpixels.substance.internal.SubstanceSynapse;
@@ -250,6 +252,52 @@ public class ClientUI extends JFrame
repaint();
}
@Subscribe
public void onConfigChanged(ConfigChanged event)
{
if (!event.getGroup().equals("runelite"))
{
return;
}
if (!event.getKey().equals("gameSize"))
{
return;
}
if (client == null)
{
return;
}
String[] splitStr = event.getNewValue().split("x");
int width = Integer.parseInt(splitStr[0]);
int height = Integer.parseInt(splitStr[1]);
// The upper bounds are defined by the applet's max size
// The lower bounds are taken care of by ClientPanel's setMinimumSize
if (width > 7680)
{
width = 7680;
}
if (height > 2160)
{
height = 2160;
}
Dimension size = new Dimension(width, height);
client.setSize(size);
client.setPreferredSize(size);
client.getParent().setPreferredSize(size);
client.getParent().setSize(size);
pack();
}
private static void setUIFont(FontUIResource f)
{
final Enumeration keys = UIManager.getDefaults().keys();