Переход на свой EventBus
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package mc.core;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.eventbus.EventBus;
|
||||
import mc.core.eventbus.Subscriber;
|
||||
import mc.core.eventbus.events.CS_PlayerMoveEvent;
|
||||
import mc.core.eventbus.events.SC_ChunkLoadEvent;
|
||||
import mc.core.eventbus.events.SC_ChunkUnloadEvent;
|
||||
@@ -14,12 +16,11 @@ import java.util.Iterator;
|
||||
public class CoreEventListener {
|
||||
@PostConstruct
|
||||
public void registerEventHandlers() {
|
||||
// EventBusGetter.getInstance().register(this);
|
||||
EventBus.getInstance().registerSubscribes(this);
|
||||
}
|
||||
|
||||
@Subscriber
|
||||
public void handlerPlayerMoveEvent(CS_PlayerMoveEvent event) {
|
||||
log.trace("(GameLoop) playerMoveEventHandler()");
|
||||
|
||||
Chunk chunk;
|
||||
chunk = event.getPlayer().getWorld().getChunk(event.getOldLocation().toBlockLocation()); // Old chunk
|
||||
int ccX = chunk.getX();
|
||||
@@ -47,7 +48,7 @@ public class CoreEventListener {
|
||||
}
|
||||
|
||||
if (!eventChunkUnload.getNeedUnloadChunks().isEmpty()) {
|
||||
// EventBusGetter.getInstance().post(eventChunkUnload);
|
||||
EventBus.getInstance().post(eventChunkUnload);
|
||||
}
|
||||
|
||||
SC_ChunkLoadEvent eventChunkLoad = new SC_ChunkLoadEvent(event.getPlayer());
|
||||
@@ -64,7 +65,7 @@ public class CoreEventListener {
|
||||
}
|
||||
|
||||
if (!eventChunkLoad.getNeedLoadChunks().isEmpty()) {
|
||||
// EventBusGetter.getInstance().post(eventChunkLoad);
|
||||
EventBus.getInstance().post(eventChunkLoad);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ package mc.core;
|
||||
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.eventbus.EventBus;
|
||||
import mc.core.player.PlayerManager;
|
||||
import mc.core.time.TimeProcessor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -47,6 +48,8 @@ public class GameLoop extends Thread {
|
||||
|
||||
/* --- --- --- */
|
||||
|
||||
EventBus.getInstance().process();
|
||||
|
||||
/* TODO нужно перенести этот функционал на Network */
|
||||
playerManager.getBroadcastChannel().sendTimeUpdate(
|
||||
gameTimer.getGameTime(),
|
||||
|
||||
@@ -17,7 +17,7 @@ import java.util.stream.Stream;
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class EventBus {
|
||||
@Getter
|
||||
private static final EventBus insnance = new EventBus();
|
||||
private static final EventBus instance = new EventBus();
|
||||
|
||||
private Queue<Event> eventQueue = new ConcurrentLinkedQueue<>();
|
||||
private Map<Class<? extends Event>, List<Pair<Object, Method>>> subscribes = new HashMap<>();
|
||||
|
||||
@@ -26,21 +26,21 @@ class TestEventBus {
|
||||
@SuppressWarnings("unchecked")
|
||||
private Map<Class<? extends Event>, List<Pair<Object, Method>>> getEventBusFieldSubscribes() {
|
||||
return (Map<Class<? extends Event>, List<Pair<Object, Method>>>)
|
||||
Whitebox.getInternalState(EventBus.getInsnance(), "subscribes");
|
||||
Whitebox.getInternalState(EventBus.getInstance(), "subscribes");
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
@SuppressWarnings("unchecked")
|
||||
void before() {
|
||||
getEventBusFieldSubscribes().clear();
|
||||
((Queue<Event>) Whitebox.getInternalState(EventBus.getInsnance(), "eventQueue")).clear();
|
||||
((Queue<Event>) Whitebox.getInternalState(EventBus.getInstance(), "eventQueue")).clear();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void testRegisterSubscribes() {
|
||||
DumbEventHandler handler = new DumbEventHandler();
|
||||
EventBus.getInsnance().registerSubscribes(handler);
|
||||
EventBus.getInstance().registerSubscribes(handler);
|
||||
|
||||
Map<Class<? extends Event>, List<Pair<Object, Method>>> subscribes = getEventBusFieldSubscribes();
|
||||
assertEquals(1, subscribes.size());
|
||||
@@ -56,9 +56,9 @@ class TestEventBus {
|
||||
@Test
|
||||
void testUnregisterSubscribes() {
|
||||
DumbEventHandler handler = new DumbEventHandler();
|
||||
EventBus.getInsnance().registerSubscribes(handler);
|
||||
EventBus.getInstance().registerSubscribes(handler);
|
||||
|
||||
EventBus.getInsnance().unregisterSubscribes(handler);
|
||||
EventBus.getInstance().unregisterSubscribes(handler);
|
||||
|
||||
Map<Class<? extends Event>, List<Pair<Object, Method>>> subscribes = getEventBusFieldSubscribes();
|
||||
assertEquals(0, subscribes.size());
|
||||
@@ -67,21 +67,21 @@ class TestEventBus {
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
void testPost() {
|
||||
EventBus.getInsnance().post(new DumbEvent());
|
||||
EventBus.getInstance().post(new DumbEvent());
|
||||
|
||||
Queue<Event> eventQueue = (Queue<Event>) Whitebox.getInternalState(EventBus.getInsnance(), "eventQueue");
|
||||
Queue<Event> eventQueue = (Queue<Event>) Whitebox.getInternalState(EventBus.getInstance(), "eventQueue");
|
||||
assertEquals(1, eventQueue.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testProcess() {
|
||||
Stream.of(new DumbEventHandler("D1 "), new DumbEventHandler("D2 "))
|
||||
.forEach(handler -> EventBus.getInsnance().registerSubscribes(handler));
|
||||
.forEach(handler -> EventBus.getInstance().registerSubscribes(handler));
|
||||
|
||||
Stream.of(new DumbEvent("message 1"), new DumbEvent("message 2"))
|
||||
.forEach(event -> EventBus.getInsnance().post(event));
|
||||
.forEach(event -> EventBus.getInstance().post(event));
|
||||
|
||||
EventBus.getInsnance().process();
|
||||
EventBus.getInstance().process();
|
||||
|
||||
assertEquals(4, resultList.size());
|
||||
assertEquals("D1 message 1", resultList.get(0));
|
||||
|
||||
Reference in New Issue
Block a user