module counter; import std.conv; import std.algorithm; import dsfml.graphics; import resourcemanager; static this() { assert(resource_manager.register!Texture("assets/digits.png", "digits")); } private uint[] digits(uint num) { uint[] res; while(num != 0) { res ~= num % 10; num /= 10; } if(res.length == 0) { res ~= 0; } return res.reverse; } /// Shows points class Counter : Drawable { /// Number of points uint num = 0; override void draw(RenderTarget target, RenderStates states) { auto sprite = new Sprite(resource_manager.get!Texture("digits")); const horizontal_offset = target.getSize.x - 5 - 10 * num.digits.length; foreach(i, digit; num.digits) { sprite.position(Vector2f(horizontal_offset + 10 * i, 5)); sprite.textureRect(IntRect((10 * digit).to!int, 0, 10, 11)); target.draw(sprite, states); } } }