diff options
Diffstat (limited to 'src/View/MainWindow.cpp')
| -rw-r--r-- | src/View/MainWindow.cpp | 71 |
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); } + + |
