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> 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;
}
}