client: move core singleton eventbus registration to singleton constructors

This commit is contained in:
Adam
2021-02-18 19:40:33 -05:00
parent 28b291f9b9
commit e0be69c725
13 changed files with 76 additions and 117 deletions

View File

@@ -56,32 +56,20 @@ import lombok.Getter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.client.account.SessionManager; 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.config.ConfigManager;
import net.runelite.client.discord.DiscordService; import net.runelite.client.discord.DiscordService;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.externalplugins.ExternalPluginManager; 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.plugins.PluginManager;
import net.runelite.client.rs.ClientLoader; import net.runelite.client.rs.ClientLoader;
import net.runelite.client.rs.ClientUpdateCheckMode; import net.runelite.client.rs.ClientUpdateCheckMode;
import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.ClientUI;
import net.runelite.client.ui.DrawManager;
import net.runelite.client.ui.FatalErrorDialog; import net.runelite.client.ui.FatalErrorDialog;
import net.runelite.client.ui.SplashScreen; import net.runelite.client.ui.SplashScreen;
import net.runelite.client.ui.overlay.OverlayManager; 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.WidgetOverlay;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.ui.overlay.tooltip.TooltipOverlay; import net.runelite.client.ui.overlay.tooltip.TooltipOverlay;
import net.runelite.client.ui.overlay.worldmap.WorldMapOverlay; import net.runelite.client.ui.overlay.worldmap.WorldMapOverlay;
import net.runelite.client.ws.PartyService;
import net.runelite.http.api.RuneLiteAPI; import net.runelite.http.api.RuneLiteAPI;
import okhttp3.Cache; import okhttp3.Cache;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
@@ -117,9 +105,6 @@ public class RuneLite
@Inject @Inject
private ConfigManager configManager; private ConfigManager configManager;
@Inject
private DrawManager drawManager;
@Inject @Inject
private SessionManager sessionManager; private SessionManager sessionManager;
@@ -132,48 +117,15 @@ public class RuneLite
@Inject @Inject
private ClientUI clientUI; private ClientUI clientUI;
@Inject
private Provider<InfoBoxManager> infoBoxManager;
@Inject @Inject
private OverlayManager overlayManager; private OverlayManager overlayManager;
@Inject
private Provider<PartyService> partyService;
@Inject
private Provider<ItemManager> itemManager;
@Inject
private Provider<OverlayRenderer> overlayRenderer;
@Inject
private Provider<FriendChatManager> friendsChatManager;
@Inject
private Provider<ChatMessageManager> chatMessageManager;
@Inject
private Provider<MenuManager> menuManager;
@Inject
private Provider<CommandManager> commandManager;
@Inject @Inject
private Provider<TooltipOverlay> tooltipOverlay; private Provider<TooltipOverlay> tooltipOverlay;
@Inject @Inject
private Provider<WorldMapOverlay> worldMapOverlay; private Provider<WorldMapOverlay> worldMapOverlay;
@Inject
private Provider<LootManager> lootManager;
@Inject
private Provider<ChatboxPanelManager> chatboxPanelManager;
@Inject
private Provider<Hooks> hooks;
@Inject @Inject
@Nullable @Nullable
private Client client; private Client client;
@@ -362,27 +314,11 @@ public class RuneLite
eventBus.register(pluginManager); eventBus.register(pluginManager);
eventBus.register(externalPluginManager); eventBus.register(externalPluginManager);
eventBus.register(overlayManager); eventBus.register(overlayManager);
eventBus.register(drawManager);
eventBus.register(configManager); eventBus.register(configManager);
eventBus.register(discordService); eventBus.register(discordService);
if (!isOutdated) 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 // Add core overlays
WidgetOverlay.createOverlays(client).forEach(overlayManager::add); WidgetOverlay.createOverlays(client).forEach(overlayManager::add);
overlayManager.add(worldMapOverlay.get()); overlayManager.add(worldMapOverlay.get());

View File

@@ -83,44 +83,19 @@ public class Hooks implements Callbacks
private static final GameTick GAME_TICK = new GameTick(); private static final GameTick GAME_TICK = new GameTick();
private static final BeforeRender BEFORE_RENDER = new BeforeRender(); private static final BeforeRender BEFORE_RENDER = new BeforeRender();
@Inject private final Client client;
private Client client; private final OverlayRenderer renderer;
private final EventBus eventBus;
@Inject private final DeferredEventBus deferredEventBus;
private OverlayRenderer renderer; private final Scheduler scheduler;
private final InfoBoxManager infoBoxManager;
@Inject private final ChatMessageManager chatMessageManager;
private EventBus eventBus; private final MouseManager mouseManager;
private final KeyManager keyManager;
@Inject private final ClientThread clientThread;
private DeferredEventBus deferredEventBus; private final DrawManager drawManager;
private final Notifier notifier;
@Inject private final ClientUI clientUi;
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 Dimension lastStretchedDimensions; private Dimension lastStretchedDimensions;
private VolatileImage stretchedImage; private VolatileImage stretchedImage;
@@ -155,6 +130,39 @@ public class Hooks implements Callbacks
return lastGraphics; 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 @Override
public void post(Object event) public void post(Object event)
{ {

View File

@@ -50,6 +50,7 @@ import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.VarbitChanged;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ChatColorConfig; import net.runelite.client.config.ChatColorConfig;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged; import net.runelite.client.events.ConfigChanged;
import net.runelite.client.ui.JagexColors; import net.runelite.client.ui.JagexColors;
@@ -72,11 +73,14 @@ public class ChatMessageManager
private ChatMessageManager( private ChatMessageManager(
Client client, Client client,
ChatColorConfig chatColorConfig, ChatColorConfig chatColorConfig,
ClientThread clientThread) ClientThread clientThread,
EventBus eventBus)
{ {
this.client = client; this.client = client;
this.chatColorConfig = chatColorConfig; this.chatColorConfig = chatColorConfig;
this.clientThread = clientThread; this.clientThread = clientThread;
eventBus.register(this);
loadColors();
} }
@Subscribe @Subscribe
@@ -254,7 +258,7 @@ public class ChatMessageManager
/** /**
* Load all configured colors * Load all configured colors
*/ */
public void loadColors() private void loadColors()
{ {
colorCache.clear(); colorCache.clear();

View File

@@ -63,6 +63,7 @@ public class CommandManager
this.client = client; this.client = client;
this.eventBus = eventBus; this.eventBus = eventBus;
this.clientThread = clientThread; this.clientThread = clientThread;
eventBus.register(this);
} }
public void register(ChatboxInputListener chatboxInputListener) public void register(ChatboxInputListener chatboxInputListener)

View File

@@ -45,6 +45,7 @@ import net.runelite.api.IndexedSprite;
import net.runelite.api.SpriteID; import net.runelite.api.SpriteID;
import net.runelite.api.events.FriendsChatChanged; import net.runelite.api.events.FriendsChatChanged;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.util.ImageUtil; import net.runelite.client.util.ImageUtil;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@@ -93,10 +94,11 @@ public class FriendChatManager
private int offset; private int offset;
@Inject @Inject
private FriendChatManager(Client client, SpriteManager spriteManager) private FriendChatManager(Client client, SpriteManager spriteManager, EventBus eventBus)
{ {
this.client = client; this.client = client;
this.spriteManager = spriteManager; this.spriteManager = spriteManager;
eventBus.register(this);
} }
public boolean isMember(String name) public boolean isMember(String name)

View File

@@ -55,6 +55,7 @@ import net.runelite.api.SpritePixels;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.PostItemComposition; import net.runelite.api.events.PostItemComposition;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.util.AsyncBufferedImage; import net.runelite.client.util.AsyncBufferedImage;
import net.runelite.http.api.item.ItemClient; import net.runelite.http.api.item.ItemClient;
@@ -169,7 +170,7 @@ public class ItemManager
@Inject @Inject
public ItemManager(Client client, ScheduledExecutorService scheduledExecutorService, ClientThread clientThread, public ItemManager(Client client, ScheduledExecutorService scheduledExecutorService, ClientThread clientThread,
OkHttpClient okHttpClient) OkHttpClient okHttpClient, EventBus eventBus)
{ {
this.client = client; this.client = client;
this.clientThread = clientThread; this.clientThread = clientThread;
@@ -213,6 +214,8 @@ public class ItemManager
return loadItemOutline(key.itemId, key.itemQuantity, key.outlineColor); return loadItemOutline(key.itemId, key.itemQuantity, key.outlineColor);
} }
}); });
eventBus.register(this);
} }
private void loadPrices() private void loadPrices()

View File

@@ -84,6 +84,7 @@ public class LootManager
{ {
this.eventBus = eventBus; this.eventBus = eventBus;
this.client = client; this.client = client;
eventBus.register(this);
} }
@Subscribe @Subscribe

View File

@@ -79,6 +79,8 @@ public class ChatboxPanelManager
this.chatboxTextMenuInputProvider = chatboxTextMenuInputProvider; this.chatboxTextMenuInputProvider = chatboxTextMenuInputProvider;
this.chatboxTextInputProvider = chatboxTextInputProvider; this.chatboxTextInputProvider = chatboxTextInputProvider;
eventBus.register(this);
} }
public void close() public void close()

View File

@@ -24,7 +24,6 @@
*/ */
package net.runelite.client.menus; package net.runelite.client.menus;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap; import com.google.common.collect.Multimap;
@@ -65,11 +64,11 @@ public class MenuManager
private final Multimap<Integer, WidgetMenuOption> managedMenuOptions = LinkedHashMultimap.create(); private final Multimap<Integer, WidgetMenuOption> managedMenuOptions = LinkedHashMultimap.create();
@Inject @Inject
@VisibleForTesting private MenuManager(Client client, EventBus eventBus)
MenuManager(Client client, EventBus eventBus)
{ {
this.client = client; this.client = client;
this.eventBus = eventBus; this.eventBus = eventBus;
eventBus.register(this);
} }
/** /**

View File

@@ -58,6 +58,7 @@ import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetItem; import net.runelite.api.widgets.WidgetItem;
import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.input.KeyListener; import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
@@ -113,7 +114,8 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
final RuneLiteConfig runeLiteConfig, final RuneLiteConfig runeLiteConfig,
final MouseManager mouseManager, final MouseManager mouseManager,
final KeyManager keyManager, final KeyManager keyManager,
final ClientUI clientUI) final ClientUI clientUI,
final EventBus eventBus)
{ {
this.client = client; this.client = client;
this.overlayManager = overlayManager; this.overlayManager = overlayManager;
@@ -121,6 +123,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
this.clientUI = clientUI; this.clientUI = clientUI;
keyManager.registerKeyListener(this); keyManager.registerKeyListener(this);
mouseManager.registerMouseListener(this); mouseManager.registerMouseListener(this);
eventBus.register(this);
} }
@Subscribe @Subscribe

View File

@@ -95,6 +95,7 @@ public class InfoBoxManager
this.eventBus = eventBus; this.eventBus = eventBus;
this.overlayManager = overlayManager; this.overlayManager = overlayManager;
this.configManager = configManager; this.configManager = configManager;
eventBus.register(this);
} }
@Subscribe @Subscribe

View File

@@ -78,6 +78,7 @@ public class PartyService
this.sessionManager = sessionManager; this.sessionManager = sessionManager;
this.eventBus = eventBus; this.eventBus = eventBus;
this.chat = chat; this.chat = chat;
eventBus.register(this);
} }
public void changeParty(UUID newParty) public void changeParty(UUID newParty)

View File

@@ -35,6 +35,7 @@ import net.runelite.api.MessageNode;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.client.config.ChatColorConfig; import net.runelite.client.config.ChatColorConfig;
import net.runelite.client.events.ConfigChanged;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -62,8 +63,6 @@ public class ChatMessageManagerTest
public void before() public void before()
{ {
Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this); Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this);
chatMessageManager.loadColors();
} }
@Test @Test
@@ -71,7 +70,10 @@ public class ChatMessageManagerTest
{ {
when(chatColorConfig.opaqueServerMessage()).thenReturn(Color.decode("#b20000")); 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 chatMessage = new ChatMessage();
chatMessage.setType(ChatMessageType.GAMEMESSAGE); chatMessage.setType(ChatMessageType.GAMEMESSAGE);
@@ -93,8 +95,6 @@ public class ChatMessageManagerTest
when(chatColorConfig.opaquePublicFriendUsernames()).thenReturn(Color.decode("#b20000")); when(chatColorConfig.opaquePublicFriendUsernames()).thenReturn(Color.decode("#b20000"));
chatMessageManager.loadColors();
// Setup message // Setup message
ChatMessage chatMessage = new ChatMessage(); ChatMessage chatMessage = new ChatMessage();
chatMessage.setType(ChatMessageType.PUBLICCHAT); chatMessage.setType(ChatMessageType.PUBLICCHAT);
@@ -125,8 +125,6 @@ public class ChatMessageManagerTest
when(chatColorConfig.opaquePublicFriendUsernames()).thenReturn(Color.decode("#b20000")); when(chatColorConfig.opaquePublicFriendUsernames()).thenReturn(Color.decode("#b20000"));
chatMessageManager.loadColors();
// Setup message // Setup message
ChatMessage chatMessage = new ChatMessage(); ChatMessage chatMessage = new ChatMessage();
chatMessage.setType(ChatMessageType.PUBLICCHAT); chatMessage.setType(ChatMessageType.PUBLICCHAT);