diff --git a/pom.xml b/pom.xml index e9372cad9cebd0da731812edff712c41471fce47..374c01bdee0e15a90f1a7e648d031aa8e71e0fce 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,11 @@ <artifactId>gson</artifactId> <version>2.2.4</version> </dependency> + <dependency> + <groupId>org.ow2.sirocco</groupId> + <artifactId>sirocco-text-table-formatter</artifactId> + <version>1.0</version> + </dependency> </dependencies> <build> diff --git a/src/main/java/com/comandante/creeper/fight/FightRun.java b/src/main/java/com/comandante/creeper/fight/FightRun.java index e1d811aba84cb4495e3f59fa8d8b6b57419e79ae..4d0c5759adddf6a898a1b359c49f011dc6e1de11 100644 --- a/src/main/java/com/comandante/creeper/fight/FightRun.java +++ b/src/main/java/com/comandante/creeper/fight/FightRun.java @@ -32,6 +32,14 @@ public class FightRun implements Callable<FightResults> { break; } gameManager.getFightManager().fightTurn(playerStats, npcStats, 3, player, npc); + gameManager.getChannelUtils().write(player.getPlayerId(), "Use an ability!"); + gameManager.getPlayerManager().getSessionManager().getSession(player.getPlayerId()).setIsAbleToDoAbility(true); + try { + Thread.sleep(2200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + gameManager.getPlayerManager().getSessionManager().getSession(player.getPlayerId()).setIsAbleToDoAbility(false); } gameManager.getPlayerManager().savePlayerMetadata(playerMetadata); diff --git a/src/main/java/com/comandante/creeper/server/CreeperSession.java b/src/main/java/com/comandante/creeper/server/CreeperSession.java index 51f3e03e18ed3e607412804d6dab5a918213b361..81c332804fa34f9d9ad255d0eb3df903fec846e2 100644 --- a/src/main/java/com/comandante/creeper/server/CreeperSession.java +++ b/src/main/java/com/comandante/creeper/server/CreeperSession.java @@ -4,6 +4,7 @@ import com.comandante.creeper.fight.FightResults; import com.google.common.base.Optional; import java.util.concurrent.Future; +import java.util.concurrent.atomic.AtomicBoolean; public class CreeperSession { @@ -11,6 +12,7 @@ public class CreeperSession { private Optional<String> password = Optional.absent(); private boolean isAuthed = false; private Optional<Future<FightResults>> activeFight = Optional.absent(); + private AtomicBoolean isAbleToDoAbility = new AtomicBoolean(false); State state; @@ -62,4 +64,12 @@ public class CreeperSession { public State getState() { return state; } + + public void setIsAbleToDoAbility(boolean b) { + this.isAbleToDoAbility.set(b); + } + + public boolean IsAbleToDoAbility() { + return this.isAbleToDoAbility.get(); + } } diff --git a/src/main/java/com/comandante/creeper/server/command/WhoCommand.java b/src/main/java/com/comandante/creeper/server/command/WhoCommand.java index 5db783aec534cc466b74e3b16aa41b995a7cbbb7..5d2ac78eb73c58f998d5ba698e4b5781520ff734 100644 --- a/src/main/java/com/comandante/creeper/server/command/WhoCommand.java +++ b/src/main/java/com/comandante/creeper/server/command/WhoCommand.java @@ -4,14 +4,16 @@ import com.comandante.creeper.managers.GameManager; import com.comandante.creeper.player.Player; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.MessageEvent; +import org.nocrala.tools.texttablefmt.BorderStyle; +import org.nocrala.tools.texttablefmt.CellStyle; +import org.nocrala.tools.texttablefmt.ShownBorders; +import org.nocrala.tools.texttablefmt.Table; import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.Set; -import static com.comandante.creeper.server.Color.CYAN; -import static com.comandante.creeper.server.Color.RESET; - public class WhoCommand extends Command { final static List<String> validTriggers = Arrays.asList("who"); @@ -24,21 +26,49 @@ public class WhoCommand extends Command { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { try { + CellStyle numberStyle = new CellStyle(CellStyle.HorizontalAlign.right); + + Table t = new Table(3, BorderStyle.UNICODE_BOX_DOUBLE_BORDER, + ShownBorders.SURROUND_HEADER_FOOTER_AND_COLUMNS); + + t.setColumnWidth(0, 8, 14); + t.setColumnWidth(1, 7, 16); + t.setColumnWidth(2, 9, 16); Set<Player> allPlayers = getGameManager().getAllPlayers(); - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(CYAN); - stringBuilder.append("----------------------\r\n"); - stringBuilder.append("|--active users------|\r\n"); - stringBuilder.append("----------------------\r\n"); for (Player allPlayer : allPlayers) { - stringBuilder.append(allPlayer.getPlayerName()); - stringBuilder.append(" - ").append(allPlayer.getChannel().getRemoteAddress().toString()); - stringBuilder.append("\r\n"); + t.addCell(allPlayer.getPlayerName()); + t.addCell(allPlayer.getChannel().getRemoteAddress().toString()); + t.addCell(new Date().toString()); } - stringBuilder.append(RESET); - getGameManager().getChannelUtils().write(getPlayerId(getCreeperSession(e.getChannel())), stringBuilder.toString()); + getGameManager().getChannelUtils().write(getPlayerId(getCreeperSession(e.getChannel())), t.render()); } finally { super.messageReceived(ctx, e); } } + + public static void main(String[] args) { + CellStyle numberStyle = new CellStyle(CellStyle.HorizontalAlign.right); + + Table t = new Table(3, BorderStyle.DESIGN_DIM, + ShownBorders.HEADER_ONLY); + + t.setColumnWidth(0, 22, 28); + t.setColumnWidth(1, 12, 22); + t.setColumnWidth(2, 9, 16); + + t.addCell("Chrisadfasdfas"); + t.addCell("127.0.0.1"); + t.addCell("November 1, 1997"); + + t.addCell("Brian"); + t.addCell("127.0.0.1"); + t.addCell("November 1, 1997"); + + t.addCell("Turd"); + t.addCell("127.0.0.1"); + t.addCell("November 1, 1997"); + + + System.out.println("\n\n\n\n" + t.render()); + } }