package me.desht.chesscraft.controlpanel; import me.desht.chesscraft.ChessCraft; import me.desht.chesscraft.Messages; import me.desht.chesscraft.chess.ChessGame; import me.desht.chesscraft.chess.player.ChessPlayer; import me.desht.chesscraft.chess.player.HumanChessPlayer; import me.desht.chesscraft.expector.ExpectDrawResponse; import me.desht.chesscraft.expector.ExpectSwapResponse; import me.desht.chesscraft.expector.ExpectUndoResponse; import me.desht.chesscraft.expector.ExpectYesNoResponse; import me.desht.dhutils.responsehandler.ResponseHandler; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerInteractEvent; public abstract class YesNoButton extends AbstractSignButton { private final int colour; private final boolean yesOrNo; public YesNoButton(ControlPanel panel, int x, int y, int colour, boolean yesOrNo) { super(panel, yesOrNo ? "yesBtn" : "noBtn", null, x, y); this.colour = colour; this.yesOrNo = yesOrNo; } @Override public void execute(PlayerInteractEvent event) { ExpectYesNoResponse.handleYesNoResponse(event.getPlayer(), yesOrNo); } @Override public boolean isEnabled() { return !getOfferText().isEmpty(); } @Override public String[] getCustomSignText() { String[] text = getSignText(); text[0] = getOfferText(); return text; } private String getOfferText() { ChessGame game = getGame(); if (game == null) return ""; ChessPlayer cp = game.getPlayer(colour); if (cp == null || !cp.isHuman()) return ""; ResponseHandler resp = ChessCraft.getInstance().responseHandler; Player player = ((HumanChessPlayer) cp).getBukkitPlayer(); if (player == null) { // gone offline, perhaps? return ""; } else if (resp.isExpecting(player, ExpectDrawResponse.class)) { return Messages.getString("ControlPanel.acceptDrawBtn"); } else if (resp.isExpecting(player, ExpectSwapResponse.class)) { return Messages.getString("ControlPanel.acceptSwapBtn"); } else if (resp.isExpecting(player, ExpectUndoResponse.class)) { return Messages.getString("ControlPanel.acceptUndoBtn"); } else { return ""; } } }