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 }