twodcraft/src/main/java/cz/jzitnik/game/mobs/EntitySpawnProvider.java

49 lines
1.5 KiB
Java

package cz.jzitnik.game.mobs;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import cz.jzitnik.game.Game;
import cz.jzitnik.game.annotations.EntitySpawn;
import cz.jzitnik.game.entities.Block;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.jline.terminal.Terminal;
import org.reflections.Reflections;
public class EntitySpawnProvider {
private final List<EntitySpawnInterface> spawnList = new ArrayList<>();
public void update(Game game, Terminal terminal) {
int[] playerLocation = game.getPlayerCords();
int playerX = playerLocation[0];
int playerY = playerLocation[1];
for (EntitySpawnInterface entitySpawnInterface: spawnList) {
entitySpawnInterface.spawn(playerX, playerY, game, terminal);
}
}
public EntitySpawnProvider() {
registerHandlers();
}
private void registerHandlers() {
Reflections reflections = new Reflections("cz.jzitnik.game.mobs.services");
Set<Class<?>> handlerClasses = reflections.getTypesAnnotatedWith(EntitySpawn.class);
for (Class<?> clazz : handlerClasses) {
if (EntitySpawnInterface.class.isAssignableFrom(clazz)) {
try {
EntitySpawnInterface instance = (EntitySpawnInterface) clazz.getDeclaredConstructor().newInstance();
spawnList.add(instance);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}