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 }