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
+}