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 generateActivePath(Point desiredPoint); Optional getActivePath(); void setHasAttacked(boolean hasAttacked); void onNextCombatRound(); Image getImage(); Image getIcon(); String[] getNotes(); TurnInfo getTurnInfo(); List getClonedEffects(); Entity clone(Grid grid); }