module ground; import dsfml.graphics; import resourcemanager; /// Displays the ground class Ground : Drawable { private float offset = 0; static this() { assert(resource_manager.register!Texture("assets/ground.png", "ground")); } /// Move the ground by a given distance void move(float distance) { const tex = resource_manager.get!Texture("ground"); offset += distance; while(offset > tex.getSize.x) { offset -= tex.getSize.x; } } override void draw(RenderTarget target, RenderStates states) const { const tex = resource_manager.get!Texture("ground"); RectangleShape rs = new RectangleShape; rs.size(Vector2f(tex.getSize)); rs.position(Vector2f(-offset, target.getSize.y - tex.getSize.y)); rs.setTexture(tex); target.draw(rs, states); rs.move(Vector2f(tex.getSize.x, 0)); target.draw(rs, states); } }