Rework rx eventbus implementation

This commit is contained in:
Owain van Brakel
2019-07-14 03:50:20 +02:00
parent 3de05dec64
commit fc9e700c7c
56 changed files with 325 additions and 636 deletions

View File

@@ -42,7 +42,6 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.config.RuneLitePlusConfig;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.game.ItemManager;
import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.PluginManager;
@@ -85,7 +84,7 @@ public class RuneLiteModule extends AbstractModule
bind(Callbacks.class).to(Hooks.class);
bind(EventBus.class)
.toInstance(new EventBusImplementation());
.toInstance(new EventBus());
bind(EventBus.class)
.annotatedWith(Names.named("Deferred EventBus"))

View File

@@ -25,7 +25,7 @@
package net.runelite.client.account;
import com.google.gson.Gson;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
@@ -40,7 +40,6 @@ import lombok.extern.slf4j.Slf4j;
import net.runelite.client.RuneLite;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen;
import net.runelite.client.util.LinkBrowser;
@@ -58,20 +57,18 @@ public class SessionManager
@Getter
private AccountSession accountSession;
private final EventBusImplementation eventBus;
private final EventBus eventBus;
private final ConfigManager configManager;
private final WSClient wsClient;
@Inject
private SessionManager(ConfigManager configManager, EventBusImplementation eventBus, WSClient wsClient)
private SessionManager(ConfigManager configManager, EventBus eventBus, WSClient wsClient)
{
this.configManager = configManager;
this.eventBus = eventBus;
this.wsClient = wsClient;
this.eventBus
.observableOfType(LoginResponse.class)
.subscribe(this::onLoginResponse);
this.eventBus.subscribe(LoginResponse.class, this, o -> this.onLoginResponse((LoginResponse) o));
}
public void loadSession()
@@ -154,7 +151,7 @@ public class SessionManager
configManager.switchSession();
}
eventBus.post(new SessionOpen());
eventBus.post(SessionOpen.class, new SessionOpen());
}
private void closeSession()
@@ -183,7 +180,7 @@ public class SessionManager
// Restore config
configManager.switchSession();
eventBus.post(new SessionClose());
eventBus.post(SessionClose.class, new SessionClose());
}
public void login()

View File

@@ -60,7 +60,6 @@ import net.runelite.client.Notifier;
import net.runelite.client.RuneLite;
import net.runelite.client.chat.ChatMessageManager;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.input.KeyManager;
import net.runelite.client.input.MouseManager;
import net.runelite.client.task.Scheduler;
@@ -89,7 +88,7 @@ public class Hooks implements Callbacks
private static final OverlayManager overlayManager = injector.getInstance(OverlayManager.class);
@Inject
private EventBusImplementation eventBus;
private EventBus eventBus;
@Inject
private DeferredEventBus deferredEventBus;
@@ -129,15 +128,15 @@ public class Hooks implements Callbacks
private boolean shouldProcessGameTick;
@Override
public void post(Object event)
public <T> void post(Class<T> eventClass, Object event)
{
eventBus.post(event);
eventBus.post(eventClass, event);
}
@Override
public void postDeferred(Object event)
public <T> void postDeferred(Class<T> eventClass, Object event)
{
deferredEventBus.post(event);
deferredEventBus.post(eventClass, event);
}
@Override
@@ -149,13 +148,13 @@ public class Hooks implements Callbacks
deferredEventBus.replay();
eventBus.post(GameTick.INSTANCE);
eventBus.post(GameTick.class, GameTick.INSTANCE);
int tick = client.getTickCount();
client.setTickCount(tick + 1);
}
eventBus.post(BeforeRender.INSTANCE);
eventBus.post(BeforeRender.class, BeforeRender.INSTANCE);
clientThread.invoke();
@@ -510,7 +509,7 @@ public class Hooks implements Callbacks
public static boolean drawMenu()
{
BeforeMenuRender event = new BeforeMenuRender();
client.getCallbacks().post(event);
client.getCallbacks().post(BeforeMenuRender.class, event);
return event.isConsumed();
}
}

View File

@@ -35,7 +35,6 @@ import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.events.ChatMessage;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.events.ChatInput;
import net.runelite.client.events.ChatboxInput;
import net.runelite.client.events.PrivateMessageInput;
@@ -49,15 +48,14 @@ public class ChatCommandManager implements ChatboxInputListener
private final ScheduledExecutorService scheduledExecutorService;
@Inject
private ChatCommandManager(EventBusImplementation eventBus, CommandManager commandManager, Client client, ScheduledExecutorService scheduledExecutorService)
private ChatCommandManager(EventBus eventBus, CommandManager commandManager, Client client, ScheduledExecutorService scheduledExecutorService)
{
this.client = client;
this.scheduledExecutorService = scheduledExecutorService;
// eventBus.register(this);
commandManager.register(this);
eventBus.observableOfType(ChatMessage.class)
.subscribe(this::onChatMessage);
eventBus.subscribe(ChatMessage.class, this, o -> this.onChatMessage((ChatMessage) o));
}
public void registerCommand(String command, BiConsumer<ChatMessage, String> execute)

View File

@@ -52,7 +52,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.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.ui.JagexColors;
import net.runelite.client.util.ColorUtil;
@@ -73,26 +73,17 @@ public class ChatMessageManager
final Client client,
final ChatColorConfig chatColorConfig,
final ClientThread clientThread,
final EventBusImplementation eventbus)
final EventBus eventbus)
{
this.client = client;
this.chatColorConfig = chatColorConfig;
this.clientThread = clientThread;
eventbus.observableOfType(VarbitChanged.class)
.subscribe(this::onVarbitChanged);
eventbus.observableOfType(ResizeableChanged.class)
.subscribe(this::onResizeableChanged);
eventbus.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged);
eventbus.observableOfType(ChatMessage.class)
.subscribe(this::onChatMessage);
eventbus.observableOfType(ScriptCallbackEvent.class)
.subscribe(this::onScriptCallbackEvent);
eventbus.subscribe(VarbitChanged.class, this, o -> this.onVarbitChanged((VarbitChanged) o));
eventbus.subscribe(ResizeableChanged.class, this, o -> this.onResizeableChanged((ResizeableChanged) o));
eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
eventbus.subscribe(ChatMessage.class, this, o -> this.onChatMessage((ChatMessage) o));
eventbus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o));
}
private void onVarbitChanged(VarbitChanged event)

View File

@@ -37,7 +37,7 @@ import net.runelite.api.VarClientStr;
import net.runelite.api.events.CommandExecuted;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.events.ChatboxInput;
import net.runelite.client.events.PrivateMessageInput;
@@ -50,7 +50,7 @@ public class CommandManager
private static final String PRIVMATE_MESSAGE = "privateMessage";
private final Client client;
private final EventBusImplementation eventBus;
private final EventBus eventBus;
private final ClientThread clientThread;
private boolean sending;
@@ -59,7 +59,7 @@ public class CommandManager
@Inject
private CommandManager(
final Client client,
final EventBusImplementation eventBus,
final EventBus eventBus,
final ClientThread clientThread
)
{
@@ -67,8 +67,7 @@ public class CommandManager
this.eventBus = eventBus;
this.clientThread = clientThread;
eventBus.observableOfType(ScriptCallbackEvent.class)
.subscribe(this::onScriptCallbackEvent);
eventBus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o));
}
public void register(ChatboxInputListener chatboxInputListener)
@@ -120,7 +119,7 @@ public class CommandManager
String[] args = Arrays.copyOfRange(split, 1, split.length);
CommandExecuted commandExecuted = new CommandExecuted(command, args);
eventBus.post(commandExecuted);
eventBus.post(CommandExecuted.class, commandExecuted);
}
private void handleInput(ScriptCallbackEvent event)

View File

@@ -66,9 +66,8 @@ import net.runelite.api.events.ConfigChanged;
import net.runelite.client.RuneLite;
import static net.runelite.client.RuneLite.PROFILES_DIR;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.ui.FontManager;
import net.runelite.client.util.ColorUtil;
@Singleton
@Slf4j
@@ -80,7 +79,7 @@ public class ConfigManager
private static final File STANDARD_SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, STANDARD_SETTINGS_FILE_NAME);
@Inject
EventBusImplementation eventBus;
EventBus eventBus;
private final ConfigInvocationHandler handler = new ConfigInvocationHandler(this);
private final Properties properties = new Properties();
@@ -90,7 +89,6 @@ public class ConfigManager
@Inject
public ConfigManager(ScheduledExecutorService scheduledExecutorService)
{
scheduledExecutorService.scheduleWithFixedDelay(this::sendConfig, 30, 30, TimeUnit.SECONDS);
}
@@ -195,7 +193,7 @@ public class ConfigManager
configChanged.setKey(key);
configChanged.setOldValue(null);
configChanged.setNewValue(value);
eventBus.post(configChanged);
eventBus.post(ConfigChanged.class, configChanged);
});
}
catch (Exception ex)
@@ -234,7 +232,7 @@ public class ConfigManager
private void postConfigChanged(ConfigChanged configChanged)
{
configObjectCache.remove(configChanged.getGroup() + "." + configChanged.getKey());
eventBus.post(configChanged);
eventBus.post(ConfigChanged.class, configChanged);
}
public <T> T getConfig(Class<T> clazz)
@@ -333,7 +331,7 @@ public class ConfigManager
configChanged.setKey(key);
configChanged.setOldValue(oldValue);
eventBus.post(configChanged);
eventBus.post(ConfigChanged.class, configChanged);
}
public ConfigDescriptor getConfigDescriptor(Object configurationProxy)

View File

@@ -39,7 +39,6 @@ import net.runelite.client.discord.events.DiscordJoinRequest;
import net.runelite.client.discord.events.DiscordReady;
import net.runelite.client.discord.events.DiscordSpectateGame;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.discord.DiscordEventHandlers;
import net.runelite.discord.DiscordRPC;
import net.runelite.discord.DiscordRichPresence;
@@ -49,7 +48,7 @@ import net.runelite.discord.DiscordUser;
@Slf4j
public class DiscordService implements AutoCloseable
{
private final EventBusImplementation eventBus;
private final EventBus eventBus;
private final RuneLiteProperties runeLiteProperties;
private final ScheduledExecutorService executorService;
private final DiscordRPC discordRPC;
@@ -62,7 +61,7 @@ public class DiscordService implements AutoCloseable
@Inject
private DiscordService(
final EventBusImplementation eventBus,
final EventBus eventBus,
final RuneLiteProperties runeLiteProperties,
final ScheduledExecutorService executorService)
{
@@ -199,7 +198,7 @@ public class DiscordService implements AutoCloseable
{
log.info("Discord RPC service is ready with user {}.", user.username);
currentUser = user;
eventBus.post(new DiscordReady(
eventBus.post(DiscordReady.class, new DiscordReady(
user.userId,
user.username,
user.discriminator,
@@ -208,28 +207,28 @@ public class DiscordService implements AutoCloseable
private void disconnected(int errorCode, String message)
{
eventBus.post(new DiscordDisconnected(errorCode, message));
eventBus.post(DiscordDisconnected.class, new DiscordDisconnected(errorCode, message));
}
private void errored(int errorCode, String message)
{
log.warn("Discord error: {} - {}", errorCode, message);
eventBus.post(new DiscordErrored(errorCode, message));
eventBus.post(DiscordErrored.class, new DiscordErrored(errorCode, message));
}
private void joinGame(String joinSecret)
{
eventBus.post(new DiscordJoinGame(joinSecret));
eventBus.post(DiscordJoinGame.class, new DiscordJoinGame(joinSecret));
}
private void spectateGame(String spectateSecret)
{
eventBus.post(new DiscordSpectateGame(spectateSecret));
eventBus.post(DiscordSpectateGame.class, new DiscordSpectateGame(spectateSecret));
}
private void joinRequest(DiscordUser user)
{
eventBus.post(new DiscordJoinRequest(
eventBus.post(DiscordJoinRequest.class, new DiscordJoinRequest(
user.userId,
user.username,
user.discriminator,

View File

@@ -1,38 +1,58 @@
/*
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
* Copyright (c) 2018, Abex
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.eventbus;
import io.reactivex.Observable;
import java.util.List;
import com.jakewharton.rxrelay2.PublishRelay;
import com.jakewharton.rxrelay2.Relay;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Singleton;
public interface EventBus
@Singleton
public class EventBus
{
void post(Object event);
private Map<Class<?>, Relay<Object>> subjectList = new HashMap<>();
private Map<Object, CompositeDisposable> subscriptionsMap = new HashMap<>();
<T> Observable<T> observableOfType(Class<T> eventClass);
@NonNull
private <T> Relay<Object> getSubject(Class<T> eventClass)
{
return subjectList.computeIfAbsent(eventClass, k -> PublishRelay.create().toSerialized());
}
<T> Observable<Object> observableOfTypes(List<Class<T>> eventClasses);
@NonNull
private CompositeDisposable getCompositeDisposable(@NonNull Object object)
{
CompositeDisposable compositeDisposable = subscriptionsMap.get(object);
if (compositeDisposable == null)
{
compositeDisposable = new CompositeDisposable();
subscriptionsMap.put(object, compositeDisposable);
}
return compositeDisposable;
}
public <T> void subscribe(Class<T> eventClass, @NonNull Object lifecycle, @NonNull Consumer<Object> action)
{
Disposable disposable = getSubject(eventClass).subscribe(action);
getCompositeDisposable(lifecycle).add(disposable);
}
public void unregister(@NonNull Object lifecycle)
{
//We have to remove the composition from the map, because once you dispose it can't be used anymore
CompositeDisposable compositeDisposable = subscriptionsMap.remove(lifecycle);
if (compositeDisposable != null)
{
compositeDisposable.dispose();
}
}
public <T> void post(Class<T> eventClass, @NonNull Object event)
{
getSubject(eventClass).accept(event);
}
}

View File

@@ -1,50 +0,0 @@
package net.runelite.client.eventbus;
import com.jakewharton.rxrelay2.PublishRelay;
import com.jakewharton.rxrelay2.Relay;
import io.reactivex.Observable;
import java.util.List;
import java.util.Objects;
import javax.inject.Singleton;
@Singleton
public class EventBusImplementation implements EventBus
{
private final Relay<Object> bus = PublishRelay.create().toSerialized();
@Override
public void post(Object event)
{
if (this.bus.hasObservers())
{
this.bus.accept(event);
}
}
@Override
public <T> Observable<T> observableOfType(Class<T> eventClass)
{
return this.bus
.filter(Objects::nonNull) // Filter out null objects, better safe than sorry
.filter(eventClass::isInstance) // We're only interested in a specific event class
.cast(eventClass); // Cast it for easier usage
}
@Override
public <T> Observable<Object> observableOfTypes(List<Class<T>> eventClasses)
{
return this.bus
.filter(Objects::nonNull) // Filter out null objects, better safe than sorry
.filter(event -> {
for (Class eventClass : eventClasses)
{
if (eventClass.isInstance(event))
{
return true;
}
}
return false;
}); // We're only interested in a specific event classes
}
}

View File

@@ -44,7 +44,7 @@ import net.runelite.api.IndexedSprite;
import net.runelite.api.SpriteID;
import net.runelite.api.events.ClanChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.util.ImageUtil;
import net.runelite.client.util.Text;
@@ -100,17 +100,14 @@ public class ClanManager
private ClanManager(
final Client client,
final SpriteManager spriteManager,
final EventBusImplementation eventbus
final EventBus eventbus
)
{
this.client = client;
this.spriteManager = spriteManager;
eventbus.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged);
eventbus.observableOfType(ClanChanged.class)
.subscribe(this::onClanChanged);
eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
eventbus.subscribe(ClanChanged.class, this, o -> this.onClanChanged((ClanChanged) o));
}
public ClanMemberRank getRank(String playerName)

View File

@@ -164,7 +164,7 @@ import net.runelite.api.Sprite;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.PostItemDefinition;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.http.api.item.ItemClient;
import net.runelite.http.api.item.ItemPrice;
import net.runelite.http.api.item.ItemStats;
@@ -269,7 +269,7 @@ public class ItemManager
Client client,
ScheduledExecutorService executor,
ClientThread clientThread,
EventBusImplementation eventbus
EventBus eventbus
)
{
this.client = client;
@@ -315,11 +315,9 @@ public class ItemManager
}
});
eventbus.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged);
eventbus.observableOfType(PostItemDefinition.class)
.subscribe(this::onPostItemDefinition);
eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
eventbus.subscribe(PostItemDefinition.class, this, o -> this.onPostItemDefinition((PostItemDefinition) o));
}
private void loadPrices()

View File

@@ -53,7 +53,7 @@ import net.runelite.api.events.ItemQuantityChanged;
import net.runelite.api.events.ItemSpawned;
import net.runelite.api.events.NpcDespawned;
import net.runelite.api.events.PlayerDespawned;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.events.NpcLootReceived;
import net.runelite.client.events.PlayerLootReceived;
@@ -65,7 +65,7 @@ public class LootManager
NpcID.CAVE_KRAKEN, AnimationID.CAVE_KRAKEN_DEATH
);
private final EventBusImplementation eventBus;
private final EventBus eventBus;
private final Client client;
private final ListMultimap<Integer, ItemStack> itemSpawns = ArrayListMultimap.create();
private final Set<LocalPoint> killPoints = new HashSet<>();
@@ -74,33 +74,20 @@ public class LootManager
@Inject
private LootManager(
final EventBusImplementation eventBus,
final EventBus eventBus,
final Client client
)
{
this.eventBus = eventBus;
this.client = client;
eventBus.observableOfType(GameTick.class)
.subscribe(this::onGameTick);
eventBus.observableOfType(NpcDespawned.class)
.subscribe(this::onNpcDespawned);
eventBus.observableOfType(PlayerDespawned.class)
.subscribe(this::onPlayerDespawned);
eventBus.observableOfType(ItemSpawned.class)
.subscribe(this::onItemSpawned);
eventBus.observableOfType(ItemDespawned.class)
.subscribe(this::onItemDespawned);
eventBus.observableOfType(ItemQuantityChanged.class)
.subscribe(this::onItemQuantityChanged);
eventBus.observableOfType(AnimationChanged.class)
.subscribe(this::onAnimationChanged);
eventBus.subscribe(GameTick.class, this, o -> this.onGameTick((GameTick) o));
eventBus.subscribe(NpcDespawned.class, this, o -> this.onNpcDespawned((NpcDespawned) o));
eventBus.subscribe(PlayerDespawned.class, this, o -> this.onPlayerDespawned((PlayerDespawned) o));
eventBus.subscribe(ItemSpawned.class, this, o -> this.onItemSpawned((ItemSpawned) o));
eventBus.subscribe(ItemDespawned.class, this, o -> this.onItemDespawned((ItemDespawned) o));
eventBus.subscribe(ItemQuantityChanged.class, this, o -> this.onItemQuantityChanged((ItemQuantityChanged) o));
eventBus.subscribe(AnimationChanged.class, this, o -> this.onAnimationChanged((AnimationChanged) o));
}
private void onNpcDespawned(NpcDespawned npcDespawned)
@@ -171,7 +158,7 @@ public class LootManager
}
killPoints.add(location);
eventBus.post(new PlayerLootReceived(player, items));
eventBus.post(PlayerLootReceived.class, new PlayerLootReceived(player, items));
}
private void onItemSpawned(ItemSpawned itemSpawned)
@@ -273,7 +260,7 @@ public class LootManager
}
killPoints.add(location);
eventBus.post(new NpcLootReceived(npc, allItems));
eventBus.post(NpcLootReceived.class, new NpcLootReceived(npc, allItems));
}
private WorldPoint getDropLocation(NPC npc, WorldPoint worldLocation)

View File

@@ -40,7 +40,7 @@ import net.runelite.api.widgets.JavaScriptCallback;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.input.MouseListener;
@@ -53,7 +53,7 @@ public class ChatboxPanelManager
{
private final Client client;
private final ClientThread clientThread;
private final EventBusImplementation eventBus;
private final EventBus eventBus;
private final KeyManager keyManager;
private final MouseManager mouseManager;
@@ -65,7 +65,7 @@ public class ChatboxPanelManager
private ChatboxInput currentInput = null;
@Inject
private ChatboxPanelManager(EventBusImplementation eventBus, Client client, ClientThread clientThread,
private ChatboxPanelManager(EventBus eventBus, Client client, ClientThread clientThread,
KeyManager keyManager, MouseManager mouseManager,
Provider<ChatboxTextMenuInput> chatboxTextMenuInputProvider, Provider<ChatboxTextInput> chatboxTextInputProvider)
{
@@ -79,11 +79,9 @@ public class ChatboxPanelManager
this.chatboxTextMenuInputProvider = chatboxTextMenuInputProvider;
this.chatboxTextInputProvider = chatboxTextInputProvider;
eventBus.observableOfType(ScriptCallbackEvent.class)
.subscribe(this::onScriptCallbackEvent);
eventBus.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged);
eventBus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o));
eventBus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
}
public void close()

View File

@@ -65,7 +65,7 @@ import net.runelite.api.events.PlayerMenuOptionsChanged;
import net.runelite.api.events.WidgetMenuOptionClicked;
import net.runelite.api.events.WidgetPressed;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.util.Text;
@Singleton
@@ -80,7 +80,7 @@ public class MenuManager
static final Pattern LEVEL_PATTERN = Pattern.compile("\\(level-[0-9]*\\)");
private final Client client;
private final EventBusImplementation eventBus;
private final EventBus eventBus;
//Maps the indexes that are being used to the menu option.
private final Map<Integer, String> playerMenuIndexMap = new HashMap<>();
@@ -101,31 +101,19 @@ public class MenuManager
private MenuEntry firstEntry = null;
@Inject
private MenuManager(Client client, EventBusImplementation eventBus)
private MenuManager(Client client, EventBus eventBus)
{
this.client = client;
this.eventBus = eventBus;
eventBus.observableOfType(MenuOpened.class)
.subscribe(this::onMenuOpened);
eventBus.observableOfType(MenuEntryAdded.class)
.subscribe(this::onMenuEntryAdded);
eventBus.observableOfType(BeforeRender.class)
.subscribe(this::onBeforeRender);
eventBus.observableOfType(PlayerMenuOptionsChanged.class)
.subscribe(this::onPlayerMenuOptionsChanged);
eventBus.observableOfType(NpcActionChanged.class)
.subscribe(this::onNpcActionChanged);
eventBus.observableOfType(WidgetPressed.class)
.subscribe(this::onWidgetPressed);
eventBus.observableOfType(MenuOptionClicked.class)
.subscribe(this::onMenuOptionClicked);
eventBus.subscribe(MenuOpened.class, this, o -> this.onMenuOpened((MenuOpened) o));
eventBus.subscribe(MenuEntryAdded.class, this, o -> this.onMenuEntryAdded((MenuEntryAdded) o));
eventBus.subscribe(BeforeRender.class, this, o -> this.onBeforeRender((BeforeRender) o));
eventBus.subscribe(PlayerMenuOptionsChanged.class, this, o -> this.onPlayerMenuOptionsChanged((PlayerMenuOptionsChanged) o));
eventBus.subscribe(NpcActionChanged.class, this, o -> this.onNpcActionChanged((NpcActionChanged) o));
eventBus.subscribe(WidgetPressed.class, this, o -> this.onWidgetPressed((WidgetPressed) o));
eventBus.subscribe(MenuOptionClicked.class, this, o -> this.onMenuOptionClicked((MenuOptionClicked) o));
}
/**
@@ -494,7 +482,7 @@ public class MenuManager
customMenu.setMenuOption(event.getOption());
customMenu.setMenuTarget(event.getTarget());
customMenu.setWidget(curMenuOption.getWidget());
eventBus.post(customMenu);
eventBus.post(WidgetMenuOptionClicked.class, customMenu);
return; // don't continue because it's not a player option
}
}
@@ -509,7 +497,7 @@ public class MenuManager
playerMenuOptionClicked.setMenuOption(event.getOption());
playerMenuOptionClicked.setMenuTarget(username);
eventBus.post(playerMenuOptionClicked);
eventBus.post(PlayerMenuOptionClicked.class, playerMenuOptionClicked);
}
private void addPlayerMenuItem(int playerOptionIndex, String menuText)

View File

@@ -38,7 +38,6 @@ public abstract class Plugin implements Module
public File file;
public PluginClassLoader loader;
private List<Disposable> disposables = new ArrayList<>();
@Override
public void configure(Binder binder)
@@ -51,12 +50,6 @@ public abstract class Plugin implements Module
protected void shutDown() throws Exception
{
this.disposables.forEach(Disposable::dispose);
}
protected void addSubscription(Disposable disposable)
{
this.disposables.add(disposable);
}
public final Injector getInjector()

View File

@@ -67,7 +67,7 @@ import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.events.PluginChanged;
import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen;
@@ -86,7 +86,7 @@ public class PluginManager
private static final String PLUGIN_PACKAGE = "net.runelite.client.plugins";
private final boolean developerMode;
private final EventBusImplementation eventBus;
private final EventBus eventBus;
private final Scheduler scheduler;
private final ConfigManager configManager;
private final ScheduledExecutorService executor;
@@ -106,7 +106,7 @@ public class PluginManager
@VisibleForTesting
PluginManager(
@Named("developerMode") final boolean developerMode,
final EventBusImplementation eventBus,
final EventBus eventBus,
final Scheduler scheduler,
final ConfigManager configManager,
final ScheduledExecutorService executor,
@@ -119,11 +119,8 @@ public class PluginManager
this.executor = executor;
this.sceneTileManager = sceneTileManager;
eventBus.observableOfType(SessionOpen.class)
.subscribe(this::onSessionOpen);
eventBus.observableOfType(SessionClose.class)
.subscribe(this::onSessionClose);
eventBus.subscribe(SessionOpen.class, this, o -> this.onSessionOpen((SessionOpen) o));
eventBus.subscribe(SessionClose.class, this, o -> this.onSessionClose((SessionClose) o));
}
public void watch()
@@ -373,7 +370,7 @@ public class PluginManager
// eventBus.register(plugin);
schedule(plugin);
eventBus.post(new PluginChanged(plugin, true));
eventBus.post(PluginChanged.class, new PluginChanged(plugin, true));
}
catch (InterruptedException | InvocationTargetException | IllegalArgumentException ex)
{
@@ -411,7 +408,7 @@ public class PluginManager
});
log.debug("Plugin {} is now stopped", plugin.getClass().getSimpleName());
eventBus.post(new PluginChanged(plugin, false));
eventBus.post(PluginChanged.class, new PluginChanged(plugin, false));
}
catch (InterruptedException | InvocationTargetException ex)

View File

@@ -59,7 +59,7 @@ import net.runelite.api.events.GameTick;
import net.runelite.api.events.ProjectileMoved;
import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginType;
@@ -93,7 +93,7 @@ public class AoeWarningPlugin extends Plugin
@Inject
private Client client;
@Inject
private EventBusImplementation eventbus;
private EventBus eventbus;
@Getter(AccessLevel.PACKAGE)
private List<WorldPoint> LightningTrail = new ArrayList<>();
@Getter(AccessLevel.PACKAGE)
@@ -191,41 +191,12 @@ public class AoeWarningPlugin extends Plugin
private void addSubscriptions()
{
this.addSubscription(
this.eventbus
.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(ProjectileMoved.class)
.subscribe(this::onProjectileMoved)
);
this.addSubscription(
this.eventbus
.observableOfType(GameObjectSpawned.class)
.subscribe(this::onGameObjectSpawned)
);
this.addSubscription(
this.eventbus
.observableOfType(GameObjectDespawned.class)
.subscribe(this::onGameObjectDespawned)
);
this.addSubscription(
this.eventbus
.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(GameTick.class)
.subscribe(this::onGameTick)
);
eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
eventbus.subscribe(ProjectileMoved.class, this, o -> this.onProjectileMoved((ProjectileMoved) o));
eventbus.subscribe(GameObjectSpawned.class, this, o -> this.onGameObjectSpawned((GameObjectSpawned) o));
eventbus.subscribe(GameObjectDespawned.class, this, o -> this.onGameObjectDespawned((GameObjectDespawned) o));
eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
eventbus.subscribe(GameTick.class, this, o -> this.onGameTick((GameTick) o));
}
private void onConfigChanged(ConfigChanged event)

View File

@@ -56,7 +56,7 @@ import net.runelite.api.events.ProjectileMoved;
import net.runelite.client.Notifier;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
@@ -124,7 +124,7 @@ public class CannonPlugin extends Plugin
private ClientThread clientThread;
@Inject
private EventBusImplementation eventbus;
private EventBus eventbus;
private boolean lock;
@@ -175,41 +175,12 @@ public class CannonPlugin extends Plugin
private void addSubscriptions()
{
this.addSubscription(
this.eventbus
.observableOfType(ItemContainerChanged.class)
.subscribe(this::onItemContainerChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(GameObjectSpawned.class)
.subscribe(this::onGameObjectSpawned)
);
this.addSubscription(
this.eventbus
.observableOfType(ProjectileMoved.class)
.subscribe(this::onProjectileMoved)
);
this.addSubscription(
this.eventbus
.observableOfType(ChatMessage.class)
.subscribe(this::onChatMessage)
);
this.addSubscription(
this.eventbus
.observableOfType(GameTick.class)
.subscribe(this::onGameTick)
);
eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
eventbus.subscribe(ItemContainerChanged.class, this, o -> this.onItemContainerChanged((ItemContainerChanged) o));
eventbus.subscribe(GameObjectSpawned.class, this, o -> this.onGameObjectSpawned((GameObjectSpawned) o));
eventbus.subscribe(ProjectileMoved.class, this, o -> this.onProjectileMoved((ProjectileMoved) o));
eventbus.subscribe(ChatMessage.class, this, o -> this.onChatMessage((ChatMessage) o));
eventbus.subscribe(GameTick.class, this, o -> this.onGameTick((GameTick) o));
}
private void onItemContainerChanged(ItemContainerChanged event)

View File

@@ -66,17 +66,12 @@ import net.runelite.api.SceneTileModel;
import net.runelite.api.SceneTilePaint;
import net.runelite.api.Texture;
import net.runelite.api.TextureProvider;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameObjectSpawned;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.ItemContainerChanged;
import net.runelite.api.events.ProjectileMoved;
import net.runelite.api.hooks.DrawCallbacks;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginInstantiationException;
@@ -127,7 +122,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
private PluginManager pluginManager;
@Inject
private EventBusImplementation eventbus;
private EventBus eventbus;
private Canvas canvas;
private JAWTWindow jawtWindow;
@@ -450,17 +445,9 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
private void addSubscriptions()
{
this.addSubscription(
this.eventbus
.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged)
);
eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
}
@Provides

View File

@@ -52,7 +52,7 @@ import static net.runelite.client.RuneLite.LOGS_DIR;
import net.runelite.client.RuneLiteProperties;
import net.runelite.client.account.SessionManager;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen;
import net.runelite.client.ui.ColorScheme;
@@ -86,7 +86,7 @@ public class InfoPanel extends PluginPanel
private RuneLiteProperties runeLiteProperties;
@Inject
private EventBusImplementation eventBus;
private EventBus eventBus;
@Inject
private SessionManager sessionManager;

View File

@@ -27,9 +27,7 @@ package net.runelite.client.plugins.info;
import java.awt.image.BufferedImage;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.ItemContainerChanged;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen;
import net.runelite.client.plugins.Plugin;
@@ -50,7 +48,7 @@ public class InfoPlugin extends Plugin
private ClientToolbar clientToolbar;
@Inject
private EventBusImplementation eventbus;
private EventBus eventbus;
private NavigationButton navButton;
@@ -80,23 +78,14 @@ public class InfoPlugin extends Plugin
@Override
protected void shutDown() throws Exception
{
super.shutDown();
eventbus.unregister(this);
clientToolbar.removeNavigation(navButton);
}
private void addSubscriptions()
{
this.addSubscription(
this.eventbus
.observableOfType(SessionOpen.class)
.subscribe(panel::onSessionOpen)
);
this.addSubscription(
this.eventbus
.observableOfType(SessionClose.class)
.subscribe(panel::onSessionClose)
);
eventbus.subscribe(SessionOpen.class, this, o -> panel.onSessionOpen((SessionOpen) o));
eventbus.subscribe(SessionClose.class, this, o -> panel.onSessionClose((SessionClose) o));
}
}

View File

@@ -66,7 +66,7 @@ import net.runelite.api.events.NpcDespawned;
import net.runelite.api.events.NpcSpawned;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
@@ -117,7 +117,7 @@ public class NpcIndicatorsPlugin extends Plugin
private ClientThread clientThread;
@Inject
private EventBusImplementation eventbus;
private EventBus eventbus;
@Setter(AccessLevel.PACKAGE)
private boolean hotKeyPressed = false;
@@ -226,7 +226,7 @@ public class NpcIndicatorsPlugin extends Plugin
@Override
protected void shutDown() throws Exception
{
super.shutDown();
eventbus.unregister(this);
overlayManager.remove(npcSceneOverlay);
overlayManager.remove(npcMinimapOverlay);
@@ -242,65 +242,16 @@ public class NpcIndicatorsPlugin extends Plugin
private void addSubscriptions()
{
this.addSubscription(
this.eventbus
.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(FocusChanged.class)
.subscribe(this::onFocusChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(MenuEntryAdded.class)
.subscribe(this::onMenuEntryAdded)
);
this.addSubscription(
this.eventbus
.observableOfType(MenuOptionClicked.class)
.subscribe(this::onMenuOptionClicked)
);
this.addSubscription(
this.eventbus
.observableOfType(NpcSpawned.class)
.subscribe(this::onNpcSpawned)
);
this.addSubscription(
this.eventbus
.observableOfType(NpcDefinitionChanged.class)
.subscribe(this::onNpcDefinitionChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(NpcDespawned.class)
.subscribe(this::onNpcDespawned)
);
this.addSubscription(
this.eventbus
.observableOfType(GraphicsObjectCreated.class)
.subscribe(this::onGraphicsObjectCreated)
);
this.addSubscription(
this.eventbus
.observableOfType(GameTick.class)
.subscribe(this::onGameTick)
);
eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
eventbus.subscribe(FocusChanged.class, this, o -> this.onFocusChanged((FocusChanged) o));
eventbus.subscribe(MenuEntryAdded.class, this, o -> this.onMenuEntryAdded((MenuEntryAdded) o));
eventbus.subscribe(MenuOptionClicked.class, this, o -> this.onMenuOptionClicked((MenuOptionClicked) o));
eventbus.subscribe(NpcSpawned.class, this, o -> this.onNpcSpawned((NpcSpawned) o));
eventbus.subscribe(NpcDefinitionChanged.class, this, o -> this.onNpcDefinitionChanged((NpcDefinitionChanged) o));
eventbus.subscribe(NpcDespawned.class, this, o -> this.onNpcDespawned((NpcDespawned) o));
eventbus.subscribe(GraphicsObjectCreated.class, this, o -> this.onGraphicsObjectCreated((GraphicsObjectCreated) o));
eventbus.subscribe(GameTick.class, this, o -> this.onGameTick((GameTick) o));
}
private void onGameStateChanged(GameStateChanged event)

View File

@@ -64,7 +64,7 @@ import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.MenuOptionClicked;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
@@ -109,7 +109,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
private KeyManager keyManager;
@Inject
private EventBusImplementation eventbus;
private EventBus eventbus;
@Getter(AccessLevel.PACKAGE)
private RenderStyle objectMarkerRenderStyle;
@@ -139,13 +139,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
@Override
protected void shutDown()
{
try
{
super.shutDown();
}
catch (Exception e)
{
}
eventbus.unregister(this);
overlayManager.remove(overlay);
keyManager.unregisterKeyListener(this);
@@ -156,65 +150,15 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
private void addSubscriptions()
{
this.addSubscription(
this.eventbus
.observableOfType(FocusChanged.class)
.subscribe(this::onFocusChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(GameObjectSpawned.class)
.subscribe(this::onGameObjectSpawned)
);
this.addSubscription(
this.eventbus
.observableOfType(DecorativeObjectSpawned.class)
.subscribe(this::onDecorativeObjectSpawned)
);
this.addSubscription(
this.eventbus
.observableOfType(GameObjectDespawned.class)
.subscribe(this::onGameObjectDespawned)
);
this.addSubscription(
this.eventbus
.observableOfType(DecorativeObjectDespawned.class)
.subscribe(this::onDecorativeObjectDespawned)
);
this.addSubscription(
this.eventbus
.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(MenuOptionClicked.class)
.subscribe(this::onMenuOptionClicked)
);
this.addSubscription(
this.eventbus
.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(MenuEntryAdded.class)
.subscribe(this::onMenuEntryAdded)
);
this.addSubscription(
this.eventbus
.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged)
);
eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
eventbus.subscribe(FocusChanged.class, this, o -> this.onFocusChanged((FocusChanged) o));
eventbus.subscribe(GameObjectSpawned.class, this, o -> this.onGameObjectSpawned((GameObjectSpawned) o));
eventbus.subscribe(DecorativeObjectSpawned.class, this, o -> this.onDecorativeObjectSpawned((DecorativeObjectSpawned) o));
eventbus.subscribe(GameObjectDespawned.class, this, o -> this.onGameObjectDespawned((GameObjectDespawned) o));
eventbus.subscribe(DecorativeObjectDespawned.class, this, o -> this.onDecorativeObjectDespawned((DecorativeObjectDespawned) o));
eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
eventbus.subscribe(MenuOptionClicked.class, this, o -> this.onMenuOptionClicked((MenuOptionClicked) o));
eventbus.subscribe(MenuEntryAdded.class, this, o -> this.onMenuEntryAdded((MenuEntryAdded) o));
}
@Override

View File

@@ -39,7 +39,7 @@ import static net.runelite.api.widgets.WidgetInfo.*;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.RuneLitePlusConfig;
import net.runelite.client.discord.DiscordService;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
@@ -106,7 +106,7 @@ public class RuneLitePlusPlugin extends Plugin
private ClientThread clientThread;
@Inject
private EventBusImplementation eventbus;
private EventBus eventbus;
private final RuneLitePlusKeyListener keyListener = new RuneLitePlusKeyListener();
private int entered = -1;
@@ -169,7 +169,7 @@ public class RuneLitePlusPlugin extends Plugin
@Override
protected void shutDown() throws Exception
{
super.shutDown();
eventbus.unregister(this);
entered = 0;
enterIdx = 0;
@@ -179,17 +179,8 @@ public class RuneLitePlusPlugin extends Plugin
private void addSubscriptions()
{
this.addSubscription(
this.eventbus
.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(ScriptCallbackEvent.class)
.subscribe(this::onScriptCallbackEvent)
);
eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
eventbus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o));
}
private void onScriptCallbackEvent(ScriptCallbackEvent e)

View File

@@ -29,7 +29,6 @@ import java.util.Set;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.events.NavigationButtonAdded;
import net.runelite.client.events.NavigationButtonRemoved;
@@ -39,11 +38,11 @@ import net.runelite.client.events.NavigationButtonRemoved;
@Singleton
public class ClientToolbar
{
private final EventBusImplementation eventBus;
private final EventBus eventBus;
private final Set<NavigationButton> buttons = new HashSet<>();
@Inject
private ClientToolbar(final EventBusImplementation eventBus)
private ClientToolbar(final EventBus eventBus)
{
this.eventBus = eventBus;
}
@@ -62,7 +61,7 @@ public class ClientToolbar
if (buttons.add(button))
{
eventBus.post(new NavigationButtonAdded(button));
eventBus.post(NavigationButtonAdded.class, new NavigationButtonAdded(button));
}
}
@@ -75,7 +74,7 @@ public class ClientToolbar
{
if (buttons.remove(button))
{
eventBus.post(new NavigationButtonRemoved(button));
eventBus.post(NavigationButtonRemoved.class, new NavigationButtonRemoved(button));
}
}
}

View File

@@ -84,7 +84,7 @@ import net.runelite.client.config.ExpandResizeType;
import net.runelite.client.config.Keybind;
import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.config.WarningOnExit;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.events.NavigationButtonAdded;
import net.runelite.client.events.NavigationButtonRemoved;
import net.runelite.client.input.KeyManager;
@@ -159,7 +159,7 @@ public class ClientUI
@Nullable Applet client,
ConfigManager configManager,
Provider<ClientThread> clientThreadProvider,
EventBusImplementation eventbus)
EventBus eventbus)
{
this.properties = properties;
this.config = config;
@@ -169,17 +169,10 @@ public class ClientUI
this.configManager = configManager;
this.clientThreadProvider = clientThreadProvider;
eventbus.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged);
eventbus.observableOfType(NavigationButtonAdded.class)
.subscribe(this::onNavigationButtonAdded);
eventbus.observableOfType(NavigationButtonRemoved.class)
.subscribe(this::onNavigationButtonRemoved);
eventbus.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged);
eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
eventbus.subscribe(NavigationButtonAdded.class, this, o -> this.onNavigationButtonAdded((NavigationButtonAdded) o));
eventbus.subscribe(NavigationButtonRemoved.class, this, o -> this.onNavigationButtonRemoved((NavigationButtonRemoved) o));
eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
}
private void onConfigChanged(ConfigChanged event)

View File

@@ -47,7 +47,6 @@ import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.events.OverlayMenuClicked;
import net.runelite.client.events.PluginChanged;
@@ -104,19 +103,16 @@ public class OverlayManager
private final Map<OverlayLayer, List<Overlay>> overlayLayers = new EnumMap<>(OverlayLayer.class);
private final ConfigManager configManager;
private final EventBusImplementation eventBus;
private final EventBus eventBus;
@Inject
private OverlayManager(final ConfigManager configManager, final EventBusImplementation eventBus)
private OverlayManager(final ConfigManager configManager, final EventBus eventBus)
{
this.configManager = configManager;
this.eventBus = eventBus;
eventBus.observableOfType(PluginChanged.class)
.subscribe(this::onPluginChanged);
eventBus.observableOfType(MenuOptionClicked.class)
.subscribe(this::onMenuOptionClicked);
eventBus.subscribe(PluginChanged.class, this, o -> this.onPluginChanged((PluginChanged) o));
eventBus.subscribe(MenuOptionClicked.class, this, o -> this.onMenuOptionClicked((MenuOptionClicked) o));
}
private void onPluginChanged(final PluginChanged event)
@@ -142,7 +138,7 @@ public class OverlayManager
Optional<OverlayMenuEntry> optionalOverlayMenuEntry = menuEntries.stream()
.filter(me -> me.getOption().equals(event.getOption()))
.findAny();
optionalOverlayMenuEntry.ifPresent(overlayMenuEntry -> eventBus.post(new OverlayMenuClicked(overlayMenuEntry, overlay)));
optionalOverlayMenuEntry.ifPresent(overlayMenuEntry -> eventBus.post(OverlayMenuClicked.class, new OverlayMenuClicked(overlayMenuEntry, overlay)));
}
}

View File

@@ -50,16 +50,15 @@ import net.runelite.api.events.FocusChanged;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.input.MouseAdapter;
import net.runelite.client.input.MouseManager;
import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.JagexColors;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.ui.FontManager;
import net.runelite.client.util.MiscUtils;
import net.runelite.http.api.ws.messages.party.UserPart;
@Singleton
public class OverlayRenderer extends MouseAdapter implements KeyListener
@@ -103,7 +102,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
final RuneLiteConfig runeLiteConfig,
final MouseManager mouseManager,
final KeyManager keyManager,
final EventBusImplementation eventbus)
final EventBus eventbus)
{
this.client = client;
this.overlayManager = overlayManager;
@@ -112,17 +111,10 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
keyManager.registerKeyListener(this);
mouseManager.registerMouseListener(this);
eventbus.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged);
eventbus.observableOfType(FocusChanged.class)
.subscribe(this::onFocusChanged);
eventbus.observableOfType(ClientTick.class)
.subscribe(this::onClientTick);
eventbus.observableOfType(BeforeRender.class)
.subscribe(this::onBeforeRender);
eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
eventbus.subscribe(FocusChanged.class, this, o -> this.onFocusChanged((FocusChanged) o));
eventbus.subscribe(ClientTick.class, this, o -> this.onClientTick((ClientTick) o));
eventbus.subscribe(BeforeRender.class, this, o -> this.onBeforeRender((BeforeRender) o));
}
private void updateConfig()

View File

@@ -39,7 +39,7 @@ import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.events.ConfigChanged;
import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.plugins.PluginDescriptor;
@Singleton
@@ -50,11 +50,11 @@ public class InfoBoxManager
private final RuneLiteConfig runeLiteConfig;
@Inject
private InfoBoxManager(final RuneLiteConfig runeLiteConfig, final EventBusImplementation eventbus)
private InfoBoxManager(final RuneLiteConfig runeLiteConfig, final EventBus eventbus)
{
this.runeLiteConfig = runeLiteConfig;
eventbus.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged);
eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
}
private void onConfigChanged(ConfigChanged event)

View File

@@ -24,28 +24,31 @@
*/
package net.runelite.client.util;
import io.reactivex.annotations.NonNull;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
@Singleton
public class DeferredEventBus extends EventBusImplementation
public class DeferredEventBus extends EventBus
{
private final EventBusImplementation eventBus;
private final Queue<Object> pendingEvents = new ConcurrentLinkedQueue<>();
private final EventBus eventBus;
private final Queue<Pair<Class, Object>> pendingEvents = new ConcurrentLinkedQueue<>();
@Inject
private DeferredEventBus(EventBusImplementation eventBus)
private DeferredEventBus(EventBus eventBus)
{
this.eventBus = eventBus;
}
@Override
public void post(Object object)
public <T> void post(Class<T> eventClass, @NonNull Object event)
{
pendingEvents.add(object);
pendingEvents.add(new ImmutablePair<>(eventClass, event));
}
public void replay()
@@ -53,10 +56,10 @@ public class DeferredEventBus extends EventBusImplementation
int size = pendingEvents.size();
while (size-- > 0)
{
Object object = pendingEvents.poll();
if (object != null)
Pair<Class, Object> eventPair = pendingEvents.poll();
if (eventPair != null)
{
eventBus.post(object);
eventBus.post(eventPair.getKey(), eventPair.getValue());
}
}
}

View File

@@ -51,12 +51,11 @@ import net.runelite.api.events.PlayerSpawned;
import net.runelite.api.events.WallObjectSpawned;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
@Singleton
public class GameEventManager
{
private final EventBusImplementation eventBus = new EventBusImplementation();
private final EventBus eventBus = new EventBus();
private final Client client;
private final ClientThread clientThread;
@@ -119,7 +118,7 @@ public class GameEventManager
if (itemContainer != null)
{
eventBus.post(new ItemContainerChanged(inventory.getId(), itemContainer));
eventBus.post(ItemContainerChanged.class, new ItemContainerChanged(inventory.getId(), itemContainer));
}
}
@@ -128,7 +127,7 @@ public class GameEventManager
if (npc != null)
{
final NpcSpawned npcSpawned = new NpcSpawned(npc);
eventBus.post(npcSpawned);
eventBus.post(NpcSpawned.class, npcSpawned);
}
}
@@ -137,7 +136,7 @@ public class GameEventManager
if (player != null)
{
final PlayerSpawned playerSpawned = new PlayerSpawned(player);
eventBus.post(playerSpawned);
eventBus.post(PlayerSpawned.class, playerSpawned);
}
}
@@ -148,7 +147,7 @@ public class GameEventManager
final WallObjectSpawned objectSpawned = new WallObjectSpawned();
objectSpawned.setTile(tile);
objectSpawned.setWallObject(object);
eventBus.post(objectSpawned);
eventBus.post(WallObjectSpawned.class, objectSpawned);
});
Optional.ofNullable(tile.getDecorativeObject()).ifPresent(object ->
@@ -156,7 +155,7 @@ public class GameEventManager
final DecorativeObjectSpawned objectSpawned = new DecorativeObjectSpawned();
objectSpawned.setTile(tile);
objectSpawned.setDecorativeObject(object);
eventBus.post(objectSpawned);
eventBus.post(DecorativeObjectSpawned.class, objectSpawned);
});
Optional.ofNullable(tile.getGroundObject()).ifPresent(object ->
@@ -164,7 +163,7 @@ public class GameEventManager
final GroundObjectSpawned objectSpawned = new GroundObjectSpawned();
objectSpawned.setTile(tile);
objectSpawned.setGroundObject(object);
eventBus.post(objectSpawned);
eventBus.post(GroundObjectSpawned.class, objectSpawned);
});
Arrays.stream(tile.getGameObjects())
@@ -174,7 +173,7 @@ public class GameEventManager
final GameObjectSpawned objectSpawned = new GameObjectSpawned();
objectSpawned.setTile(tile);
objectSpawned.setGameObject(object);
eventBus.post(objectSpawned);
eventBus.post(GameObjectSpawned.class, objectSpawned);
});
Optional.ofNullable(tile.getItemLayer()).ifPresent(itemLayer ->
@@ -188,7 +187,7 @@ public class GameEventManager
current = current.getNext();
final ItemSpawned itemSpawned = new ItemSpawned(tile, item);
eventBus.post(itemSpawned);
eventBus.post(ItemSpawned.class, itemSpawned);
}
});
});

View File

@@ -33,10 +33,9 @@ import javax.inject.Singleton;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.events.GameStateChanged;
import net.runelite.client.account.AccountSession;
import net.runelite.client.account.SessionManager;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.events.PartyChanged;
import net.runelite.http.api.ws.messages.party.Join;
import net.runelite.http.api.ws.messages.party.Part;
@@ -52,7 +51,7 @@ public class PartyService
private final WSClient wsClient;
private final SessionManager sessionManager;
private final EventBusImplementation eventBus;
private final EventBus eventBus;
private final List<PartyMember> members = new ArrayList<>();
@Getter
@@ -65,17 +64,14 @@ public class PartyService
private String username;
@Inject
private PartyService(final WSClient wsClient, final SessionManager sessionManager, final EventBusImplementation eventBus)
private PartyService(final WSClient wsClient, final SessionManager sessionManager, final EventBus eventBus)
{
this.wsClient = wsClient;
this.sessionManager = sessionManager;
this.eventBus = eventBus;
eventBus.observableOfType(UserJoin.class)
.subscribe(this::onUserJoin);
eventBus.observableOfType(UserPart.class)
.subscribe(this::onUserPart);
eventBus.subscribe(UserJoin.class, this, o -> this.onUserJoin((UserJoin) o));
eventBus.subscribe(UserPart.class, this, o -> this.onUserPart((UserPart) o));
}
public void changeParty(UUID newParty)
@@ -100,7 +96,7 @@ public class PartyService
wsClient.changeSession(null);
}
eventBus.post(new PartyChanged(partyId));
eventBus.post(PartyChanged.class, new PartyChanged(partyId));
return;
}
@@ -113,7 +109,7 @@ public class PartyService
wsClient.changeSession(uuid);
}
eventBus.post(new PartyChanged(partyId));
eventBus.post(PartyChanged.class, new PartyChanged(partyId));
wsClient.send(new Join(partyId, username));
}

View File

@@ -35,7 +35,6 @@ import javax.inject.Singleton;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.http.api.RuneLiteAPI;
import net.runelite.http.api.ws.WebsocketGsonFactory;
import net.runelite.http.api.ws.WebsocketMessage;
@@ -50,7 +49,7 @@ import okhttp3.WebSocketListener;
@Singleton
public class WSClient extends WebSocketListener implements AutoCloseable
{
private final EventBusImplementation eventBus;
private final EventBus eventBus;
private final Collection<Class<? extends WebsocketMessage>> messages = new HashSet<>();
private volatile Gson gson;
@@ -59,7 +58,7 @@ public class WSClient extends WebSocketListener implements AutoCloseable
private WebSocket webSocket;
@Inject
private WSClient(EventBusImplementation eventBus)
private WSClient(EventBus eventBus)
{
this.eventBus = eventBus;
this.gson = WebsocketGsonFactory.build(WebsocketGsonFactory.factory(messages));
@@ -175,7 +174,7 @@ public class WSClient extends WebSocketListener implements AutoCloseable
}
log.debug("Got: {}", text);
eventBus.post(message);
eventBus.post(PartyMessage.class, message);
}
@Override