From e0be69c725bfd879a4065e4f2573c09af9575d64 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 18 Feb 2021 19:40:33 -0500 Subject: [PATCH] client: move core singleton eventbus registration to singleton constructors --- .../java/net/runelite/client/RuneLite.java | 64 -------------- .../net/runelite/client/callback/Hooks.java | 84 ++++++++++--------- .../client/chat/ChatMessageManager.java | 8 +- .../runelite/client/chat/CommandManager.java | 1 + .../client/game/FriendChatManager.java | 4 +- .../net/runelite/client/game/ItemManager.java | 5 +- .../net/runelite/client/game/LootManager.java | 1 + .../game/chatbox/ChatboxPanelManager.java | 2 + .../runelite/client/menus/MenuManager.java | 5 +- .../client/ui/overlay/OverlayRenderer.java | 5 +- .../ui/overlay/infobox/InfoBoxManager.java | 1 + .../net/runelite/client/ws/PartyService.java | 1 + .../client/chat/ChatMessageManagerTest.java | 12 ++- 13 files changed, 76 insertions(+), 117 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLite.java b/runelite-client/src/main/java/net/runelite/client/RuneLite.java index 7418be6c5e..aa6ef1e2e1 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -56,32 +56,20 @@ import lombok.Getter; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.client.account.SessionManager; -import net.runelite.client.callback.Hooks; -import net.runelite.client.chat.ChatMessageManager; -import net.runelite.client.chat.CommandManager; import net.runelite.client.config.ConfigManager; import net.runelite.client.discord.DiscordService; import net.runelite.client.eventbus.EventBus; import net.runelite.client.externalplugins.ExternalPluginManager; -import net.runelite.client.game.FriendChatManager; -import net.runelite.client.game.ItemManager; -import net.runelite.client.game.LootManager; -import net.runelite.client.game.chatbox.ChatboxPanelManager; -import net.runelite.client.menus.MenuManager; import net.runelite.client.plugins.PluginManager; import net.runelite.client.rs.ClientLoader; import net.runelite.client.rs.ClientUpdateCheckMode; import net.runelite.client.ui.ClientUI; -import net.runelite.client.ui.DrawManager; import net.runelite.client.ui.FatalErrorDialog; import net.runelite.client.ui.SplashScreen; import net.runelite.client.ui.overlay.OverlayManager; -import net.runelite.client.ui.overlay.OverlayRenderer; import net.runelite.client.ui.overlay.WidgetOverlay; -import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ui.overlay.tooltip.TooltipOverlay; import net.runelite.client.ui.overlay.worldmap.WorldMapOverlay; -import net.runelite.client.ws.PartyService; import net.runelite.http.api.RuneLiteAPI; import okhttp3.Cache; import okhttp3.OkHttpClient; @@ -117,9 +105,6 @@ public class RuneLite @Inject private ConfigManager configManager; - @Inject - private DrawManager drawManager; - @Inject private SessionManager sessionManager; @@ -132,48 +117,15 @@ public class RuneLite @Inject private ClientUI clientUI; - @Inject - private Provider infoBoxManager; - @Inject private OverlayManager overlayManager; - @Inject - private Provider partyService; - - @Inject - private Provider itemManager; - - @Inject - private Provider overlayRenderer; - - @Inject - private Provider friendsChatManager; - - @Inject - private Provider chatMessageManager; - - @Inject - private Provider menuManager; - - @Inject - private Provider commandManager; - @Inject private Provider tooltipOverlay; @Inject private Provider worldMapOverlay; - @Inject - private Provider lootManager; - - @Inject - private Provider chatboxPanelManager; - - @Inject - private Provider hooks; - @Inject @Nullable private Client client; @@ -362,27 +314,11 @@ public class RuneLite eventBus.register(pluginManager); eventBus.register(externalPluginManager); eventBus.register(overlayManager); - eventBus.register(drawManager); eventBus.register(configManager); eventBus.register(discordService); if (!isOutdated) { - // Initialize chat colors - chatMessageManager.get().loadColors(); - - eventBus.register(infoBoxManager.get()); - eventBus.register(partyService.get()); - eventBus.register(overlayRenderer.get()); - eventBus.register(friendsChatManager.get()); - eventBus.register(itemManager.get()); - eventBus.register(menuManager.get()); - eventBus.register(chatMessageManager.get()); - eventBus.register(commandManager.get()); - eventBus.register(lootManager.get()); - eventBus.register(chatboxPanelManager.get()); - eventBus.register(hooks.get()); - // Add core overlays WidgetOverlay.createOverlays(client).forEach(overlayManager::add); overlayManager.add(worldMapOverlay.get()); diff --git a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java index dd16869ee5..444077d75e 100644 --- a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java +++ b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java @@ -83,44 +83,19 @@ public class Hooks implements Callbacks private static final GameTick GAME_TICK = new GameTick(); private static final BeforeRender BEFORE_RENDER = new BeforeRender(); - @Inject - private Client client; - - @Inject - private OverlayRenderer renderer; - - @Inject - private EventBus eventBus; - - @Inject - private DeferredEventBus deferredEventBus; - - @Inject - private Scheduler scheduler; - - @Inject - private InfoBoxManager infoBoxManager; - - @Inject - private ChatMessageManager chatMessageManager; - - @Inject - private MouseManager mouseManager; - - @Inject - private KeyManager keyManager; - - @Inject - private ClientThread clientThread; - - @Inject - private DrawManager drawManager; - - @Inject - private Notifier notifier; - - @Inject - private ClientUI clientUi; + private final Client client; + private final OverlayRenderer renderer; + private final EventBus eventBus; + private final DeferredEventBus deferredEventBus; + private final Scheduler scheduler; + private final InfoBoxManager infoBoxManager; + private final ChatMessageManager chatMessageManager; + private final MouseManager mouseManager; + private final KeyManager keyManager; + private final ClientThread clientThread; + private final DrawManager drawManager; + private final Notifier notifier; + private final ClientUI clientUi; private Dimension lastStretchedDimensions; private VolatileImage stretchedImage; @@ -155,6 +130,39 @@ public class Hooks implements Callbacks return lastGraphics; } + @Inject + private Hooks( + Client client, + OverlayRenderer renderer, + EventBus eventBus, + DeferredEventBus deferredEventBus, + Scheduler scheduler, + InfoBoxManager infoBoxManager, + ChatMessageManager chatMessageManager, + MouseManager mouseManager, + KeyManager keyManager, + ClientThread clientThread, + DrawManager drawManager, + Notifier notifier, + ClientUI clientUi + ) + { + this.client = client; + this.renderer = renderer; + this.eventBus = eventBus; + this.deferredEventBus = deferredEventBus; + this.scheduler = scheduler; + this.infoBoxManager = infoBoxManager; + this.chatMessageManager = chatMessageManager; + this.mouseManager = mouseManager; + this.keyManager = keyManager; + this.clientThread = clientThread; + this.drawManager = drawManager; + this.notifier = notifier; + this.clientUi = clientUi; + eventBus.register(this); + } + @Override public void post(Object event) { diff --git a/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java b/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java index 6e888ce8f1..50e6fefbb0 100644 --- a/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java +++ b/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java @@ -50,6 +50,7 @@ import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.VarbitChanged; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ChatColorConfig; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.events.ConfigChanged; import net.runelite.client.ui.JagexColors; @@ -72,11 +73,14 @@ public class ChatMessageManager private ChatMessageManager( Client client, ChatColorConfig chatColorConfig, - ClientThread clientThread) + ClientThread clientThread, + EventBus eventBus) { this.client = client; this.chatColorConfig = chatColorConfig; this.clientThread = clientThread; + eventBus.register(this); + loadColors(); } @Subscribe @@ -254,7 +258,7 @@ public class ChatMessageManager /** * Load all configured colors */ - public void loadColors() + private void loadColors() { colorCache.clear(); diff --git a/runelite-client/src/main/java/net/runelite/client/chat/CommandManager.java b/runelite-client/src/main/java/net/runelite/client/chat/CommandManager.java index 6c725df06c..e8fb4dcedb 100644 --- a/runelite-client/src/main/java/net/runelite/client/chat/CommandManager.java +++ b/runelite-client/src/main/java/net/runelite/client/chat/CommandManager.java @@ -63,6 +63,7 @@ public class CommandManager this.client = client; this.eventBus = eventBus; this.clientThread = clientThread; + eventBus.register(this); } public void register(ChatboxInputListener chatboxInputListener) diff --git a/runelite-client/src/main/java/net/runelite/client/game/FriendChatManager.java b/runelite-client/src/main/java/net/runelite/client/game/FriendChatManager.java index 5c24a6ce33..f27eb6f312 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/FriendChatManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/FriendChatManager.java @@ -45,6 +45,7 @@ import net.runelite.api.IndexedSprite; import net.runelite.api.SpriteID; import net.runelite.api.events.FriendsChatChanged; import net.runelite.api.events.GameStateChanged; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.util.ImageUtil; import net.runelite.client.util.Text; @@ -93,10 +94,11 @@ public class FriendChatManager private int offset; @Inject - private FriendChatManager(Client client, SpriteManager spriteManager) + private FriendChatManager(Client client, SpriteManager spriteManager, EventBus eventBus) { this.client = client; this.spriteManager = spriteManager; + eventBus.register(this); } public boolean isMember(String name) diff --git a/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java b/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java index 9518ed82d0..d524a9a5e3 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java @@ -55,6 +55,7 @@ import net.runelite.api.SpritePixels; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.PostItemComposition; import net.runelite.client.callback.ClientThread; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.util.AsyncBufferedImage; import net.runelite.http.api.item.ItemClient; @@ -169,7 +170,7 @@ public class ItemManager @Inject public ItemManager(Client client, ScheduledExecutorService scheduledExecutorService, ClientThread clientThread, - OkHttpClient okHttpClient) + OkHttpClient okHttpClient, EventBus eventBus) { this.client = client; this.clientThread = clientThread; @@ -213,6 +214,8 @@ public class ItemManager return loadItemOutline(key.itemId, key.itemQuantity, key.outlineColor); } }); + + eventBus.register(this); } private void loadPrices() diff --git a/runelite-client/src/main/java/net/runelite/client/game/LootManager.java b/runelite-client/src/main/java/net/runelite/client/game/LootManager.java index e44c5d7572..418e493738 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/LootManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/LootManager.java @@ -84,6 +84,7 @@ public class LootManager { this.eventBus = eventBus; this.client = client; + eventBus.register(this); } @Subscribe diff --git a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxPanelManager.java b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxPanelManager.java index 38bb623b95..9fb70abd9e 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxPanelManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxPanelManager.java @@ -79,6 +79,8 @@ public class ChatboxPanelManager this.chatboxTextMenuInputProvider = chatboxTextMenuInputProvider; this.chatboxTextInputProvider = chatboxTextInputProvider; + + eventBus.register(this); } public void close() diff --git a/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java b/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java index c2231233db..bb65ecaaca 100644 --- a/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java +++ b/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java @@ -24,7 +24,6 @@ */ package net.runelite.client.menus; -import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; @@ -65,11 +64,11 @@ public class MenuManager private final Multimap managedMenuOptions = LinkedHashMultimap.create(); @Inject - @VisibleForTesting - MenuManager(Client client, EventBus eventBus) + private MenuManager(Client client, EventBus eventBus) { this.client = client; this.eventBus = eventBus; + eventBus.register(this); } /** diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java index 5c01f578c8..b6adfa6813 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java @@ -58,6 +58,7 @@ import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetItem; import net.runelite.client.config.RuneLiteConfig; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.input.KeyListener; import net.runelite.client.input.KeyManager; @@ -113,7 +114,8 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener final RuneLiteConfig runeLiteConfig, final MouseManager mouseManager, final KeyManager keyManager, - final ClientUI clientUI) + final ClientUI clientUI, + final EventBus eventBus) { this.client = client; this.overlayManager = overlayManager; @@ -121,6 +123,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener this.clientUI = clientUI; keyManager.registerKeyListener(this); mouseManager.registerMouseListener(this); + eventBus.register(this); } @Subscribe diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java index 66a6d7d913..32b6e04aec 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java @@ -95,6 +95,7 @@ public class InfoBoxManager this.eventBus = eventBus; this.overlayManager = overlayManager; this.configManager = configManager; + eventBus.register(this); } @Subscribe diff --git a/runelite-client/src/main/java/net/runelite/client/ws/PartyService.java b/runelite-client/src/main/java/net/runelite/client/ws/PartyService.java index 094b1d3de4..a96b6704ff 100644 --- a/runelite-client/src/main/java/net/runelite/client/ws/PartyService.java +++ b/runelite-client/src/main/java/net/runelite/client/ws/PartyService.java @@ -78,6 +78,7 @@ public class PartyService this.sessionManager = sessionManager; this.eventBus = eventBus; this.chat = chat; + eventBus.register(this); } public void changeParty(UUID newParty) diff --git a/runelite-client/src/test/java/net/runelite/client/chat/ChatMessageManagerTest.java b/runelite-client/src/test/java/net/runelite/client/chat/ChatMessageManagerTest.java index b75c79b277..6bdb200694 100644 --- a/runelite-client/src/test/java/net/runelite/client/chat/ChatMessageManagerTest.java +++ b/runelite-client/src/test/java/net/runelite/client/chat/ChatMessageManagerTest.java @@ -35,6 +35,7 @@ import net.runelite.api.MessageNode; import net.runelite.api.Player; import net.runelite.api.events.ChatMessage; import net.runelite.client.config.ChatColorConfig; +import net.runelite.client.events.ConfigChanged; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -62,8 +63,6 @@ public class ChatMessageManagerTest public void before() { Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this); - - chatMessageManager.loadColors(); } @Test @@ -71,7 +70,10 @@ public class ChatMessageManagerTest { when(chatColorConfig.opaqueServerMessage()).thenReturn(Color.decode("#b20000")); - chatMessageManager.loadColors(); + // rebuild color cache + ConfigChanged configChanged = new ConfigChanged(); + configChanged.setGroup("textrecolor"); + chatMessageManager.onConfigChanged(configChanged); ChatMessage chatMessage = new ChatMessage(); chatMessage.setType(ChatMessageType.GAMEMESSAGE); @@ -93,8 +95,6 @@ public class ChatMessageManagerTest when(chatColorConfig.opaquePublicFriendUsernames()).thenReturn(Color.decode("#b20000")); - chatMessageManager.loadColors(); - // Setup message ChatMessage chatMessage = new ChatMessage(); chatMessage.setType(ChatMessageType.PUBLICCHAT); @@ -125,8 +125,6 @@ public class ChatMessageManagerTest when(chatColorConfig.opaquePublicFriendUsernames()).thenReturn(Color.decode("#b20000")); - chatMessageManager.loadColors(); - // Setup message ChatMessage chatMessage = new ChatMessage(); chatMessage.setType(ChatMessageType.PUBLICCHAT);