summaryrefslogtreecommitdiff
path: root/src/View/MainWindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/View/MainWindow.cpp')
-rw-r--r--src/View/MainWindow.cpp71
1 files changed, 61 insertions, 10 deletions
diff --git a/src/View/MainWindow.cpp b/src/View/MainWindow.cpp
index 179b737..784effb 100644
--- a/src/View/MainWindow.cpp
+++ b/src/View/MainWindow.cpp
@@ -12,7 +12,7 @@ MainWindow::MainWindow(int width, int height, std::string title):
m_sizeCell(120),
m_spaceBetweenCell(10)
{
-
+ //Set windows size
m_windowSize=RenderWindow::getSize();
//Define original skin:
@@ -53,35 +53,85 @@ void MainWindow::clearBG(){
}
-void MainWindow::drawCells(){
+void MainWindow::drawGrid(std::vector<std::vector<int> > grid){
+ //Usefull variable
int centerOffset=(m_windowSize.x-(3*m_spaceBetweenCell+4*m_sizeCell))/2;
int distanceBetweenTopAndGrid=180;
- int bgsize=3*m_spaceBetweenCell + 4*m_sizeCell + 2*m_spaceBetweenCell;
- sf::RectangleShape gridBG(sf::Vector2f(bgsize, bgsize));
+ int gridsize=3*m_spaceBetweenCell + 4*m_sizeCell + 2*m_spaceBetweenCell;
+
+ //First draw the grid
+ sf::RectangleShape gridBG(sf::Vector2f(gridsize, gridsize));
gridBG.setFillColor(m_skin.at(2));
gridBG.setPosition(centerOffset-m_spaceBetweenCell,distanceBetweenTopAndGrid - m_spaceBetweenCell);
RenderWindow::draw(gridBG);
+
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
- sf::RectangleShape cell(sf::Vector2f(m_sizeCell, m_sizeCell));
- cell.setFillColor(m_skin.at(1));
- cell.setPosition(centerOffset+j*(m_sizeCell+m_spaceBetweenCell),distanceBetweenTopAndGrid+i*(m_sizeCell+m_spaceBetweenCell));
- RenderWindow::draw(cell);
+ int x=centerOffset+j*(m_sizeCell+m_spaceBetweenCell);
+ int y=distanceBetweenTopAndGrid+i*(m_sizeCell+m_spaceBetweenCell);
+ int value=grid.at(i).at(j);
+ this->drawCell(x,y,value);
}
}
}
+void MainWindow::drawCell(int x, int y, int value){
+
+ //Init RectangleShape
+ sf::RectangleShape cell(sf::Vector2f(m_sizeCell, m_sizeCell));
+
+ //Define color, checking skin
+ cell.setFillColor(this->getCellColor(value));
+
+ //Set position
+ cell.setPosition(x,y);
+
+ //Draw the cell
+ RenderWindow::draw(cell);
+
+
+ std::stringstream valueStream;
+ valueStream << value;
+
+ std::string valueString(valueStream.str());
+
+ int fontSize(m_sizeCell/2);
+ int valueSize(valueString.size());
+
+
+ int fontX=x+(m_sizeCell/2)-((valueSize*(fontSize-20))/2);
+ int fontY=y+(m_sizeCell/2)-(fontSize/2)-10;
+
+
+ sf::Font font;
+ font.loadFromFile("./src/skin/original/Pragmatica-Medium.ttf");
+ sf::Text text;
+ text.setFont(font);
+ text.setCharacterSize(fontSize);
+ text.setString(valueString);
+ if(value==2 || value==4)
+ text.setColor(m_skin.at(3));
+ else
+ text.setColor(m_skin.at(4));
+ text.setPosition(fontX,fontY);
+
+ if(value != 0)
+ RenderWindow::draw(text);
+}
sf::Color MainWindow::getCellColor(int value){
//Id of the first cell color skin
int idStart=5;
- if(value%2==0){
+ if(value==0){
+ return m_skin.at(1);
+ }
+ else if(value%2==0){
int result(value);
int id(idStart);
while(result!=2){
@@ -91,6 +141,7 @@ sf::Color MainWindow::getCellColor(int value){
return m_skin.at(id);
}
-
return m_skin.at(idStart+11);
}
+
+