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 }