DEADSOFTWARE

6666fc8f64b7edcc75fddf22ea701403b7ea5b5f
[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 mDrops.forEach((drop) -> drop.initItem(gameItemsHolder));
29 }
31 public void addDrop(float x, float y, Item item) {
32 addDrop(x, y, item, 1);
33 }
35 public void addDrop(float x, float y, Item item, int count) {
36 if (item.isNone()) {
37 return;
38 }
39 mDrops.add(new Drop(x, y, item, count));
40 }
42 public void addDrop(float x, float y, @NotNull InventoryItem invItem) {
43 addDrop(x, y, invItem.getItem(), invItem.getAmount());
44 }
46 public int getSize() {
47 return mDrops.size();
48 }
50 public void forEach(Callback callback) {
51 mDrops.forEach(callback::run);
52 }
54 public Iterator<Drop> getIterator() {
55 return mDrops.iterator();
56 }
58 }