package ge.edu.freeuni.sdp.snake.view.terminal;
import com.googlecode.lanterna.input.Key;
import com.googlecode.lanterna.input.Key.Kind;
import com.googlecode.lanterna.terminal.Terminal;
import com.googlecode.lanterna.terminal.TerminalSize;
import ge.edu.freeuni.sdp.snake.presenter.GameOverPresenter;
import ge.edu.freeuni.sdp.snake.view.GameOverView;
public class TerminalGameOverView implements GameOverView {
private Terminal _terminal;
private boolean _continueGame;
public TerminalGameOverView(GameOverPresenter presenter, Terminal terminal) {
_terminal = terminal;
_continueGame = false;
}
@Override
public void show() {
_terminal.clearScreen();
String[] names = { " Game Over ",
"Do you want to play again?", " Press Y to play again.",
" Press N or ESC to quit." };
TerminalSize screenSize = _terminal.getTerminalSize();
for (int i = 0; i < names.length; i++) {
_terminal.moveCursor(screenSize.getColumns() / 2 - 15,
screenSize.getRows() / 2 - 2 + i);
writeLine(String.format("%s", names[i]));
}
_terminal.flush();
while (true) {
Key p = _terminal.readInput();
if (p == null)
continue;
char ch = p.getCharacter();
if (p.getKind() == Kind.Escape || ch == 'n')
break;
if (ch == 'y') {
_continueGame = true;
break;
}
}
}
@Override
public boolean continueGameOrNot() {
return _continueGame;
}
private void writeLine(String print) {
char[] printToChar = print.toCharArray();
for (int i = 0; i < print.length(); i++) {
_terminal.putCharacter(printToChar[i]);
}
}
}