package org.mafagafogigante.dungeon.map;
import org.mafagafogigante.dungeon.game.DungeonString;
import org.mafagafogigante.dungeon.gui.GameWindow;
import org.mafagafogigante.dungeon.io.Writer;
import org.jetbrains.annotations.NotNull;
public final class WorldMapWriter {
private WorldMapWriter() {
throw new AssertionError();
}
public static void writeMap() {
renderMap(WorldMap.makeWorldMap(getMapRows(), getMapColumns(), true));
}
public static void writeDebugMap() {
renderMap(WorldMap.makeWorldMap(getMapRows(), getMapColumns(), false));
}
private static int getMapRows() {
return GameWindow.getRows() - 1;
}
private static int getMapColumns() {
return GameWindow.getColumns();
}
/**
* Writes a WorldMap to the screen. This erases all the content currently on the screen.
*
* @param map a WorldMap, not null
*/
private static void renderMap(@NotNull WorldMap map) {
DungeonString string = new DungeonString();
WorldMapSymbol[][] worldMapSymbolMatrix = map.getSymbolMatrix();
for (int i = 0; i < worldMapSymbolMatrix.length; i++) {
for (WorldMapSymbol symbol : worldMapSymbolMatrix[i]) {
// OK as setColor verifies if the color change is necessary (does not replace a color by itself).
string.setColor(symbol.getColor());
string.append(symbol.getCharacterAsString());
}
if (i < worldMapSymbolMatrix.length - 1) {
string.append("\n");
}
}
Writer.write(string);
}
}