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