#include "score.hpp"


Score::Score() {
    ASSERT(_texture.loadFromFile(_spriteFile));
    _scoreSprite.push_back(sf::Sprite());
    _scoreSprite[0].setTexture(_texture);
    _score = 0;
    setScore();
}


Score::Score(int num) : Score() {
    if (num == 0) {
        _posX = W_WIDTH*0.15f;
        _posY = W_HEIGHT*0.05f;
    }
    else {
        _posX = W_WIDTH*0.75f;
        _posY = W_HEIGHT*0.05f;
    }
    _scoreSprite[0].setPosition(_posX, _posY);
}

void Score::draw(sf::RenderWindow *window){
    for (int i = 0; i < _scoreSprite.size(); ++i)
        window->draw(_scoreSprite[i]);
}

void Score::incrisScore() {
    ++_score;
    setScore();
}


void Score::setScore() {
    int height = _texture.getSize().y;
    int width  = _texture.getSize().x/10;
    int s = _score;
    for (int i = 0; i < _scoreSprite.size(); ++i) {
        int num = s%10;
        s = s/10;
        sf::IntRect rect = sf::IntRect(num*width, 0, width, height);
        _scoreSprite[i].setTextureRect(rect);
    }
    while (s > 0) {
        int num = s%10;
        s = s/10;
        _scoreSprite.push_back(sf::Sprite());
        int i = _scoreSprite.size() - 1;
        _scoreSprite[i].setTexture(_texture);
        sf::IntRect rect = sf::IntRect(num*width, 0, width, height);
        _scoreSprite[i].setTextureRect(rect);
        _scoreSprite[i].setPosition(_posX-(width*i),_posY);
    }
}