package dev.llan.model.pieces.enemies; import dev.llan.model.cards.Card; import dev.llan.model.board.Grid; import dev.llan.model.board.Point; import dev.llan.model.pieces.Displays; import dev.llan.model.pieces.attributes.stats.BaseStatsBuilder; import dev.llan.model.pieces.attributes.stats.Stats; import javafx.scene.image.Image; import java.util.Optional; public class Imp extends BaseEnemy { private static final String NAME = "Imp"; private static final String RESOURCE_PATH = "/assets/entities/imp.png"; Imp(Point startingPos, Grid grid) { super( NAME, RESOURCE_PATH, startingPos, grid, new BaseStatsBuilder().scoutingRadius(10.0).speed(4.0)); collection.initCollection(Constants.getInitialDeck(this)); } private Imp(Point position, Grid grid, Stats clonedStats) { super(NAME, RESOURCE_PATH, position, grid, clonedStats); } @Override protected Card selectCard() { Optional card = collection.selectCard(0); if (card.isPresent()) { return card.get(); } throw new RuntimeException("Error in collection logic resulting in null card"); } @Override public Image getImage() { return Displays.IMP_RAW; } @Override public Image getIcon() { return Displays.IMP; } @Override public String[] getNotes() { return new String[0]; } @Override public Enemy clone(Grid grid) { Imp clone = new Imp( this.getPosition().clone(), grid, new BaseStatsBuilder().copyAll(this.getStats()).buildClone()); clone.cloneAttributes(this); return clone; } }