[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / objects / drop / DropController.java
diff --git a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java
index 0213c971cbed124b6787a9fec6c570636ff8e47b..7b99676cbaabd769a88549959f7ac05e748dafcb 100644 (file)
import org.jetbrains.annotations.NotNull;
import ru.deadsoftware.cavedroid.game.GameItemsHolder;
import ru.deadsoftware.cavedroid.game.GameScope;
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.game.model.item.InventoryItem;
import ru.deadsoftware.cavedroid.game.model.item.Item;
+import ru.deadsoftware.cavedroid.misc.Saveable;
import javax.inject.Inject;
import javax.inject.Inject;
-import java.io.Serializable;
import java.util.Iterator;
import java.util.LinkedList;
@GameScope
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);
public interface Callback {
void run(Drop drop);
return mDrops.iterator();
}
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;
+ }
+
}
}