DEADSOFTWARE

Implement DI for menu and refactor #13
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / mobs / MobsController.java
1 package ru.deadsoftware.cavedroid.game.mobs;
3 import com.badlogic.gdx.Gdx;
4 import ru.deadsoftware.cavedroid.game.GameScope;
6 import javax.inject.Inject;
7 import java.io.Serializable;
8 import java.util.Iterator;
9 import java.util.LinkedList;
11 @GameScope
12 public class MobsController implements Serializable {
14 public interface Callback {
15 void run(Mob mob);
16 }
18 private static final String TAG = "MobsController";
20 private final Player mPlayer;
21 private final LinkedList<Mob> mMobs = new LinkedList<>();
23 @Inject
24 public MobsController() {
25 mPlayer = new Player();
26 }
28 public Player getPlayer() {
29 return mPlayer;
30 }
32 public void addMob(Class<? extends Mob> mobClass, float x, float y) {
33 try {
34 mMobs.add(mobClass.getConstructor(float.class, float.class).newInstance(x, y));
35 } catch (Exception e) {
36 Gdx.app.error(TAG, e.getMessage());
37 }
38 }
40 public int getSize() {
41 return mMobs.size();
42 }
44 public void forEach(Callback callback) {
45 mMobs.forEach(callback::run);
46 }
48 public Iterator<Mob> getIterator() {
49 return mMobs.iterator();
50 }
52 }