1 module counter;
2
3 import std.conv;
4 import std.algorithm;
5 import dsfml.graphics;
6 import resourcemanager;
7
8 static this() {
9 assert(resource_manager.register!Texture("assets/digits.png", "digits"));
10 }
11
12 private uint[] digits(uint num) {
13 uint[] res;
14 while(num != 0) {
15 res ~= num % 10;
16 num /= 10;
17 }
18 if(res.length == 0) {
19 res ~= 0;
20 }
21 return res.reverse;
22 }
23
24 /// Shows points
25 class Counter : Drawable {
26 /// Number of points
27 uint num = 0;
28
29 override void draw(RenderTarget target, RenderStates states) {
30 auto sprite = new Sprite(resource_manager.get!Texture("digits"));
31 const horizontal_offset = target.getSize.x - 5 - 10 * num.digits.length;
32 foreach(i, digit; num.digits) {
33 sprite.position(Vector2f(horizontal_offset + 10 * i, 5));
34 sprite.textureRect(IntRect((10 * digit).to!int, 0, 10, 11));
35 target.draw(sprite, states);
36 }
37 }
38 }