From 591a9ab2eb698502a478c6c86eca8a549b36350c Mon Sep 17 00:00:00 2001 From: Pahimar Date: Thu, 19 May 2016 22:17:31 -0400 Subject: [PATCH] More work on the new player knowledge system --- .../ee3/knowledge/PlayerKnowledge.java | 34 ++++++++++++++++--- .../pahimar/ee3/util/SerializationHelper.java | 2 ++ .../serialize/PlayerKnowledgeSerializer.java | 30 ++++++++++++++++ 3 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/pahimar/ee3/util/serialize/PlayerKnowledgeSerializer.java diff --git a/src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledge.java b/src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledge.java index 558b8b40..52243fb8 100644 --- a/src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledge.java +++ b/src/main/java/com/pahimar/ee3/knowledge/PlayerKnowledge.java @@ -11,9 +11,6 @@ import java.util.TreeSet; public class PlayerKnowledge { - private static final int VERSION = 1; - - private int version; private Set knownItemStacks; public PlayerKnowledge() { @@ -22,7 +19,6 @@ public class PlayerKnowledge { public PlayerKnowledge(Collection itemStacks) { - version = VERSION; knownItemStacks = new TreeSet<>(Comparators.ID_COMPARATOR); if (itemStacks != null) { @@ -36,7 +32,7 @@ public class PlayerKnowledge { return knownItemStacks.contains(ItemHelper.clone(itemStack, 1)); } - public Set get() { + public Set getKnownItemStacks() { return knownItemStacks; } @@ -48,6 +44,13 @@ public class PlayerKnowledge { } } + public void learn(Collection itemStacks) { + + for (ItemStack itemStack : itemStacks) { + learn(itemStack); + } + } + public void forget(ItemStack itemStack) { if (itemStack != null) { @@ -56,7 +59,28 @@ public class PlayerKnowledge { } } + public void forget(Collection itemStacks) { + + for (ItemStack itemStack : itemStacks) { + forget(itemStack); + } + } + public void forgetAll() { knownItemStacks.clear(); } + + @Override + public String toString() { + + StringBuilder stringBuilder = new StringBuilder(); + + stringBuilder.append("["); + for (ItemStack itemStack : knownItemStacks) { + stringBuilder.append(String.format("%s, ", ItemHelper.toString(itemStack))); + } + stringBuilder.append("]"); + + return stringBuilder.toString(); + } } diff --git a/src/main/java/com/pahimar/ee3/util/SerializationHelper.java b/src/main/java/com/pahimar/ee3/util/SerializationHelper.java index 6a9c2d50..25f179e3 100644 --- a/src/main/java/com/pahimar/ee3/util/SerializationHelper.java +++ b/src/main/java/com/pahimar/ee3/util/SerializationHelper.java @@ -10,6 +10,7 @@ import com.pahimar.ee3.api.exchange.EnergyValue; import com.pahimar.ee3.exchange.EnergyValueStackMapping; import com.pahimar.ee3.exchange.OreStack; import com.pahimar.ee3.exchange.WrappedStack; +import com.pahimar.ee3.knowledge.PlayerKnowledge; import com.pahimar.ee3.knowledge.TransmutationKnowledge; import com.pahimar.ee3.reference.Reference; import com.pahimar.ee3.util.serialize.*; @@ -35,6 +36,7 @@ public class SerializationHelper { .registerTypeAdapter(OreStack.class, new OreStackSerializer()) .registerTypeAdapter(FluidStack.class, new FluidStackSerializer()) .registerTypeAdapter(WrappedStack.class, new WrappedStackSerializer()) + .registerTypeAdapter(PlayerKnowledge.class, new PlayerKnowledgeSerializer()) .registerTypeAdapter(ENERGY_VALUE_MAP_TYPE, new EnergyValueMapSerializer()) .create(); diff --git a/src/main/java/com/pahimar/ee3/util/serialize/PlayerKnowledgeSerializer.java b/src/main/java/com/pahimar/ee3/util/serialize/PlayerKnowledgeSerializer.java new file mode 100644 index 00000000..fca018ad --- /dev/null +++ b/src/main/java/com/pahimar/ee3/util/serialize/PlayerKnowledgeSerializer.java @@ -0,0 +1,30 @@ +package com.pahimar.ee3.util.serialize; + +import com.google.gson.*; +import com.pahimar.ee3.knowledge.PlayerKnowledge; +import net.minecraft.item.ItemStack; + +import java.lang.reflect.Type; + +public class PlayerKnowledgeSerializer implements JsonSerializer, JsonDeserializer { + + @Override + public PlayerKnowledge deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + // TODO Pick up here + return null; + } + + @Override + public JsonElement serialize(PlayerKnowledge src, Type typeOfSrc, JsonSerializationContext context) { + + JsonArray jsonArray = new JsonArray(); + + if (src != null) { + for (ItemStack itemStack : src.getKnownItemStacks()) { + jsonArray.add(context.serialize(itemStack)); + } + } + + return jsonArray; + } +}