comparison src/viewconsumer.d @ 4:292df259cc85

view + sprite consumers, animated sprite working
author fred@reichbier.de
date Fri, 18 Jul 2008 16:12:41 +0200
parents
children
comparison
equal deleted inserted replaced
3:a9af6ec19195 4:292df259cc85
1 module viewconsumer;
2
3 import dsfml.window.all;
4 import dsfml.system.all;
5 import dsfml.graphics.all;
6
7 import consumer;
8 import renderer;
9 import tango.io.Stdout;
10
11 /* That is a consumer which sets and manipulates the render window view */
12 class ViewConsumer : Consumer {
13 protected View view;
14
15 this(Renderer renderer) {
16 super(renderer);
17 // set the initial view
18 this.view = renderer.app.getView();
19 this.view.setFromRect(new FloatRect(0, 0, renderer.app.getWidth(), renderer.app.getHeight()));
20 this.update_view();
21 }
22
23 protected void update_view() {
24 this.renderer.app.setView(this.view);
25 }
26
27 void move_view(float x=0, float y=0) {
28 this.view.move(x, y);
29 }
30 }
31
32 class InteractiveViewConsumer : ViewConsumer {
33 this(Renderer renderer) {
34 super(renderer);
35 }
36
37 bool handle_event(Event evt) {
38 if (evt.Type == Event.EventType.KEYPRESSED) {
39 float x=0, y=0;
40 if(evt.Key.Code == KeyCode.LEFT) x -= 2;
41 if(evt.Key.Code == KeyCode.RIGHT) x += 2;
42 if(evt.Key.Code == KeyCode.UP) y -= 2;
43 if(evt.Key.Code == KeyCode.DOWN) y += 2;
44 if(x != 0 || y != 0) {
45 Stdout.formatln("{} fps", 1.0 / this.renderer.app.getFrameTime());
46 this.move_view(x, y);
47 return true;
48 }
49 }
50 return false;
51 }
52 }