package dev.llan.model.pieces.player;
import dev.llan.model.board.Grid;
import dev.llan.model.board.Point;
import dev.llan.model.board.pathfinding.Path;
import dev.llan.events.GameEvent;
import dev.llan.model.cards.Card;
import dev.llan.model.pieces.Entity;
import dev.llan.model.pieces.attributes.inventory.Inventory;
import java.util.List;
import java.util.Optional;
public interface Player extends Entity {
GameEvent setActivePath(Optional<Path> activePath);
Optional<GameEvent> recalculateActivePath();
void removeActivePath();
Inventory getInventory();
Optional<GameEvent> selectCardInHand(int cardIndex);
Optional<Card> getSelectedCard();
void setHasAttacked(boolean hasAttacked);
List<Point> getPointsInRange();
boolean isInRange(Point point);
List<GameEvent> onEliminationOf(Entity other);
@Override
Player clone(Grid grid);
}