summaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2021-07-22 17:46:45 +0200
committerMike Vink <mike1994vink@gmail.com>2021-07-22 17:46:45 +0200
commita4f04b78b15f13985da568e0189e2bad3269b1a5 (patch)
treed6083e4e670d783de6f9795cd505f614df0549c8 /api
parent5d76a30aeba5bfd175b60845c4935c4352b46f4c (diff)
feat(remotePlayerEngine): render remote players!
Diffstat (limited to 'api')
-rw-r--r--api/src/main/java/akkamon/api/EventSocket.java1
-rw-r--r--api/src/main/java/akkamon/api/MessagingEngine.java23
-rw-r--r--api/src/main/java/akkamon/api/models/EventType.java2
-rw-r--r--api/src/main/java/akkamon/api/models/HeartBeatEvent.java6
-rw-r--r--api/src/main/java/akkamon/api/models/SocketClosedEvent.java8
5 files changed, 33 insertions, 7 deletions
diff --git a/api/src/main/java/akkamon/api/EventSocket.java b/api/src/main/java/akkamon/api/EventSocket.java
index f800ab3..77950ed 100644
--- a/api/src/main/java/akkamon/api/EventSocket.java
+++ b/api/src/main/java/akkamon/api/EventSocket.java
@@ -33,6 +33,7 @@ public class EventSocket extends WebSocketAdapter implements AkkamonSession {
super.onWebSocketClose(statusCode, reason);
System.out.println("Socket Closed: [" + statusCode + "] " + reason);
closureLatch.countDown();
+ App.messagingEngine.trainerDisconnected(this);
}
@Override
diff --git a/api/src/main/java/akkamon/api/MessagingEngine.java b/api/src/main/java/akkamon/api/MessagingEngine.java
index dc22752..3d3cd96 100644
--- a/api/src/main/java/akkamon/api/MessagingEngine.java
+++ b/api/src/main/java/akkamon/api/MessagingEngine.java
@@ -42,13 +42,13 @@ public class MessagingEngine implements AkkamonMessageEngine {
@Override
public void broadCastHeartBeatToScene(String sceneId,
- Map<String, AkkamonNexus.TrainerPositionReading> trainerPositions) {
+ Map<String, AkkamonNexus.MovementQueueReading> trainerPositions) {
Set<AkkamonSession> sceneSessions = sceneIdToAkkamonSessions.get(sceneId);
System.out.println(sceneSessions);
System.out.println(sceneIdToAkkamonSessions.keySet());
if (sceneSessions != null) {
for (AkkamonSession session : sceneSessions) {
- Map<String, AkkamonNexus.TrainerPositionReading> withoutSelf = new HashMap<>(trainerPositions);
+ Map<String, AkkamonNexus.MovementQueueReading> withoutSelf = new HashMap<>(trainerPositions);
withoutSelf.remove(session.getTrainerId());
HeartBeatEvent heartBeat = new HeartBeatEvent(
withoutSelf
@@ -82,7 +82,23 @@ public class MessagingEngine implements AkkamonMessageEngine {
@Override
public void removeTrainerSessionFromScene(String sceneId, AkkamonSession session) {
+ this.sceneIdToAkkamonSessions.get(sceneId).remove(session);
+ }
+
+ @Override
+ public void trainerDisconnected(AkkamonSession session) {
+ String sceneId = null;
+ for (Map.Entry<String, Set<AkkamonSession>> entry : this.sceneIdToAkkamonSessions.entrySet()) {
+ if (entry.getValue().contains(session)) sceneId = entry.getKey();
+ }
+ system.tell(new AkkamonNexus.RequestTrainerOffline(
+ UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE,
+ session.getTrainerId(),
+ sceneId,
+ session,
+ system
+ ));
}
void incoming(AkkamonSession session, String message) {
@@ -123,7 +139,7 @@ public class MessagingEngine implements AkkamonMessageEngine {
);
break;
case TRAINER_REGISTRATION:
- String trainerId = String.valueOf(sceneIdToAkkamonSessions.size());
+ String trainerId = String.valueOf(sceneIdToAkkamonSessions.get(sceneId) == null ? 0 : sceneIdToAkkamonSessions.get(sceneId).size() + 1);
system.tell(new AkkamonNexus.RequestTrainerRegistration(
trainerId,
sceneId,
@@ -141,5 +157,4 @@ public class MessagingEngine implements AkkamonMessageEngine {
private void updatePositions() {
}
-
}
diff --git a/api/src/main/java/akkamon/api/models/EventType.java b/api/src/main/java/akkamon/api/models/EventType.java
index be3b2b3..cb10cee 100644
--- a/api/src/main/java/akkamon/api/models/EventType.java
+++ b/api/src/main/java/akkamon/api/models/EventType.java
@@ -18,5 +18,7 @@ public enum EventType {
@SerializedName("StopMoving")
STOP_MOVING,
+ @SerializedName("SocketClosed")
+ SOCKET_CLOSED,
}
diff --git a/api/src/main/java/akkamon/api/models/HeartBeatEvent.java b/api/src/main/java/akkamon/api/models/HeartBeatEvent.java
index 8db514b..b795feb 100644
--- a/api/src/main/java/akkamon/api/models/HeartBeatEvent.java
+++ b/api/src/main/java/akkamon/api/models/HeartBeatEvent.java
@@ -5,10 +5,10 @@ import akkamon.domain.AkkamonNexus;
import java.util.Map;
public class HeartBeatEvent extends Event {
- public Map<String, AkkamonNexus.TrainerPositionReading> remoteTrainerPositions;
+ public Map<String, AkkamonNexus.MovementQueueReading> remoteMovementQueues;
- public HeartBeatEvent(Map<String, AkkamonNexus.TrainerPositionReading> remoteTrainerPositions) {
+ public HeartBeatEvent(Map<String, AkkamonNexus.MovementQueueReading> remoteMovementQueues) {
this.type = EventType.HEART_BEAT;
- this.remoteTrainerPositions = remoteTrainerPositions;
+ this.remoteMovementQueues = remoteMovementQueues;
}
}
diff --git a/api/src/main/java/akkamon/api/models/SocketClosedEvent.java b/api/src/main/java/akkamon/api/models/SocketClosedEvent.java
new file mode 100644
index 0000000..1f8a2a0
--- /dev/null
+++ b/api/src/main/java/akkamon/api/models/SocketClosedEvent.java
@@ -0,0 +1,8 @@
+package akkamon.api.models;
+
+public class SocketClosedEvent extends Event {
+
+ public SocketClosedEvent() {
+ this.type = EventType.SOCKET_CLOSED;
+ }
+}