X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Fobjects%2Fdrop%2FDropController.java;h=7b99676cbaabd769a88549959f7ac05e748dafcb;hb=91283c3181af9700e20b5600f4e9017e0c31d33a;hp=6666fc8f64b7edcc75fddf22ea701403b7ea5b5f;hpb=c447b95aeb883113ff1d53a3178828929c1eb92f;p=cavedroid.git 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 6666fc8..7b99676 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java +++ b/core/src/ru/deadsoftware/cavedroid/game/objects/drop/DropController.java @@ -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); @@ -25,7 +28,9 @@ public class DropController implements Serializable { } 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) { @@ -48,11 +53,36 @@ public class DropController implements Serializable { } public void forEach(Callback callback) { - mDrops.forEach(callback::run); + for (Drop drop : mDrops) { + callback.run(drop); + } } public Iterator getIterator() { return mDrops.iterator(); } + @Override + @NotNull + public SaveDataDto.DropControllerSaveData getSaveData() { + final LinkedList 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; + } + }