From 4852e6c08a0dd759a60b34b0d03c1f1eedc23805 Mon Sep 17 00:00:00 2001 From: Mike Vink Date: Tue, 3 Aug 2021 19:06:15 +0200 Subject: feat(battle): to-trip fightrequest --- api/src/main/java/akkamon/api/MessagingEngine.java | 27 ++++++++++++++++++++-- .../java/akkamon/api/models/BattleInitEvent.java | 20 ---------------- .../java/akkamon/api/models/BattleRequestBody.java | 5 ---- api/src/main/java/akkamon/api/models/Event.java | 21 ++++++++++++++--- .../main/java/akkamon/api/models/EventType.java | 7 ++++-- .../java/akkamon/api/models/HeartBeatEvent.java | 14 ----------- .../akkamon/api/models/InteractionStartEvent.java | 14 ----------- .../api/models/OutgoingInteractionRequest.java | 15 ------------ .../akkamon/api/models/battle/BattleInitEvent.java | 22 ++++++++++++++++++ .../api/models/outgoing/HeartBeatEvent.java | 16 +++++++++++++ .../api/models/outgoing/InteractionStartEvent.java | 16 +++++++++++++ .../outgoing/OutgoingInteractionRequest.java | 17 ++++++++++++++ 12 files changed, 119 insertions(+), 75 deletions(-) delete mode 100644 api/src/main/java/akkamon/api/models/BattleInitEvent.java delete mode 100644 api/src/main/java/akkamon/api/models/BattleRequestBody.java delete mode 100644 api/src/main/java/akkamon/api/models/HeartBeatEvent.java delete mode 100644 api/src/main/java/akkamon/api/models/InteractionStartEvent.java delete mode 100644 api/src/main/java/akkamon/api/models/OutgoingInteractionRequest.java create mode 100644 api/src/main/java/akkamon/api/models/battle/BattleInitEvent.java create mode 100644 api/src/main/java/akkamon/api/models/outgoing/HeartBeatEvent.java create mode 100644 api/src/main/java/akkamon/api/models/outgoing/InteractionStartEvent.java create mode 100644 api/src/main/java/akkamon/api/models/outgoing/OutgoingInteractionRequest.java (limited to 'api/src/main/java') diff --git a/api/src/main/java/akkamon/api/MessagingEngine.java b/api/src/main/java/akkamon/api/MessagingEngine.java index aa559d0..0ac07fd 100644 --- a/api/src/main/java/akkamon/api/MessagingEngine.java +++ b/api/src/main/java/akkamon/api/MessagingEngine.java @@ -3,12 +3,19 @@ package akkamon.api; import akka.actor.typed.ActorRef; import akka.actor.typed.ActorSystem; import akkamon.api.models.*; +import akkamon.api.models.battle.BattleInitEvent; +import akkamon.api.models.outgoing.HeartBeatEvent; +import akkamon.api.models.outgoing.InteractionStartEvent; +import akkamon.api.models.outgoing.OutgoingInteractionRequest; import akkamon.domain.AkkamonMessageEngine; import akkamon.domain.actors.AkkamonBattle; import akkamon.domain.actors.AkkamonNexus; import akkamon.domain.AkkamonSession; -import akkamon.domain.InteractionHandshaker; +import akkamon.domain.actors.tasks.interactions.InteractionHandshaker; +import akkamon.domain.model.akkamon.Mon; +import akkamon.domain.model.battle.requests.JsonToMove; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import java.util.*; import java.util.concurrent.ScheduledThreadPoolExecutor; @@ -23,7 +30,9 @@ public class MessagingEngine implements AkkamonMessageEngine { private Map trainerIDToAkkamonSessions = new HashMap<>(); private Map> pendingInteractioRequestToHandshaker = new HashMap<>(); - private Gson gson = new Gson(); + private final Gson gson = new GsonBuilder() + .registerTypeAdapter(Mon.Move.class, new JsonToMove()) + .create(); public MessagingEngine() { this.nexus = ActorSystem.create(AkkamonNexus.create(this), "akkamon-system"); @@ -198,7 +207,13 @@ public class MessagingEngine implements AkkamonMessageEngine { } } + @Override + public void removeTrainerSessionFromHeartBeat(AkkamonNexus.TrainerID trainerID, AkkamonSession session) { + trainerIDToAkkamonSessions.remove(trainerID); + } + void incoming(AkkamonSession session, String message) { + // System.out.println(message); Event event = gson.fromJson(message, Event.class); if (event == null) { System.out.println("Received non-supported message DTO."); @@ -263,6 +278,14 @@ public class MessagingEngine implements AkkamonMessageEngine { nexus )); break; + case BATTLE_ACTION_REQUEST: + nexus.tell( + new AkkamonBattle.RequestAction( + event.trainerID, + event.body + ) + ); + break; case HEART_BEAT: //System.out.println("My <3 beats!"); break; diff --git a/api/src/main/java/akkamon/api/models/BattleInitEvent.java b/api/src/main/java/akkamon/api/models/BattleInitEvent.java deleted file mode 100644 index c0f2fbe..0000000 --- a/api/src/main/java/akkamon/api/models/BattleInitEvent.java +++ /dev/null @@ -1,20 +0,0 @@ -package akkamon.api.models; - -import akkamon.domain.actors.AkkamonNexus; -import akkamon.domain.model.battle.BattleMessage; -import akkamon.domain.model.battle.state.BattleState; - -import java.util.ArrayList; -import java.util.Map; - -public class BattleInitEvent extends Event { - - public ArrayList participants; - public BattleMessage message; - - public BattleInitEvent(ArrayList participants, BattleMessage introductionMessage) { - this.type = EventType.BATTLE_INIT; - this.participants = participants; - this.message = introductionMessage; - } -} diff --git a/api/src/main/java/akkamon/api/models/BattleRequestBody.java b/api/src/main/java/akkamon/api/models/BattleRequestBody.java deleted file mode 100644 index 2a1a423..0000000 --- a/api/src/main/java/akkamon/api/models/BattleRequestBody.java +++ /dev/null @@ -1,5 +0,0 @@ -package akkamon.api.models; - -public class BattleRequestBody { - public -} diff --git a/api/src/main/java/akkamon/api/models/Event.java b/api/src/main/java/akkamon/api/models/Event.java index 7ee3ee1..1c9dcc4 100644 --- a/api/src/main/java/akkamon/api/models/Event.java +++ b/api/src/main/java/akkamon/api/models/Event.java @@ -1,8 +1,9 @@ package akkamon.api.models; +import akkamon.domain.model.battle.requests.BattleRequestBody; import akkamon.domain.actors.AkkamonNexus; -import akkamon.domain.Direction; -import akkamon.domain.TilePos; +import akkamon.domain.actors.tasks.heartbeat.Direction; +import akkamon.domain.actors.tasks.heartbeat.TilePos; public class Event { public EventType type; @@ -12,5 +13,19 @@ public class Event { public Interaction interaction; public String requestName; public boolean value; - public BattleRequestBody battleRequestBody; + public BattleRequestBody body; + + @Override + public String toString() { + return "Event{" + + "type=" + type + + ", trainerID=" + trainerID + + ", direction=" + direction + + ", tilePos=" + tilePos + + ", interaction=" + interaction + + ", requestName='" + requestName + '\'' + + ", value=" + value + + ", body=" + body + + '}'; + } } diff --git a/api/src/main/java/akkamon/api/models/EventType.java b/api/src/main/java/akkamon/api/models/EventType.java index 497da49..295eb4c 100644 --- a/api/src/main/java/akkamon/api/models/EventType.java +++ b/api/src/main/java/akkamon/api/models/EventType.java @@ -30,10 +30,13 @@ public enum EventType { @SerializedName("InteractionReplyEvent") INTERACTION_REPLY, + @SerializedName("InteractionStarting") + INTERACTION_START, + @SerializedName("BattleInitEvent") BATTLE_INIT, - @SerializedName("InteractionStarting") - INTERACTION_START + @SerializedName("BattleActionRequest") + BATTLE_ACTION_REQUEST, } diff --git a/api/src/main/java/akkamon/api/models/HeartBeatEvent.java b/api/src/main/java/akkamon/api/models/HeartBeatEvent.java deleted file mode 100644 index 2ec98ad..0000000 --- a/api/src/main/java/akkamon/api/models/HeartBeatEvent.java +++ /dev/null @@ -1,14 +0,0 @@ -package akkamon.api.models; - -import akkamon.domain.actors.AkkamonNexus; - -import java.util.Map; - -public class HeartBeatEvent extends Event { - public Map remoteMovementQueues; - - public HeartBeatEvent(Map remoteMovementQueues) { - this.type = EventType.HEART_BEAT; - this.remoteMovementQueues = remoteMovementQueues; - } -} diff --git a/api/src/main/java/akkamon/api/models/InteractionStartEvent.java b/api/src/main/java/akkamon/api/models/InteractionStartEvent.java deleted file mode 100644 index ce00437..0000000 --- a/api/src/main/java/akkamon/api/models/InteractionStartEvent.java +++ /dev/null @@ -1,14 +0,0 @@ -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; - } -} diff --git a/api/src/main/java/akkamon/api/models/OutgoingInteractionRequest.java b/api/src/main/java/akkamon/api/models/OutgoingInteractionRequest.java deleted file mode 100644 index 9360384..0000000 --- a/api/src/main/java/akkamon/api/models/OutgoingInteractionRequest.java +++ /dev/null @@ -1,15 +0,0 @@ -package akkamon.api.models; - -import akkamon.domain.actors.AkkamonNexus; - -public class OutgoingInteractionRequest extends Event { - - public String interactionType; - - public OutgoingInteractionRequest(String interactionType, AkkamonNexus.TrainerID trainerID, String requestName) { - this.type = EventType.INTERACTION_REQUEST; - this.interactionType = interactionType; - this.trainerID = trainerID; - this.requestName = requestName; - } -} diff --git a/api/src/main/java/akkamon/api/models/battle/BattleInitEvent.java b/api/src/main/java/akkamon/api/models/battle/BattleInitEvent.java new file mode 100644 index 0000000..2755155 --- /dev/null +++ b/api/src/main/java/akkamon/api/models/battle/BattleInitEvent.java @@ -0,0 +1,22 @@ +package akkamon.api.models.battle; + +import akkamon.api.models.Event; +import akkamon.api.models.EventType; +import akkamon.domain.actors.AkkamonNexus; +import akkamon.domain.model.battle.BattleMessage; +import akkamon.domain.model.battle.state.BattleState; + +import java.util.ArrayList; +import java.util.Map; + +public class BattleInitEvent extends Event { + + public ArrayList participants; + public BattleMessage message; + + public BattleInitEvent(ArrayList participants, BattleMessage introductionMessage) { + this.type = EventType.BATTLE_INIT; + this.participants = participants; + this.message = introductionMessage; + } +} diff --git a/api/src/main/java/akkamon/api/models/outgoing/HeartBeatEvent.java b/api/src/main/java/akkamon/api/models/outgoing/HeartBeatEvent.java new file mode 100644 index 0000000..24cf357 --- /dev/null +++ b/api/src/main/java/akkamon/api/models/outgoing/HeartBeatEvent.java @@ -0,0 +1,16 @@ +package akkamon.api.models.outgoing; + +import akkamon.api.models.Event; +import akkamon.api.models.EventType; +import akkamon.domain.actors.AkkamonNexus; + +import java.util.Map; + +public class HeartBeatEvent extends Event { + public Map remoteMovementQueues; + + public HeartBeatEvent(Map remoteMovementQueues) { + this.type = EventType.HEART_BEAT; + this.remoteMovementQueues = remoteMovementQueues; + } +} diff --git a/api/src/main/java/akkamon/api/models/outgoing/InteractionStartEvent.java b/api/src/main/java/akkamon/api/models/outgoing/InteractionStartEvent.java new file mode 100644 index 0000000..acb6365 --- /dev/null +++ b/api/src/main/java/akkamon/api/models/outgoing/InteractionStartEvent.java @@ -0,0 +1,16 @@ +package akkamon.api.models.outgoing; + +import akkamon.api.models.Event; +import akkamon.api.models.EventType; +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; + } +} diff --git a/api/src/main/java/akkamon/api/models/outgoing/OutgoingInteractionRequest.java b/api/src/main/java/akkamon/api/models/outgoing/OutgoingInteractionRequest.java new file mode 100644 index 0000000..4a9d021 --- /dev/null +++ b/api/src/main/java/akkamon/api/models/outgoing/OutgoingInteractionRequest.java @@ -0,0 +1,17 @@ +package akkamon.api.models.outgoing; + +import akkamon.api.models.Event; +import akkamon.api.models.EventType; +import akkamon.domain.actors.AkkamonNexus; + +public class OutgoingInteractionRequest extends Event { + + public String interactionType; + + public OutgoingInteractionRequest(String interactionType, AkkamonNexus.TrainerID trainerID, String requestName) { + this.type = EventType.INTERACTION_REQUEST; + this.interactionType = interactionType; + this.trainerID = trainerID; + this.requestName = requestName; + } +} -- cgit v1.2.3