From 935c4676165fc2cf8cc938725ff473643acd0077 Mon Sep 17 00:00:00 2001 From: Mike Vink Date: Thu, 29 Jul 2021 12:58:51 +0200 Subject: feat(): battle start handshake part finished --- api/src/main/java/akkamon/api/MessagingEngine.java | 44 ++++++++++++++++++++++ api/src/main/java/akkamon/api/models/Event.java | 2 + .../main/java/akkamon/api/models/EventType.java | 8 +++- .../akkamon/api/models/InteractionRequest.java | 1 - .../akkamon/api/models/InteractionStartEvent.java | 14 +++++++ 5 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 api/src/main/java/akkamon/api/models/InteractionStartEvent.java (limited to 'api/src') 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 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 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 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; + } +} -- cgit v1.2.3