Reload overlay settings on plugin change

When plugin is loaded/unloaded, reload all overlay settings as they
might've changed.

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2018-06-15 18:55:09 +02:00
parent 1a0935ed7b
commit 51d00d913a
2 changed files with 21 additions and 6 deletions

View File

@@ -228,6 +228,7 @@ public class RuneLite
// Register event listeners
eventBus.register(clientUI);
eventBus.register(overlayRenderer);
eventBus.register(overlayManager);
eventBus.register(drawManager);
eventBus.register(menuManager);
eventBus.register(chatMessageManager);

View File

@@ -25,6 +25,7 @@
package net.runelite.client.ui.overlay;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.eventbus.Subscribe;
import java.awt.Dimension;
import java.awt.Point;
import java.util.ArrayList;
@@ -41,6 +42,7 @@ import lombok.Getter;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.events.PluginChanged;
/**
* Manages state of all game overlays
@@ -90,6 +92,13 @@ public class OverlayManager
this.configManager = configManager;
}
@Subscribe
public void onPluginChanged(final PluginChanged event)
{
overlays.forEach(this::loadOverlay);
rebuildOverlayLayers();
}
/**
* Gets all of the overlays on a layer
*
@@ -116,12 +125,7 @@ public class OverlayManager
// Add is always true
overlays.add(overlay);
final Point location = loadOverlayLocation(overlay);
overlay.setPreferredLocation(location);
final Dimension size = loadOverlaySize(overlay);
overlay.setPreferredSize(size);
final OverlayPosition position = loadOverlayPosition(overlay);
overlay.setPreferredPosition(position);
loadOverlay(overlay);
rebuildOverlayLayers();
return true;
}
@@ -226,6 +230,16 @@ public class OverlayManager
overlayLayers.forEach((layer, value) -> overlayLayers.put(layer, Collections.unmodifiableList(value)));
}
private void loadOverlay(final Overlay overlay)
{
final Point location = loadOverlayLocation(overlay);
overlay.setPreferredLocation(location);
final Dimension size = loadOverlaySize(overlay);
overlay.setPreferredSize(size);
final OverlayPosition position = loadOverlayPosition(overlay);
overlay.setPreferredPosition(position);
}
private void saveOverlayLocation(final Overlay overlay)
{
final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_LOCATION;