diff --git a/.idea/vcs.xml b/.idea/vcs.xml index b659007..8306744 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -2,6 +2,6 @@ - + \ No newline at end of file diff --git a/src/main/java/uulm/teamname/marvelous/gamelibrary/json/ingame/serialize/EntitySerializer.java b/src/main/java/uulm/teamname/marvelous/gamelibrary/json/ingame/serialize/EntitySerializer.java index 3cb6081..4576af5 100644 --- a/src/main/java/uulm/teamname/marvelous/gamelibrary/json/ingame/serialize/EntitySerializer.java +++ b/src/main/java/uulm/teamname/marvelous/gamelibrary/json/ingame/serialize/EntitySerializer.java @@ -43,8 +43,9 @@ public class EntitySerializer extends StdSerializer { private void serializeNPC(NPC value, JsonGenerator gen, SerializerProvider provider) throws IOException { gen.writeNumberField("ID", value.id.id); - // gen.writeNumberField("MP",value.MP); // TODO: Doesn't exist yet? -// gen.writeArray(value.); // TODO: Put values here + gen.writeNumberField("MP", value.mp.getValue()); + gen.writeFieldName("stones"); + gen.writeArray(inventoryToIntArray(value.inventory), 0, value.inventory.getSize()); } private void serializeCharacter(Character value, JsonGenerator gen, SerializerProvider provider) @@ -57,10 +58,7 @@ public class EntitySerializer extends StdSerializer { gen.writeFieldName("stones"); gen.writeArray( - Arrays.stream(value.inventory.getStonesAsArray()) - .mapToInt(StoneType::getID) - .sorted() - .toArray(), + inventoryToIntArray(value.inventory), 0, value.inventory.getSize()); } @@ -74,4 +72,12 @@ public class EntitySerializer extends StdSerializer { throws IOException { gen.writeNumberField("ID", value.id.id); } + + /** Returns an int[] with the sorted integer representations of the stones in the given Inventory */ + private int[] inventoryToIntArray(Inventory inventory) { + return Arrays.stream(inventory.getStonesAsArray()) + .mapToInt(StoneType::getID) + .sorted() + .toArray(); + } } diff --git a/src/test/java/uulm/teamname/marvelous/gamelibrary/json/ingame/serialize/EntitySerializerTest.java b/src/test/java/uulm/teamname/marvelous/gamelibrary/json/ingame/serialize/EntitySerializerTest.java index 5aa6309..2aa221f 100644 --- a/src/test/java/uulm/teamname/marvelous/gamelibrary/json/ingame/serialize/EntitySerializerTest.java +++ b/src/test/java/uulm/teamname/marvelous/gamelibrary/json/ingame/serialize/EntitySerializerTest.java @@ -12,12 +12,13 @@ import uulm.teamname.marvelous.gamelibrary.json.ingame.deserialize.EntityDeseria import static org.mockito.Mockito.*; import static org.junit.jupiter.api.Assertions.*; +import static org.assertj.core.api.Assertions.*; class EntitySerializerTest { @Test - void notATestJustSomethingToRun() throws JsonProcessingException { + void serializeCharacter() throws JsonProcessingException { var mapper = new ObjectMapper(); var chara = new Character( @@ -35,9 +36,21 @@ class EntitySerializerTest { chara.inventory.addStone(StoneType.SpaceStone); chara.inventory.addStone(StoneType.MindStone); - var result = mapper.writeValueAsString(chara); + var jsonRepresentingCharacter = """ + { + "entityType":"Character", + "name":"CoolHeroThing", + "PID":1, + "ID":1, + "HP":200, + "MP":300, + "AP":8, + "stones":[1,2,5], + "position":[12,24] + }""".replace("\n", ""); - System.out.println(result); + assertThat(mapper.writeValueAsString(chara)) + .isEqualTo(jsonRepresentingCharacter); } -} \ No newline at end of file +}