1 module ground; 2 3 import dsfml.graphics; 4 import resourcemanager; 5 6 /// Displays the ground 7 class Ground : Drawable { 8 private float offset = 0; 9 10 static this() { 11 assert(resource_manager.register!Texture("assets/ground.png", "ground")); 12 } 13 14 /// Move the ground by a given distance 15 void move(float distance) { 16 const tex = resource_manager.get!Texture("ground"); 17 18 offset += distance; 19 while(offset > tex.getSize.x) { 20 offset -= tex.getSize.x; 21 } 22 } 23 24 override void draw(RenderTarget target, RenderStates states) const { 25 const tex = resource_manager.get!Texture("ground"); 26 27 RectangleShape rs = new RectangleShape; 28 rs.size(Vector2f(tex.getSize)); 29 rs.position(Vector2f(-offset, target.getSize.y - tex.getSize.y)); 30 rs.setTexture(tex); 31 32 target.draw(rs, states); 33 rs.move(Vector2f(tex.getSize.x, 0)); 34 target.draw(rs, states); 35 } 36 }