package dev.llan.model.pieces;
import dev.llan.model.board.Grid;
import dev.llan.model.board.Point;
import dev.llan.model.board.pathfinding.Path;
import dev.llan.model.cards.CardCollection;
import dev.llan.model.pieces.attributes.effects.EffectCover;
import dev.llan.model.pieces.attributes.effects.EffectRecord;
import dev.llan.model.pieces.attributes.modifiers.ModifierCover;
import dev.llan.model.pieces.attributes.stats.Stats;
import dev.llan.model.state.combat.TurnInfo;
import javafx.scene.image.Image;
import java.util.Optional;
import java.util.List;
public interface Entity extends Piece {
void addHealth(double delta);
void reduceHealth(double delta);
void reduceMana(double delta);
Stats getStats();
ModifierCover getModifiers();
EffectCover getEffects();
CardCollection getCollection();
boolean canMove(double movementCost);
void reduceMovement(double movement);
Optional<Path> generateActivePath(Point desiredPoint);
Optional<Path> getActivePath();
void setHasAttacked(boolean hasAttacked);
void onNextCombatRound();
Image getImage();
Image getIcon();
String[] getNotes();
TurnInfo getTurnInfo();
List<EffectRecord> getClonedEffects();
Entity clone(Grid grid);
}