diff --git a/res/numerals.png b/res/numerals.png index f3b9a9d..cbb190c 100644 Binary files a/res/numerals.png and b/res/numerals.png differ diff --git a/src/Main.cpp b/src/Main.cpp index 06e9c0d..73dd4d2 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -30,13 +30,16 @@ class NumberRenderer { public: - sf::IntRect numeral_rects[10]; sf::Texture texture; + sf::IntRect comma_rect; + sf::IntRect numeral_rects[10]; NumberRenderer( sf::Texture _texture, + sf::IntRect _comma_rect, std::initializer_list _numeral_rects ) { texture = _texture; + comma_rect = _comma_rect; sprite = sf::Sprite(texture); int i = 0; for (auto numeral_rect = _numeral_rects.begin(); numeral_rect != _numeral_rects.end(); ++numeral_rect) { @@ -50,15 +53,26 @@ class NumberRenderer { numeral_string.push_back(number_string.back()); auto numeral_rect = numeral_rects[std::stoi(numeral_string)]; int x_offset = -numeral_rect.width; - for (int i = number_string.length() - 1; i >= 0; i--) { - char numeral_string[] = {number_string[i]}; // stoi requires string (char[]) not char + uint digits = number_string.length(); + for (int i = digits - 1; i >= 0; i--) { + char numeral_string[] = {number_string[i]}; auto numeral_rect = numeral_rects[std::stoi(numeral_string)]; + if ((digits - i) % 3 == 1 && i != digits - 1) { + sprite.setTextureRect(comma_rect); + sprite.setPosition(x + x_offset, y); + window->draw(sprite); + x_offset -= numeral_rect.width; + } sprite.setTextureRect(numeral_rect); sprite.setPosition(x + x_offset, y); window->draw(sprite); if (i == 0) { break; } + if ((digits - i) % 3 == 0) { + x_offset -= comma_rect.width; + continue; + } numeral_string[0] = number_string[i - 1]; numeral_rect = numeral_rects[std::stoi(numeral_string)]; x_offset -= numeral_rect.width; @@ -239,7 +253,7 @@ int main() sf::Texture numeral_texture; numeral_texture.loadFromFile("../res/numerals.png"); - NumberRenderer number_renderer(numeral_texture, { + NumberRenderer number_renderer(numeral_texture, sf::IntRect(134, 0, 10, 16), { sf::IntRect(0, 0, 14, 16), sf::IntRect(14, 0, 8, 16), sf::IntRect(22, 0, 14, 16), @@ -403,6 +417,8 @@ int main() } } } else { + tiles += block.get_tiles().size(); + blocks++; for (auto tile : block.get_tiles()) { grid[tile.y][tile.x] = block.type->tile_type; } @@ -428,8 +444,6 @@ int main() } } block = Block(); - tiles += block.get_tiles().size(); - blocks++; } else if(is_update_frame) { block.position.y++; }