diff options
Diffstat (limited to 'src/View')
| -rw-r--r-- | src/View/MainWindow.cpp | 68 | ||||
| -rw-r--r-- | src/View/MainWindow.hpp | 5 |
2 files changed, 58 insertions, 15 deletions
diff --git a/src/View/MainWindow.cpp b/src/View/MainWindow.cpp index 659450f..23b8677 100644 --- a/src/View/MainWindow.cpp +++ b/src/View/MainWindow.cpp @@ -18,7 +18,7 @@ MainWindow::MainWindow(int width, int height, std::string title): //Set windows size m_windowSize=RenderWindow::getSize(); - m_gridPosition=sf::Vector2u(50,200); + m_gridPosition=sf::Vector2u(0,200); @@ -75,6 +75,11 @@ void MainWindow::drawGrid(std::vector<std::vector<int> > grid, bool gameIsOver){ m_gridSize.x=(grid.at(0).size()*m_cellSize.x)+(grid.at(0).size()*m_spaceBetweenCell)+m_spaceBetweenCell; m_gridSize.y=(grid.size()*m_cellSize.y)+(grid.size()*m_spaceBetweenCell)+m_spaceBetweenCell; + //Center: + m_gridPosition.x=m_windowSize.x/2-m_gridSize.x/2; + m_gridPosition.y=220; + + //Draw the grid sf::RectangleShape gridShape(sf::Vector2f(m_gridSize.x,m_gridSize.y)); gridShape.setFillColor(m_skin.at(2)); @@ -97,7 +102,6 @@ void MainWindow::drawGrid(std::vector<std::vector<int> > grid, bool gameIsOver){ if(gameIsOver) this->drawGameOver(gridX,gridY); - this->drawATH(); } @@ -177,7 +181,7 @@ void MainWindow::drawGameOver(int gridX, int gridY){ } -void MainWindow::drawATH(){ +void MainWindow::drawATH(Stats stats){ int titleX=m_gridPosition.x; int titleY=m_gridPosition.y-190; @@ -195,21 +199,57 @@ void MainWindow::drawATH(){ RenderWindow::draw(text); - //==================== Draw score ==================== + //==================== Draw best score ==================== + + int scoreAndBestScoreFontSize(20); - int scoreSizeX=110; - int scoreX=m_gridPosition.x+m_gridSize.x-scoreSizeX; + int bestScoreSizeX=110; + int bestScoreSizeY=60; + int bestScoreX=m_gridPosition.x+m_gridSize.x-bestScoreSizeX; + int bestScoreY=titleY+25; + + sf::RectangleShape bestScoreShape(sf::Vector2f(bestScoreSizeX,bestScoreSizeY)); + bestScoreShape.setFillColor(m_skin.at(2)); + bestScoreShape.setPosition(bestScoreX,bestScoreY); + RenderWindow::draw(bestScoreShape); + + text.setString("BEST"); + text.setPosition(bestScoreX+bestScoreSizeY-scoreAndBestScoreFontSize-5,bestScoreY+12); + text.setCharacterSize(scoreAndBestScoreFontSize-5); + text.setColor(m_skin.at(7)); + + RenderWindow::draw(text); + + //==================== Draw score ==================== + + int scoreX=bestScoreX-bestScoreSizeX-5; + int scoreY=bestScoreY; + int scoreSizeX=bestScoreSizeX; + int scoreSizeY=bestScoreSizeY; + int scoreLength=std::to_string(stats.getScore()).size(); - sf::RectangleShape scoreShape(sf::Vector2f(scoreSizeX,60)); + sf::RectangleShape scoreShape(sf::Vector2f(scoreSizeX,scoreSizeY)); scoreShape.setFillColor(m_skin.at(2)); - scoreShape.setPosition(scoreX,titleY+25); + scoreShape.setPosition(scoreX,scoreY); RenderWindow::draw(scoreShape); - //==================== Draw best score ==================== - - sf::RectangleShape bestScoreShape(sf::Vector2f(scoreSizeX,60)); - bestScoreShape.setFillColor(m_skin.at(2)); - bestScoreShape.setPosition(scoreX-scoreSizeX-5,titleY+25); - RenderWindow::draw(bestScoreShape); + text.setString("SCORE"); + text.setPosition(scoreX+scoreSizeY-scoreAndBestScoreFontSize-10,scoreY+12); + text.setCharacterSize(scoreAndBestScoreFontSize-5); + text.setColor(m_skin.at(7)); + + RenderWindow::draw(text); + + text.setString(std::to_string(stats.getScore())); + text.setPosition(scoreX+scoreSizeY-((scoreLength+20)/2)-scoreAndBestScoreFontSize+10,scoreY+scoreSizeY - scoreAndBestScoreFontSize-10); + text.setCharacterSize(scoreAndBestScoreFontSize); + text.setColor(sf::Color::White); + + RenderWindow::draw(text); +} + +void MainWindow::drawGame(std::vector<std::vector<int> > grid, bool gameIsOver, Stats stats){ + this->drawGrid(grid,gameIsOver); + this->drawATH(stats); } diff --git a/src/View/MainWindow.hpp b/src/View/MainWindow.hpp index 729b961..072a7ec 100644 --- a/src/View/MainWindow.hpp +++ b/src/View/MainWindow.hpp @@ -5,6 +5,7 @@ #include <vector> #include <string> #include <sstream> +#include "../Model/Stats.hpp" #include <SFML/Window.hpp> #include <SFML/Graphics.hpp> @@ -36,5 +37,7 @@ class MainWindow : public sf::RenderWindow{ void drawGameOver(int gridX, int griY); - void drawATH(); + void drawATH(Stats stats); + + void drawGame(std::vector<std::vector<int> > grid, bool gameIsOver, Stats stats); }; |
