50 lines
1.3 KiB
Java
50 lines
1.3 KiB
Java
package gui.menu;
|
|
|
|
import game.Player;
|
|
import gui.ColorGenerator;
|
|
import gui.widget.SudokuRenderer;
|
|
import imgui.ImGui;
|
|
import imgui.ImVec4;
|
|
import sudoku.structure.MultiDoku;
|
|
|
|
public class EndGameView extends BaseView {
|
|
|
|
private final Player winner;
|
|
private float time = 0;
|
|
|
|
private static final ImVec4 YELLOW = new ImVec4(1, 1, 0, 1);
|
|
|
|
private final SudokuRenderer sudokuRenderer;
|
|
|
|
public EndGameView(StateMachine stateMachine, MultiDoku resolved, Player winner) {
|
|
super(stateMachine);
|
|
this.winner = winner;
|
|
this.sudokuRenderer = new SudokuRenderer(resolved);
|
|
}
|
|
|
|
private ImVec4 getPseudoColor() {
|
|
time += ImGui.getIO().getDeltaTime();
|
|
float factor = (float) Math.cos(time);
|
|
var color = ColorGenerator.hslToRgb(factor * factor, 0.9f, 0.4f);
|
|
return new ImVec4(color.r, color.g, color.b, 1.0f);
|
|
}
|
|
|
|
private void renderWinText() {
|
|
String winText = " a gagné !";
|
|
String text = winner.getPseudo() + winText;
|
|
float textWidth = ImGui.calcTextSizeX(text);
|
|
ImGui.setCursorPosX(ImGui.getIO().getDisplaySizeX() / 2.0f - textWidth / 2.0f);
|
|
ImGui.textColored(getPseudoColor(), winner.getPseudo());
|
|
ImGui.sameLine();
|
|
ImGui.textColored(YELLOW, winText);
|
|
}
|
|
|
|
@Override
|
|
public void render() {
|
|
renderWinText();
|
|
this.sudokuRenderer.render();
|
|
renderReturnButton();
|
|
}
|
|
|
|
}
|