diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2021-07-29 12:58:51 +0200 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2021-07-29 12:58:51 +0200 |
| commit | 935c4676165fc2cf8cc938725ff473643acd0077 (patch) | |
| tree | ef04d21c3f124849dff4f412fc181565d6651f0e /api/src | |
| parent | 4a354cd7a4edb203dd5e66355dbed0e62994e09b (diff) | |
feat(): battle start handshake part finished
Diffstat (limited to 'api/src')
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; + } +} |
