mourning-ember / src / main / java / dev / llan / model / pieces / enemies / Imp.java
Imp.java
Raw
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> 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;
  }
}