package dev.llan.model.state; import dev.llan.model.Game; import dev.llan.model.board.GameMap; import dev.llan.model.board.Point; import dev.llan.model.board.pathfinding.Path; import dev.llan.events.GameEvent; import dev.llan.model.pieces.enemies.Enemy; import dev.llan.model.pieces.player.Player; import java.util.ArrayList; import java.util.List; import java.util.Optional; public abstract class BaseGameState implements GameState { protected final GameMap gameMap; protected final Player player; protected final List enemies; public BaseGameState(Game game) { this.gameMap = game.getMap(); this.player = game.getPlayer(); this.enemies = game.getEnemies(); } @Override public List tryMoveTo(Point position) { Optional path = player.generateActivePath(position); GameEvent event = player.setActivePath(path); return List.of(event); } @Override public List moveActivePath() { Optional path = player.getActivePath(); List events = new ArrayList<>(); if (path.isPresent()) { events.addAll(gameMap.moveEntity(player, path.get())); } return events; } @Override public List setHighlighted(Point point, boolean highlighted) { return gameMap.setTileHighlight(point, highlighted); } @Override public List endTurn() { throw new UnsupportedOperationException("Action not supported in current state"); } @Override public List waitTurn() { throw new UnsupportedOperationException("Action not supported in current state"); } @Override public List selectCard(int cardIndex) { throw new UnsupportedOperationException("Action not supported in current state"); } @Override public List useCardOn(Point position) { throw new UnsupportedOperationException("Action not supported in current state"); } @Override public List swapCards(int first, int second) { throw new UnsupportedOperationException("Action not supported in current state"); } @Override public List removeCard(int index) { throw new UnsupportedOperationException("Action not supported in current state"); } @Override public List equip(int index) { throw new UnsupportedOperationException("Action not supported in current state"); } @Override public List swapEquipment(int first, int second) { throw new UnsupportedOperationException("Action not supported in current state"); } @Override public List removeEquipment(int index) { throw new UnsupportedOperationException("Action not supported in current state"); } }