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 }