DEADSOFTWARE

Update version script
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / objects / drop / DropController.java
1 package ru.deadsoftware.cavedroid.game.objects.drop;
3 import org.jetbrains.annotations.NotNull;
4 import ru.deadsoftware.cavedroid.game.GameItemsHolder;
5 import ru.deadsoftware.cavedroid.game.GameScope;
6 import ru.deadsoftware.cavedroid.game.model.item.InventoryItem;
7 import ru.deadsoftware.cavedroid.game.model.item.Item;
9 import javax.inject.Inject;
10 import java.io.Serializable;
11 import java.util.Iterator;
12 import java.util.LinkedList;
14 @GameScope
15 public class DropController implements Serializable {
17 public interface Callback {
18 void run(Drop drop);
19 }
21 private final LinkedList<Drop> mDrops = new LinkedList<>();
23 @Inject
24 public DropController() {
25 }
27 public void initDrops(GameItemsHolder gameItemsHolder) {
28 for (Drop drop : mDrops) {
29 drop.initItem(gameItemsHolder);
30 }
31 }
33 public void addDrop(float x, float y, Item item) {
34 addDrop(x, y, item, 1);
35 }
37 public void addDrop(float x, float y, Item item, int count) {
38 if (item.isNone()) {
39 return;
40 }
41 mDrops.add(new Drop(x, y, item, count));
42 }
44 public void addDrop(float x, float y, @NotNull InventoryItem invItem) {
45 addDrop(x, y, invItem.getItem(), invItem.getAmount());
46 }
48 public int getSize() {
49 return mDrops.size();
50 }
52 public void forEach(Callback callback) {
53 for (Drop drop : mDrops) {
54 callback.run(drop);
55 }
56 }
58 public Iterator<Drop> getIterator() {
59 return mDrops.iterator();
60 }
62 }