package ge.edu.freeuni.sdp.snake;
import ge.edu.freeuni.sdp.snake.model.Configuration;
import ge.edu.freeuni.sdp.snake.model.Level;
import ge.edu.freeuni.sdp.snake.model.Size;
import ge.edu.freeuni.sdp.snake.view.ViewController;
import ge.edu.freeuni.sdp.snake.view.terminal.TerminalViewFactory;
import java.nio.charset.Charset;
import java.util.List;
import com.googlecode.lanterna.TerminalFacade;
import com.googlecode.lanterna.terminal.Terminal;
import com.googlecode.lanterna.terminal.TerminalSize;
public class App {
public static void main(String[] args) {
Terminal terminal = getTerminal();
Size size = getSize(terminal);
List<Level> levels = LevelRegistry.getLevels();
Configuration.init(size, levels);
TerminalViewFactory viewFactory = new TerminalViewFactory(terminal);
ViewController controller = new ViewController(viewFactory);
controller.run();
terminal.exitPrivateMode();
}
private static Terminal getTerminal() {
Terminal terminal = TerminalFacade.createTerminal(System.in,
System.out, Charset.forName("UTF8"));
terminal.enterPrivateMode();
terminal.clearScreen();
terminal.setCursorVisible(false);
return terminal;
}
private static Size getSize(Terminal terminal) {
TerminalSize terminalSize = terminal.getTerminalSize();
int width = terminalSize.getColumns();
int height = terminalSize.getRows();
Size size = new Size(width, height);
return size;
}
}