summaryrefslogtreecommitdiff
path: root/api/src
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2021-07-29 12:58:51 +0200
committerMike Vink <mike1994vink@gmail.com>2021-07-29 12:58:51 +0200
commit935c4676165fc2cf8cc938725ff473643acd0077 (patch)
treeef04d21c3f124849dff4f412fc181565d6651f0e /api/src
parent4a354cd7a4edb203dd5e66355dbed0e62994e09b (diff)
feat(): battle start handshake part finished
Diffstat (limited to 'api/src')
-rw-r--r--api/src/main/java/akkamon/api/MessagingEngine.java44
-rw-r--r--api/src/main/java/akkamon/api/models/Event.java2
-rw-r--r--api/src/main/java/akkamon/api/models/EventType.java8
-rw-r--r--api/src/main/java/akkamon/api/models/InteractionRequest.java1
-rw-r--r--api/src/main/java/akkamon/api/models/InteractionStartEvent.java14
5 files changed, 67 insertions, 2 deletions
diff --git a/api/src/main/java/akkamon/api/MessagingEngine.java b/api/src/main/java/akkamon/api/MessagingEngine.java
index c315a0b..957ad6e 100644
--- a/api/src/main/java/akkamon/api/MessagingEngine.java
+++ b/api/src/main/java/akkamon/api/MessagingEngine.java
@@ -83,6 +83,8 @@ public class MessagingEngine implements AkkamonMessageEngine {
}
+
+
@Override
public void registerTrainerSessionToSceneAndTrainerIdMaps(String sceneId, AkkamonSession session) {
System.out.println("Registering session to scene " + sceneId);
@@ -130,12 +132,45 @@ public class MessagingEngine implements AkkamonMessageEngine {
));
}
+ @Override
+ public void removeInteractionHandshaker(String requestName) {
+ this.pendingInteractioRequestToHandshaker.remove(requestName);
+ }
+
+ @Override
+ public void broadCastInteractionStart(String requestName, String interactionType, Set<String> waitingToStartInteraction) {
+ for (String trainerId : waitingToStartInteraction) {
+ AkkamonSession session = trainerIdToAkkamonSessions.get(trainerId);
+ session.send(gson.toJson(
+ new InteractionStartEvent(
+ requestName,
+ interactionType
+ )
+ ));
+ }
+
+ }
+
+ @Override
+ public void broadCastHandshakeFail(String requestName, Set<String> waitingToStartInteraction) {
+ System.out.println("Handshake fail not implemented yet!");
+ }
+
void incoming(AkkamonSession session, String message) {
Event event = gson.fromJson(message, Event.class);
+ if (event == null) {
+ System.out.println("Received non-supported message DTO.");
+ return;
+ }
// TODO use session trainerId
String sceneId = "DemoScene";
+
switch (event.type) {
+ case INTERACTION_REPLY:
+ System.out.println("received interaction reply!");
+ sendToHandshaker(event.requestName, event.trainerId, event.sceneId, event.value);
+ break;
case INTERACTION_REQUEST:
System.out.println("received interaction request");
System.out.println(event.interaction);
@@ -195,6 +230,15 @@ public class MessagingEngine implements AkkamonMessageEngine {
}
+ private void sendToHandshaker(String requestName, String trainerId, String sceneId, boolean value) {
+ ActorRef<InteractionHandshaker.Command> handshaker = pendingInteractioRequestToHandshaker.get(requestName);
+ if (handshaker != null) {
+ handshaker.tell(
+ new InteractionHandshaker.InteractionReply(requestName, trainerId, sceneId, value)
+ );
+ }
+ }
+
private void updatePositions() {
}
diff --git a/api/src/main/java/akkamon/api/models/Event.java b/api/src/main/java/akkamon/api/models/Event.java
index 646e671..4743453 100644
--- a/api/src/main/java/akkamon/api/models/Event.java
+++ b/api/src/main/java/akkamon/api/models/Event.java
@@ -10,4 +10,6 @@ public class Event {
public String sceneId;
public TilePos tilePos;
public Interaction interaction;
+ public String requestName;
+ public boolean value;
}
diff --git a/api/src/main/java/akkamon/api/models/EventType.java b/api/src/main/java/akkamon/api/models/EventType.java
index 610bd62..610318f 100644
--- a/api/src/main/java/akkamon/api/models/EventType.java
+++ b/api/src/main/java/akkamon/api/models/EventType.java
@@ -25,6 +25,12 @@ public enum EventType {
SOCKET_CLOSED,
@SerializedName("InteractionRequestEvent")
- INTERACTION_REQUEST
+ INTERACTION_REQUEST,
+
+ @SerializedName("InteractionReplyEvent")
+ INTERACTION_REPLY,
+
+ @SerializedName("InteractionStarting")
+ INTERACTION_START
}
diff --git a/api/src/main/java/akkamon/api/models/InteractionRequest.java b/api/src/main/java/akkamon/api/models/InteractionRequest.java
index 601f846..ae91972 100644
--- a/api/src/main/java/akkamon/api/models/InteractionRequest.java
+++ b/api/src/main/java/akkamon/api/models/InteractionRequest.java
@@ -3,7 +3,6 @@ package akkamon.api.models;
public class InteractionRequest extends Event {
public String interactionType;
- public String requestName;
public InteractionRequest(String interactionType, String trainerId, String requestName) {
this.type = EventType.INTERACTION_REQUEST;
diff --git a/api/src/main/java/akkamon/api/models/InteractionStartEvent.java b/api/src/main/java/akkamon/api/models/InteractionStartEvent.java
new file mode 100644
index 0000000..ce00437
--- /dev/null
+++ b/api/src/main/java/akkamon/api/models/InteractionStartEvent.java
@@ -0,0 +1,14 @@
+package akkamon.api.models;
+
+import com.google.gson.JsonElement;
+
+public class InteractionStartEvent extends Event {
+
+ public String interactionType;
+
+ public InteractionStartEvent(String requestName, String interactionType) {
+ this.type = EventType.INTERACTION_START;
+ this.requestName = requestName;
+ this.interactionType = interactionType;
+ }
+}