package me.desht.chesscraft.commands;
import chesspresso.Chess;
import me.desht.chesscraft.ChessCraft;
import me.desht.chesscraft.ChessValidate;
import me.desht.chesscraft.Messages;
import me.desht.chesscraft.chess.ChessGame;
import me.desht.chesscraft.chess.ChessGameManager;
import me.desht.chesscraft.chess.player.ChessPlayer;
import me.desht.chesscraft.enums.GameState;
import me.desht.chesscraft.exceptions.ChessException;
import me.desht.dhutils.MiscUtil;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.util.List;
import java.util.UUID;
public class ClaimVictoryCommand extends ChessAbstractCommand {
public ClaimVictoryCommand() {
super("chess win", 0, 0);
setPermissionNode("chesscraft.commands.win");
setUsage("/chess win");
}
@Override
public boolean execute(Plugin plugin, CommandSender sender, String[] args) throws ChessException {
notFromConsole(sender);
Player player = (Player) sender;
ChessGame game = ChessGameManager.getManager().getCurrentGame(player, true);
game.ensureGameState(GameState.RUNNING);
ChessPlayer cp = game.getPlayer(player.getUniqueId().toString());
if (cp == null) {
return true;
}
ChessPlayer other = game.getPlayer(Chess.otherPlayer(cp.getColour()));
if (other == null || !other.isHuman()) {
return true;
}
int timeout = plugin.getConfig().getInt("timeout_forfeit", 60);
long leftAt = ((ChessCraft)plugin).getPlayerTracker().getPlayerLeftAt(UUID.fromString(other.getId()));
ChessValidate.isTrue(leftAt > 0, Messages.getString("ChessCommandExecutor.otherPlayerMustBeOffline"));
long now = System.currentTimeMillis();
long elapsed = (now - leftAt) / 1000;
if (elapsed >= timeout) {
game.winByDefault(cp.getColour());
} else {
MiscUtil.statusMessage(sender, Messages.getString("ChessCommandExecutor.needToWait", timeout - elapsed));
}
return true;
}
@Override
public List<String> onTabComplete(Plugin plugin, CommandSender sender, String[] args) {
showUsage(sender);
return noCompletions(sender);
}
}