DEADSOFTWARE

Remove java serialization
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / objects / drop / DropController.java
index 0213c971cbed124b6787a9fec6c570636ff8e47b..7b99676cbaabd769a88549959f7ac05e748dafcb 100644 (file)
@@ -3,16 +3,19 @@ package ru.deadsoftware.cavedroid.game.objects.drop;
 import org.jetbrains.annotations.NotNull;
 import ru.deadsoftware.cavedroid.game.GameItemsHolder;
 import ru.deadsoftware.cavedroid.game.GameScope;
+import ru.deadsoftware.cavedroid.game.model.dto.SaveDataDto;
 import ru.deadsoftware.cavedroid.game.model.item.InventoryItem;
 import ru.deadsoftware.cavedroid.game.model.item.Item;
+import ru.deadsoftware.cavedroid.misc.Saveable;
 
 import javax.inject.Inject;
-import java.io.Serializable;
 import java.util.Iterator;
 import java.util.LinkedList;
 
 @GameScope
-public class DropController implements Serializable {
+public class DropController implements Saveable {
+
+    private static final int SAVE_DATA_VERSION = 1;
 
     public interface Callback {
         void run(Drop drop);
@@ -59,4 +62,27 @@ public class DropController implements Serializable {
         return mDrops.iterator();
     }
 
+    @Override
+    @NotNull
+    public SaveDataDto.DropControllerSaveData getSaveData() {
+        final LinkedList<SaveDataDto.DropSaveData> dropSaveData = new LinkedList<>();
+        for (Drop drop : mDrops) {
+            dropSaveData.add(drop.getSaveData());
+        }
+        return new SaveDataDto.DropControllerSaveData(SAVE_DATA_VERSION, dropSaveData);
+    }
+
+    public static DropController fromSaveData(
+            SaveDataDto.DropControllerSaveData saveData, GameItemsHolder gameItemsHolder) {
+        saveData.verifyVersion(SAVE_DATA_VERSION);
+
+        DropController controller = new DropController();
+
+        for (SaveDataDto.DropSaveData dropSaveData : saveData.getDrops()) {
+            controller.mDrops.add(Drop.Companion.fromSaveData(dropSaveData, gameItemsHolder));
+        }
+
+        return controller;
+    }
+
 }