attempt to implement an event model of Player movement
This commit is contained in:
@@ -4,8 +4,12 @@
|
||||
*/
|
||||
package mc.core;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.events.EventBusGetter;
|
||||
import mc.core.events.CS_PlayerMoveEvent;
|
||||
import mc.core.events.SC_PlayerMoveEvent;
|
||||
import mc.core.player.PlayerManager;
|
||||
import mc.core.time.TimeProcessor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -38,10 +42,22 @@ public class GameLoop extends Thread {
|
||||
TPS_WATCHER.setTraceTPS(value);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void playerMoveEventHandler(CS_PlayerMoveEvent event) {
|
||||
log.trace("(GameLoop) playerMoveEventHandler()");
|
||||
event.getPlayer().getLocation().setXYZ(event.getNewLocation());
|
||||
|
||||
SC_PlayerMoveEvent nextEvent = new SC_PlayerMoveEvent(event.getPlayer());
|
||||
nextEvent.setNewLocation(event.getNewLocation());
|
||||
EventBusGetter.INSTANCE.post(nextEvent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
TPS_WATCHER.startWatch();
|
||||
|
||||
EventBusGetter.INSTANCE.register(this);
|
||||
|
||||
while (!isInterrupted()) {
|
||||
TPS_WATCHER.check();
|
||||
|
||||
|
||||
22
core/src/main/java/mc/core/events/CS_PlayerMoveEvent.java
Normal file
22
core/src/main/java/mc/core/events/CS_PlayerMoveEvent.java
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2018-05-02
|
||||
*/
|
||||
package mc.core.events;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import mc.core.EntityLocation;
|
||||
import mc.core.Location;
|
||||
import mc.core.player.Player;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Getter
|
||||
public class CS_PlayerMoveEvent extends EventBase {
|
||||
private final Player player;
|
||||
private final EntityLocation oldLocation; // TODO сомнительное решение
|
||||
// вообще нужно будет создать реализацию "иммутабл локейшен" для подобных ситуаций
|
||||
@Setter
|
||||
private EntityLocation newLocation;
|
||||
}
|
||||
@@ -1,19 +1,15 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2018-05-02
|
||||
*/
|
||||
package mc.core.events;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import mc.core.Location;
|
||||
import mc.core.EntityLocation;
|
||||
import mc.core.player.Player;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Getter
|
||||
@Setter
|
||||
public class PlayerPositionEvent extends EventBase {
|
||||
public class SC_PlayerMoveEvent extends EventBase {
|
||||
private final Player player;
|
||||
private Location newPosition;
|
||||
@Setter
|
||||
private EntityLocation newLocation;
|
||||
}
|
||||
Reference in New Issue
Block a user