aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/controller/MainWindowController.java
diff options
context:
space:
mode:
authorloic <git-account@loicguegan.fr>2016-09-23 09:37:06 +0200
committerloic <git-account@loicguegan.fr>2016-09-23 09:37:06 +0200
commitcb117797a68cf912b2c58d6e61b1e12025baace2 (patch)
treeabab09d1403d32747563693a854083d501d1817b /src/main/java/controller/MainWindowController.java
parent8f45d6ced9e75ab382ea302050fd8fa86ea55468 (diff)
Clean codeHEADmaster
Diffstat (limited to 'src/main/java/controller/MainWindowController.java')
-rw-r--r--src/main/java/controller/MainWindowController.java61
1 files changed, 31 insertions, 30 deletions
diff --git a/src/main/java/controller/MainWindowController.java b/src/main/java/controller/MainWindowController.java
index 253ce33..21d0072 100644
--- a/src/main/java/controller/MainWindowController.java
+++ b/src/main/java/controller/MainWindowController.java
@@ -1,23 +1,15 @@
package controller;
-import adapter.IModelAdapter;
import adapter.ModelAdapter;
-import javafx.event.ActionEvent;
-import javafx.event.EventHandler;
+import javafx.event.*;
import javafx.fxml.FXML;
-import javafx.scene.Group;
import javafx.scene.Scene;
-import javafx.scene.canvas.Canvas;
-import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.canvas.*;
import javafx.scene.control.Button;
import javafx.scene.input.KeyEvent;
-import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
-import javafx.scene.text.Font;
-import javafx.scene.text.Text;
-import model.Board;
-import model.IModel;
-import model.LineAlgorithm;
+import javafx.scene.text.*;
+import model.*;
import observer.IObserver;
@@ -29,21 +21,28 @@ public class MainWindowController implements IObserver {
@FXML Canvas boardCanvas;
@FXML Text score;
@FXML Button restartButton;
+
+
private ModelAdapter adapter;
private IModel model;
-
private int squareSize=100;
private int squarePadding=10;
private int[] boardPosition={30,0};
private int fontSize=60;
-
+ /**
+ * Load component required to the view
+ * @param adapter
+ * @param model
+ * @param scene
+ */
public void loadComponent(ModelAdapter adapter, IModel model, Scene scene){
this.adapter=adapter;
this.model=model;
- this.update();
+ this.update(); // Draw board
+ // Catch keyboard keys
scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
@@ -95,33 +94,36 @@ public class MainWindowController implements IObserver {
}
-
+ /**
+ * Draw the grid
+ */
private void draw(){
-
-
+ // Set score font and draw
this.score.setFont(new Font(40));
-
if(this.adapter.isLoosed()){
this.score.setText("Score : " + this.model.getScore() + "\n You loose !!!");
}
else{
this.score.setText("Score : " + this.model.getScore());
}
+
+ // Get board
int[][] board=this.model.getBoard();
+ // Draw board
GraphicsContext gc = boardCanvas.getGraphicsContext2D();
gc.clearRect(0,0,500,500);
-
gc.setFill(Color.rgb(187,173,160));
gc.fillRect(this.boardPosition[0],this.boardPosition[1], ((this.squareSize+squarePadding)*board.length)+squarePadding, ((this.squareSize+squarePadding)*board[0].length)+squarePadding);
-
-
-
+ // Draw cells
for(int i=0; i<board.length;i++) {
for (int j = 0; j < board[i].length; j++) {
+ // Get value
int value=board[i][j];
+
+ // Apply theme
switch (value){
case -1:
gc.setFill(Color.rgb(202,192,180));
@@ -164,25 +166,26 @@ public class MainWindowController implements IObserver {
break;
}
-
+ // Build coordinates
int x=this.boardPosition[0] + (j*this.squareSize);
x+=(j+1)*squarePadding;
-
int y=this.boardPosition[1] + (i*this.squareSize);
y+=(i+1)*squarePadding;
-
+ // Draw cell
gc.fillRect(x,y, this.squareSize, this.squareSize);
+ // Build number font color
if(value>2048) {
gc.setFill(Color.WHITE);
}
else{
gc.setFill(Color.BLACK);
-
}
+ // Draw if value is greeter than 0
if(value>0){
+ // Ajuste font position
String strValue=""+value;
int localFontSize=fontSize;
if(strValue.length()==3){
@@ -193,12 +196,10 @@ public class MainWindowController implements IObserver {
else if(strValue.length()>4){
localFontSize=localFontSize/4;
}
-
gc.setFont(new Font(localFontSize));
+ // Write value
gc.fillText(strValue, x + (this.squareSize / 2) - ((localFontSize/4)+strValue.length()*localFontSize/5) , y + (this.squareSize / 2) + (localFontSize /3));
}
-
-
}
}
}