eventbus: Add event interface

This commit is contained in:
Owain van Brakel
2019-07-27 22:19:54 +02:00
parent f7f539e245
commit eaf747ab66
113 changed files with 158 additions and 116 deletions

View File

@@ -50,6 +50,7 @@ import net.runelite.api.Renderable;
import net.runelite.api.WorldMapManager;
import net.runelite.api.events.BeforeMenuRender;
import net.runelite.api.events.BeforeRender;
import net.runelite.api.events.Event;
import net.runelite.api.events.GameTick;
import net.runelite.api.hooks.Callbacks;
import net.runelite.api.hooks.DrawCallbacks;
@@ -128,13 +129,13 @@ public class Hooks implements Callbacks
private boolean shouldProcessGameTick;
@Override
public <T> void post(Class<T> eventClass, Object event)
public <T> void post(Class<T> eventClass, Event event)
{
eventBus.post(eventClass, event);
}
@Override
public <T> void postDeferred(Class<T> eventClass, Object event)
public <T> void postDeferred(Class<T> eventClass, Event event)
{
deferredEventBus.post(eventClass, event);
}

View File

@@ -25,12 +25,13 @@
package net.runelite.client.discord.events;
import lombok.Value;
import net.runelite.api.events.Event;
/**
* Called when the RPC connection has been severed
*/
@Value
public class DiscordDisconnected
public class DiscordDisconnected implements Event
{
/**
* Discord error code

View File

@@ -25,12 +25,13 @@
package net.runelite.client.discord.events;
import lombok.Value;
import net.runelite.api.events.Event;
/**
* Called when an internal error is caught within the SDK
*/
@Value
public class DiscordErrored
public class DiscordErrored implements Event
{
/**
* Discord error code.

View File

@@ -25,12 +25,13 @@
package net.runelite.client.discord.events;
import lombok.Value;
import net.runelite.api.events.Event;
/**
* Called when the logged in user joined a game
*/
@Value
public class DiscordJoinGame
public class DiscordJoinGame implements Event
{
/**
* Obfuscated data of your choosing used as join secret

View File

@@ -25,12 +25,13 @@
package net.runelite.client.discord.events;
import lombok.Value;
import net.runelite.api.events.Event;
/**
* Called when another discord user wants to join the game of the logged in user
*/
@Value
public class DiscordJoinRequest
public class DiscordJoinRequest implements Event
{
/**
* The userId for the user that requests to join

View File

@@ -25,12 +25,13 @@
package net.runelite.client.discord.events;
import lombok.Value;
import net.runelite.api.events.Event;
/**
* Called when the RPC connection has been established
*/
@Value
public class DiscordReady
public class DiscordReady implements Event
{
/**
* The userId for the active user

View File

@@ -25,12 +25,13 @@
package net.runelite.client.discord.events;
import lombok.Value;
import net.runelite.api.events.Event;
/**
* Called when the logged in user joined to spectate a game
*/
@Value
public class DiscordSpectateGame
public class DiscordSpectateGame implements Event
{
/**
* Obfuscated data of your choosing used as spectate secret

View File

@@ -11,6 +11,7 @@ import java.util.Map;
import java.util.Objects;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.events.Event;
import org.apache.commons.lang3.exception.ExceptionUtils;
@Slf4j
@@ -75,7 +76,7 @@ public class EventBus implements EventBusInterface
}
@Override
public <T> void post(Class<T> eventClass, @NonNull Object event)
public <T> void post(Class<T> eventClass, @NonNull Event event)
{
getSubject(eventClass).accept(event);
}

View File

@@ -2,6 +2,7 @@ package net.runelite.client.eventbus;
import io.reactivex.annotations.NonNull;
import io.reactivex.functions.Consumer;
import net.runelite.api.events.Event;
public interface EventBusInterface
{
@@ -9,5 +10,5 @@ public interface EventBusInterface
void unregister(@NonNull Object lifecycle);
<T> void post(Class<T> eventClass, @NonNull Object event);
<T> void post(Class<T> eventClass, @NonNull Event event);
}

View File

@@ -25,10 +25,11 @@
package net.runelite.client.events;
import lombok.Value;
import net.runelite.api.events.Event;
import net.runelite.client.ui.NavigationButton;
@Value
public class NavigationButtonAdded
public class NavigationButtonAdded implements Event
{
private NavigationButton button;
}

View File

@@ -25,10 +25,11 @@
package net.runelite.client.events;
import lombok.Value;
import net.runelite.api.events.Event;
import net.runelite.client.ui.NavigationButton;
@Value
public class NavigationButtonRemoved
public class NavigationButtonRemoved implements Event
{
private NavigationButton button;
}

View File

@@ -27,10 +27,11 @@ package net.runelite.client.events;
import java.util.Collection;
import lombok.Value;
import net.runelite.api.NPC;
import net.runelite.api.events.Event;
import net.runelite.client.game.ItemStack;
@Value
public class NpcLootReceived
public class NpcLootReceived implements Event
{
private final NPC npc;
private final Collection<ItemStack> items;

View File

@@ -26,6 +26,7 @@ package net.runelite.client.events;
import lombok.AllArgsConstructor;
import lombok.Data;
import net.runelite.api.events.Event;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayMenuEntry;
@@ -34,7 +35,7 @@ import net.runelite.client.ui.overlay.OverlayMenuEntry;
*/
@Data
@AllArgsConstructor
public class OverlayMenuClicked
public class OverlayMenuClicked implements Event
{
private OverlayMenuEntry entry;
private Overlay overlay;

View File

@@ -26,9 +26,10 @@ package net.runelite.client.events;
import java.util.UUID;
import lombok.Value;
import net.runelite.api.events.Event;
@Value
public class PartyChanged
public class PartyChanged implements Event
{
private final UUID partyId;
}

View File

@@ -27,10 +27,11 @@ package net.runelite.client.events;
import java.util.Collection;
import lombok.Value;
import net.runelite.api.Player;
import net.runelite.api.events.Event;
import net.runelite.client.game.ItemStack;
@Value
public class PlayerLootReceived
public class PlayerLootReceived implements Event
{
private final Player player;
private final Collection<ItemStack> items;

View File

@@ -25,10 +25,11 @@
package net.runelite.client.events;
import lombok.Data;
import net.runelite.api.events.Event;
import net.runelite.client.plugins.Plugin;
@Data
public class PluginChanged
public class PluginChanged implements Event
{
private final Plugin plugin;
private final boolean loaded;

View File

@@ -25,6 +25,7 @@
package net.runelite.client.events;
import lombok.Data;
import net.runelite.api.events.Event;
/**
* An event where a new RuneLite account session has been closed,
@@ -34,7 +35,7 @@ import lombok.Data;
* it has nothing to do with whether an account is being logged out.
*/
@Data
public class SessionClose
public class SessionClose implements Event
{
}

View File

@@ -25,6 +25,7 @@
package net.runelite.client.events;
import lombok.Data;
import net.runelite.api.events.Event;
/**
* An event where a new RuneLite account session has been opened
@@ -34,7 +35,7 @@ import lombok.Data;
* it has nothing to do with whether an account is being logged in.
*/
@Data
public class SessionOpen
public class SessionOpen implements Event
{
}

View File

@@ -24,6 +24,8 @@
*/
package net.runelite.client.plugins.loottracker.localstorage.events;
public class LTNameChange
import net.runelite.api.events.Event;
public class LTNameChange implements Event
{
}

View File

@@ -25,10 +25,11 @@
package net.runelite.client.plugins.loottracker.localstorage.events;
import lombok.Data;
import net.runelite.api.events.Event;
import net.runelite.client.plugins.loottracker.localstorage.LTRecord;
@Data
public class LTRecordStored
public class LTRecordStored implements Event
{
private final LTRecord record;
}

View File

@@ -27,11 +27,12 @@ package net.runelite.client.plugins.party.messages;
import lombok.EqualsAndHashCode;
import lombok.Value;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.Event;
import net.runelite.http.api.ws.messages.party.PartyMemberMessage;
@Value
@EqualsAndHashCode(callSuper = true)
public class LocationUpdate extends PartyMemberMessage
public class LocationUpdate extends PartyMemberMessage implements Event
{
private final WorldPoint worldPoint;
}

View File

@@ -27,11 +27,12 @@ package net.runelite.client.plugins.party.messages;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.runelite.api.Skill;
import net.runelite.api.events.Event;
import net.runelite.http.api.ws.messages.party.PartyMemberMessage;
@AllArgsConstructor
@Getter
public class SkillUpdate extends PartyMemberMessage
public class SkillUpdate extends PartyMemberMessage implements Event
{
private final Skill skill;
private final int value;

View File

@@ -27,11 +27,12 @@ package net.runelite.client.plugins.party.messages;
import lombok.EqualsAndHashCode;
import lombok.Value;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.Event;
import net.runelite.http.api.ws.messages.party.PartyMemberMessage;
@Value
@EqualsAndHashCode(callSuper = true)
public class TilePing extends PartyMemberMessage
public class TilePing extends PartyMemberMessage implements Event
{
private final WorldPoint point;
}

View File

@@ -26,11 +26,12 @@ package net.runelite.client.plugins.specialcounter;
import lombok.EqualsAndHashCode;
import lombok.Value;
import net.runelite.api.events.Event;
import net.runelite.http.api.ws.messages.party.PartyMemberMessage;
@Value
@EqualsAndHashCode(callSuper = true)
class SpecialCounterUpdate extends PartyMemberMessage
class SpecialCounterUpdate extends PartyMemberMessage implements Event
{
private final int npcId;
private final SpecialWeapon weapon;

View File

@@ -29,6 +29,7 @@ import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.events.Event;
import net.runelite.client.eventbus.EventBus;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
@@ -37,7 +38,7 @@ import org.apache.commons.lang3.tuple.Pair;
public class DeferredEventBus extends EventBus
{
private final EventBus eventBus;
private final Queue<Pair<Class, Object>> pendingEvents = new ConcurrentLinkedQueue<>();
private final Queue<Pair<Class, Event>> pendingEvents = new ConcurrentLinkedQueue<>();
@Inject
private DeferredEventBus(EventBus eventBus)
@@ -46,7 +47,7 @@ public class DeferredEventBus extends EventBus
}
@Override
public <T> void post(Class<T> eventClass, @NonNull Object event)
public <T> void post(Class<T> eventClass, @NonNull Event event)
{
pendingEvents.add(new ImmutablePair<>(eventClass, event));
}
@@ -57,7 +58,7 @@ public class DeferredEventBus extends EventBus
int size = pendingEvents.size();
while (size-- > 0)
{
Pair<Class, Object> eventPair = pendingEvents.poll();
Pair<Class, Event> eventPair = pendingEvents.poll();
if (eventPair != null)
{
eventBus.post(eventPair.getKey(), eventPair.getValue());