2P11/src/View/MainWindow.cpp

95 lines
2.4 KiB
C++
Raw Normal View History

#include "MainWindow.hpp"
MainWindow::MainWindow(int width, int height, std::string title):
RenderWindow(sf::VideoMode(width,height), title,sf::Style::Titlebar | sf::Style::Close),
m_skin(),
m_windowMargin(10),
m_sizeCell(120),
m_spaceBetweenCell(10)
{
2015-05-03 17:18:10 +02:00
//Define original skin:
m_skin.push_back(sf::Color(250,248,239)); //Background MainWindow
m_skin.push_back(sf::Color(205,192,180)); //Background cells
m_skin.push_back(sf::Color(187,173,160)); //Background grid color
m_skin.push_back(sf::Color(119,110,101)); //2 and 4 font color
m_skin.push_back(sf::Color(249,246,242)); //other number font Color
//Skin 2 et le 4
m_skin.push_back(sf::Color(238,228,218)); //2
m_skin.push_back(sf::Color(237,224,200)); //4
//Skin 8 à 64
m_skin.push_back(sf::Color(242,177,121)); //8
m_skin.push_back(sf::Color(245,149,99)); //16
m_skin.push_back(sf::Color(246,124,95)); //32
m_skin.push_back(sf::Color(246,94,59)); //64
//Skin 128 à 2048
m_skin.push_back(sf::Color(237,207,114)); //128
m_skin.push_back(sf::Color(237,204,97)); //256
m_skin.push_back(sf::Color(237,200,80)); //512
m_skin.push_back(sf::Color(237,197,63)); //1024
m_skin.push_back(sf::Color(238,194,46)); //2048
//Skin for other number
m_skin.push_back(sf::Color(60,58,50)); //More than 2048
}
MainWindow::~MainWindow(){
}
void MainWindow::clearBG(){
RenderWindow::clear(m_skin.at(0));
}
void MainWindow::drawCells(){
2015-05-03 17:18:10 +02:00
int centerOffset=(800-(3*m_spaceBetweenCell+4*m_sizeCell))/2;
int distanceBetweenTopAndGrid=200;
int bgsize=3*m_spaceBetweenCell + 4*m_sizeCell + 2*m_spaceBetweenCell;
sf::RectangleShape gridBG(sf::Vector2f(bgsize, bgsize));
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);
}
}
}
2015-05-03 17:18:10 +02:00
sf::Color MainWindow::getCellColor(int value){
//Id of the first cell color skin
int idStart=5;
if(value%2==0){
int result(value);
int id(idStart);
while(result!=2){
result/=2;
id++;
}
return m_skin.at(id);
}
return m_skin.at(idStart+11);
}