[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 6666fc8f64b7edcc75fddf22ea701403b7ea5b5f..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);
}
public void initDrops(GameItemsHolder gameItemsHolder) {
}
public void initDrops(GameItemsHolder gameItemsHolder) {
- mDrops.forEach((drop) -> drop.initItem(gameItemsHolder));
+ for (Drop drop : mDrops) {
+ drop.initItem(gameItemsHolder);
+ }
}
public void addDrop(float x, float y, Item item) {
}
public void addDrop(float x, float y, Item item) {
}
public void forEach(Callback callback) {
}
public void forEach(Callback callback) {
- mDrops.forEach(callback::run);
+ for (Drop drop : mDrops) {
+ callback.run(drop);
+ }
}
public Iterator<Drop> getIterator() {
return mDrops.iterator();
}
}
public Iterator<Drop> getIterator() {
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;
+ }
+
}
}