package chess.controller; import chess.controller.event.GameListener; import chess.model.Game; /** * Abstract class, manage commands given by the player, which are the commands that can be undone. */ public abstract class PlayerCommand extends Command{ public CommandResult undo(Game game, GameListener outputSystem) { CommandResult result = undoImpl(game, outputSystem); game.updateLastMove(); return result; } protected abstract CommandResult undoImpl(Game game, GameListener outputSystem); }