package dev.llan.model.pieces.enemies; import dev.llan.model.board.Grid; import dev.llan.model.board.Point; import dev.llan.model.cards.Card; 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; import java.util.Random; import static dev.llan.model.cards.Constants.*; public class Golem extends BaseEnemy { private static final String NAME = "Golem"; private static final String RESOURCE_PATH = "/assets/entities/golem.png"; Golem(Point startingPos, Grid grid) { super( NAME, RESOURCE_PATH, startingPos, grid, new BaseStatsBuilder() .attack(5.0) .defense(5.0) .power(3.0) .resistance(3.0) .maxHealth(20.0) .speed(2.5)); collection.initCollection(Constants.getInitialDeck(this)); } private Golem(Point position, Grid grid, Stats clonedStats) { super(NAME, RESOURCE_PATH, position, grid, clonedStats); } @Override protected Card selectCard() { int index = new Random().nextInt(0, MAX_HAND_CARDS); Optional card = collection.selectCard(index); if (card.isPresent()) { return card.get(); } throw new RuntimeException("Error in collection logic resulting in null card"); } @Override public Image getImage() { return Displays.GOLEM_RAW; } @Override public Image getIcon() { return Displays.GOLEM; } @Override public String[] getNotes() { return new String[0]; } @Override public Enemy clone(Grid grid) { Golem clone = new Golem( this.getPosition().clone(), grid, new BaseStatsBuilder().copyAll(this.getStats()).buildClone()); clone.cloneAttributes(this); return clone; } }