package std.game.objects.views; import static net.wimpi.telnetd.io.terminal.ColorHelper.CYAN; import static net.wimpi.telnetd.io.terminal.ColorHelper.GREEN; import static net.wimpi.telnetd.io.terminal.ColorHelper.WHITE; import static net.wimpi.telnetd.io.terminal.ColorHelper.colorizeText; import static org.groovymud.utils.WordUtils.pluralize; import org.groovymud.object.views.ContentsHelper import org.groovymud.object.views.ContainerView import java.io.IOException; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.apache.log4j.Logger; import org.groovymud.object.MudObject; import org.groovymud.object.alive.Alive; import org.groovymud.object.room.Exit; import org.groovymud.object.room.Room; import org.groovymud.shell.telnetd.ExtendedTerminalIO; public class RoomView extends ContainerView { private transient static final Logger logger = Logger.getLogger(RoomView.class); public void writeLookHeader(Alive looker, MudObject target) { ExtendedTerminalIO stream = looker.getTerminalOutput(); try { stream.writeln(colorizeText(target.getName().toString(), GREEN)); } catch (IOException e) { logger.error(e, e); } } public void writeLookBody(Alive looker, MudObject target) { Room container = (Room) target; ExtendedTerminalIO stream = looker.getTerminalOutput(); try { writeDynamicText(looker, target, target.getDescription()); if (container.getInventoryHandler().getMudObjectsMap(false).size() > 0) { stream.write("You see: "); super.writeLookBody(looker, target); stream.writeln("."); } Map<String, Set<MudObject>> alive = container.getInventoryHandler().getMudObjectsMap(true); ContentsHelper contentsHelper = createContentsHelper(); String aliveContents = contentsHelper.getContentsDescription(alive, looker, true); int aliveSize = container.getInventoryHandler().size(true) - 1; if (aliveSize > 0) { stream.write(colorizeText(aliveContents, GREEN)); } if (aliveSize > 0) { stream.writeln(aliveSize > 1 ? " are here." : " is here."); } } catch (IOException e) { logger.error(e, e); } } public void writeLookFooter(Alive looker, MudObject target) { Room room = (Room) target; Set exits = room.getExitInventory().getMudObjects(); ExtendedTerminalIO stream = looker.getTerminalOutput(); try { stream.write(colorizeText("There " + (exits.size() == 1 && exits.size() != 0 ? "is" : "are") + " " + pluralize("exit", exits.size()) + ": ", CYAN)); Iterator iter = exits.iterator(); int i = 0; while (iter.hasNext()) { Exit exit = (Exit) iter.next(); stream.write(colorizeText(exit.getDirection() + (i < exits.size() - 1 ? ", " : "\r\n"), WHITE)); i++; } } catch (IOException e) { logger.error(e, e); } } }