From 56f1e15056459abc12d56723dec73f78d00c4cd5 Mon Sep 17 00:00:00 2001 From: vahid Date: Mon, 2 Sep 2019 23:43:30 +0430 Subject: [PATCH] changes from HP --- src/ai/AI.java | 3 +- src/team/koala/chillin/client/AbstractAI.java | 1 - src/team/koala/chillin/client/BaseAI.java | 40 ++++++++++++++----- src/team/koala/chillin/client/Core.java | 1 - src/team/koala/chillin/client/KSObject.java | 31 ++++++++++++++ src/team/koala/chillin/client/Protocol.java | 1 - src/team/koala/chillin/client/RealtimeAI.java | 7 ++-- .../koala/chillin/client/TurnbasedAI.java | 7 ++-- .../client/helper/messages/AgentJoined.java | 4 +- .../client/helper/messages/AgentLeft.java | 4 +- .../client/helper/messages/BaseCommand.java | 2 +- .../client/helper/messages/BaseSnapshot.java | 4 +- .../client/helper/messages/ClientJoined.java | 4 +- .../client/helper/messages/EndGame.java | 4 +- .../helper/messages/JoinOfflineGame.java | 4 +- .../helper/messages/JoinOnlineGame.java | 4 +- .../client/helper/messages/Message.java | 4 +- .../client/helper/messages/StartGame.java | 5 +-- .../client/helper/parser/MessageFactory.java | 2 +- .../chillin/client/helper/parser/Parser.java | 2 +- 20 files changed, 90 insertions(+), 44 deletions(-) create mode 100644 src/team/koala/chillin/client/KSObject.java diff --git a/src/ai/AI.java b/src/ai/AI.java index 7cf895f..492c5fe 100644 --- a/src/ai/AI.java +++ b/src/ai/AI.java @@ -1,11 +1,12 @@ package ai; import team.koala.chillin.client.TurnbasedAI; +import ks.KSObject; import ks.models.*; import ks.commands.*; -public class AI extends TurnbasedAI { +public class AI extends TurnbasedAI { public AI(World world) { super(world); diff --git a/src/team/koala/chillin/client/AbstractAI.java b/src/team/koala/chillin/client/AbstractAI.java index 11a394e..d3028b1 100644 --- a/src/team/koala/chillin/client/AbstractAI.java +++ b/src/team/koala/chillin/client/AbstractAI.java @@ -1,7 +1,6 @@ package team.koala.chillin.client; import team.koala.chillin.client.helper.messages.BaseSnapshot; -import ks.KSObject; import java.util.*; diff --git a/src/team/koala/chillin/client/BaseAI.java b/src/team/koala/chillin/client/BaseAI.java index e368b81..37d00b1 100644 --- a/src/team/koala/chillin/client/BaseAI.java +++ b/src/team/koala/chillin/client/BaseAI.java @@ -4,21 +4,27 @@ import team.koala.chillin.client.helper.messages.BaseSnapshot; import team.koala.chillin.client.helper.parser.Parser; -import ks.KSObject; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; -public class BaseAI extends AbstractAI { +public class BaseAI extends AbstractAI { - protected T world; + protected TWorld world; - BaseAI(T world) { + BaseAI(TWorld world) { this.world = world; } @Override public void update(BaseSnapshot snapshot) { - this.world.deserialize(Parser.getBytes(snapshot.getWorldPayload())); + // Deserialize world + try { + Method method = this.world.getClass().getMethod("deserialize", byte[].class); + method.invoke(this.world, Parser.getBytes(snapshot.getWorldPayload())); + } catch (NoSuchMethodException | SecurityException | IllegalAccessException | + IllegalArgumentException | InvocationTargetException e) {} } @Override @@ -27,23 +33,37 @@ public boolean allowedToDecide() { } - protected void _sendCommand(KSObject command, BaseCommand msg) { + protected void _sendCommand(TCommand command, BaseCommand msg) { BaseCommand message; if (msg == null) message = new BaseCommand(); else message = (BaseCommand) msg; - message.setType(command.name()); - message.setPayload(Parser.getString(command.serialize())); + // Store command's name + try { + Method method = command.getClass().getMethod("name"); + String name = (String) method.invoke(command); + message.setType(name); + } catch (NoSuchMethodException | SecurityException | IllegalAccessException | + IllegalArgumentException | InvocationTargetException e) {} + + // Store command's serialization data + try { + Method method = command.getClass().getMethod("serialize"); + byte[] data = (byte[]) method.invoke(command); + message.setPayload(Parser.getString(data)); + } catch (NoSuchMethodException | SecurityException | IllegalAccessException | + IllegalArgumentException | InvocationTargetException e) {} + commandSendQueue.add(message); } - protected void _sendCommand(KSObject command) { + protected void _sendCommand(TCommand command) { _sendCommand(command, null); } - public void sendCommand(KSObject command) { + public void sendCommand(TCommand command) { if (allowedToDecide()) _sendCommand(command); } diff --git a/src/team/koala/chillin/client/Core.java b/src/team/koala/chillin/client/Core.java index 8d0a9d9..1413bf2 100644 --- a/src/team/koala/chillin/client/Core.java +++ b/src/team/koala/chillin/client/Core.java @@ -2,7 +2,6 @@ import team.koala.chillin.client.helper.logger.Logger; import team.koala.chillin.client.helper.messages.*; -import ks.KSObject; import java.util.Queue; import java.util.concurrent.LinkedBlockingQueue; diff --git a/src/team/koala/chillin/client/KSObject.java b/src/team/koala/chillin/client/KSObject.java new file mode 100644 index 0000000..e0ac156 --- /dev/null +++ b/src/team/koala/chillin/client/KSObject.java @@ -0,0 +1,31 @@ +package team.koala.chillin.client; + +import java.lang.*; +import java.util.*; + + +public abstract class KSObject +{ + public static final String nameStatic = ""; + public abstract String name(); + public abstract byte[] serialize(); + public int deserialize(byte[] s) { return deserialize(s, 0); } + protected abstract int deserialize(byte[] s, int offset); + + + protected static List b2B(byte[] bytes) + { + List result = new ArrayList<>(); + for (byte b : bytes) + result.add(b); + return result; + } + + protected static byte[] B2b(List bytes) + { + byte[] result = new byte[bytes.size()]; + for(int i = 0; i < result.length; i++) + result[i] = bytes.get(i); + return result; + } +} diff --git a/src/team/koala/chillin/client/Protocol.java b/src/team/koala/chillin/client/Protocol.java index 81c7acd..49e30c2 100644 --- a/src/team/koala/chillin/client/Protocol.java +++ b/src/team/koala/chillin/client/Protocol.java @@ -1,6 +1,5 @@ package team.koala.chillin.client; -import ks.KSObject; import team.koala.chillin.client.helper.parser.Parser; diff --git a/src/team/koala/chillin/client/RealtimeAI.java b/src/team/koala/chillin/client/RealtimeAI.java index 396d30f..0a450da 100644 --- a/src/team/koala/chillin/client/RealtimeAI.java +++ b/src/team/koala/chillin/client/RealtimeAI.java @@ -4,16 +4,15 @@ import team.koala.chillin.client.helper.messages.BaseSnapshot; import team.koala.chillin.client.helper.messages.RealtimeCommand; import team.koala.chillin.client.helper.messages.RealtimeSnapshot; -import ks.KSObject; -public class RealtimeAI extends BaseAI { +public class RealtimeAI extends BaseAI { protected Integer currentCycle; protected Float cycleDuration; - public RealtimeAI(T world) { + public RealtimeAI(TWorld world) { super(world); } @@ -31,7 +30,7 @@ public boolean allowedToDecide() { } @Override - protected void _sendCommand(KSObject command, BaseCommand msg) { + protected void _sendCommand(TCommand command, BaseCommand msg) { RealtimeCommand message; if (msg == null) message = new RealtimeCommand(); diff --git a/src/team/koala/chillin/client/TurnbasedAI.java b/src/team/koala/chillin/client/TurnbasedAI.java index 8169a44..1b8fa34 100644 --- a/src/team/koala/chillin/client/TurnbasedAI.java +++ b/src/team/koala/chillin/client/TurnbasedAI.java @@ -4,18 +4,17 @@ import team.koala.chillin.client.helper.messages.BaseSnapshot; import team.koala.chillin.client.helper.messages.TurnbasedCommand; import team.koala.chillin.client.helper.messages.TurnbasedSnapshot; -import ks.KSObject; import java.util.ArrayList; import java.util.List; -public class TurnbasedAI extends RealtimeAI { +public class TurnbasedAI extends RealtimeAI { protected List turnAllowedSides; - public TurnbasedAI(T world) { + public TurnbasedAI(TWorld world) { super(world); turnAllowedSides = new ArrayList<>(); } @@ -34,7 +33,7 @@ public boolean allowedToDecide() { } @Override - public void _sendCommand(KSObject command, BaseCommand msg) { + public void _sendCommand(TCommand command, BaseCommand msg) { TurnbasedCommand message; if (msg == null) message = new TurnbasedCommand(); diff --git a/src/team/koala/chillin/client/helper/messages/AgentJoined.java b/src/team/koala/chillin/client/helper/messages/AgentJoined.java index bc1a5be..4a88373 100644 --- a/src/team/koala/chillin/client/helper/messages/AgentJoined.java +++ b/src/team/koala/chillin/client/helper/messages/AgentJoined.java @@ -1,12 +1,12 @@ package team.koala.chillin.client.helper.messages; +import team.koala.chillin.client.KSObject; + import java.lang.*; import java.util.*; import java.nio.*; import java.nio.charset.Charset; -import ks.KSObject; - public class AgentJoined extends KSObject { protected String sideName; diff --git a/src/team/koala/chillin/client/helper/messages/AgentLeft.java b/src/team/koala/chillin/client/helper/messages/AgentLeft.java index 2369f10..c00390d 100644 --- a/src/team/koala/chillin/client/helper/messages/AgentLeft.java +++ b/src/team/koala/chillin/client/helper/messages/AgentLeft.java @@ -1,12 +1,12 @@ package team.koala.chillin.client.helper.messages; +import team.koala.chillin.client.KSObject; + import java.lang.*; import java.util.*; import java.nio.*; import java.nio.charset.Charset; -import ks.KSObject; - public class AgentLeft extends KSObject { protected String sideName; diff --git a/src/team/koala/chillin/client/helper/messages/BaseCommand.java b/src/team/koala/chillin/client/helper/messages/BaseCommand.java index 7b0c903..2b11a2c 100644 --- a/src/team/koala/chillin/client/helper/messages/BaseCommand.java +++ b/src/team/koala/chillin/client/helper/messages/BaseCommand.java @@ -5,7 +5,7 @@ import java.nio.*; import java.nio.charset.Charset; -import ks.KSObject; +import team.koala.chillin.client.KSObject; public class BaseCommand extends KSObject { diff --git a/src/team/koala/chillin/client/helper/messages/BaseSnapshot.java b/src/team/koala/chillin/client/helper/messages/BaseSnapshot.java index 46d7996..f6e78a3 100644 --- a/src/team/koala/chillin/client/helper/messages/BaseSnapshot.java +++ b/src/team/koala/chillin/client/helper/messages/BaseSnapshot.java @@ -1,12 +1,12 @@ package team.koala.chillin.client.helper.messages; +import team.koala.chillin.client.KSObject; + import java.lang.*; import java.util.*; import java.nio.*; import java.nio.charset.Charset; -import ks.KSObject; - public class BaseSnapshot extends KSObject { protected String worldPayload; diff --git a/src/team/koala/chillin/client/helper/messages/ClientJoined.java b/src/team/koala/chillin/client/helper/messages/ClientJoined.java index 2a71f14..03fffce 100644 --- a/src/team/koala/chillin/client/helper/messages/ClientJoined.java +++ b/src/team/koala/chillin/client/helper/messages/ClientJoined.java @@ -1,12 +1,12 @@ package team.koala.chillin.client.helper.messages; +import team.koala.chillin.client.KSObject; + import java.lang.*; import java.util.*; import java.nio.*; import java.nio.charset.Charset; -import ks.KSObject; - public class ClientJoined extends KSObject { protected Boolean joined; diff --git a/src/team/koala/chillin/client/helper/messages/EndGame.java b/src/team/koala/chillin/client/helper/messages/EndGame.java index a50a5ef..98b25b6 100644 --- a/src/team/koala/chillin/client/helper/messages/EndGame.java +++ b/src/team/koala/chillin/client/helper/messages/EndGame.java @@ -1,12 +1,12 @@ package team.koala.chillin.client.helper.messages; +import team.koala.chillin.client.KSObject; + import java.lang.*; import java.util.*; import java.nio.*; import java.nio.charset.Charset; -import ks.KSObject; - public class EndGame extends KSObject { protected String winnerSidename; diff --git a/src/team/koala/chillin/client/helper/messages/JoinOfflineGame.java b/src/team/koala/chillin/client/helper/messages/JoinOfflineGame.java index 3282e06..024492d 100644 --- a/src/team/koala/chillin/client/helper/messages/JoinOfflineGame.java +++ b/src/team/koala/chillin/client/helper/messages/JoinOfflineGame.java @@ -1,12 +1,12 @@ package team.koala.chillin.client.helper.messages; +import team.koala.chillin.client.KSObject; + import java.lang.*; import java.util.*; import java.nio.*; import java.nio.charset.Charset; -import ks.KSObject; - public class JoinOfflineGame extends KSObject { protected String teamNickname; diff --git a/src/team/koala/chillin/client/helper/messages/JoinOnlineGame.java b/src/team/koala/chillin/client/helper/messages/JoinOnlineGame.java index aefcb4b..676a58e 100644 --- a/src/team/koala/chillin/client/helper/messages/JoinOnlineGame.java +++ b/src/team/koala/chillin/client/helper/messages/JoinOnlineGame.java @@ -1,12 +1,12 @@ package team.koala.chillin.client.helper.messages; +import team.koala.chillin.client.KSObject; + import java.lang.*; import java.util.*; import java.nio.*; import java.nio.charset.Charset; -import ks.KSObject; - public class JoinOnlineGame extends KSObject { protected String token; diff --git a/src/team/koala/chillin/client/helper/messages/Message.java b/src/team/koala/chillin/client/helper/messages/Message.java index afa6bd9..b143f55 100644 --- a/src/team/koala/chillin/client/helper/messages/Message.java +++ b/src/team/koala/chillin/client/helper/messages/Message.java @@ -1,12 +1,12 @@ package team.koala.chillin.client.helper.messages; +import team.koala.chillin.client.KSObject; + import java.lang.*; import java.util.*; import java.nio.*; import java.nio.charset.Charset; -import ks.KSObject; - public class Message extends KSObject { protected String type; diff --git a/src/team/koala/chillin/client/helper/messages/StartGame.java b/src/team/koala/chillin/client/helper/messages/StartGame.java index 9da045f..0272b29 100644 --- a/src/team/koala/chillin/client/helper/messages/StartGame.java +++ b/src/team/koala/chillin/client/helper/messages/StartGame.java @@ -1,11 +1,10 @@ package team.koala.chillin.client.helper.messages; +import team.koala.chillin.client.KSObject; + import java.lang.*; import java.util.*; import java.nio.*; -import java.nio.charset.Charset; - -import ks.KSObject; public class StartGame extends KSObject { diff --git a/src/team/koala/chillin/client/helper/parser/MessageFactory.java b/src/team/koala/chillin/client/helper/parser/MessageFactory.java index f860e1e..392964b 100644 --- a/src/team/koala/chillin/client/helper/parser/MessageFactory.java +++ b/src/team/koala/chillin/client/helper/parser/MessageFactory.java @@ -1,7 +1,7 @@ package team.koala.chillin.client.helper.parser; import team.koala.chillin.client.helper.messages.*; -import ks.KSObject; +import team.koala.chillin.client.KSObject; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; diff --git a/src/team/koala/chillin/client/helper/parser/Parser.java b/src/team/koala/chillin/client/helper/parser/Parser.java index cad4e06..afa5f11 100644 --- a/src/team/koala/chillin/client/helper/parser/Parser.java +++ b/src/team/koala/chillin/client/helper/parser/Parser.java @@ -1,6 +1,6 @@ package team.koala.chillin.client.helper.parser; -import ks.KSObject; +import team.koala.chillin.client.KSObject; import team.koala.chillin.client.helper.messages.Message; import java.nio.charset.StandardCharsets;