annotate import/myrrdin/viewconsumer.d @ 5:f4b89014ad39

added moving figure stuff + animated sprites. not usable atm.
author fred@reichbier.de
date Sat, 19 Jul 2008 14:33:08 +0200
parents src/viewconsumer.d@292df259cc85
children 510541745cd1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
1 /*
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
2 This file is part of myrrdin.
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
3
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
4 myrrdin is free software: you can redistribute it and/or modify
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
5 it under the terms of the GNU Lesser General Public License as
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
6 published by the Free Software Foundation, either version 3 of
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
7 the License, or (at your option) any later version.
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
8
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
9 myrrdin is distributed in the hope that it will be useful,
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
12 GNU Lesser General Public License for more details.
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
13
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
14 You should have received a copy of the GNU Lesser General Public
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
15 License along with myrrdin. If not, see <http://www.gnu.org/licenses/>.
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
16 */
f4b89014ad39 added moving figure stuff + animated sprites. not usable atm.
fred@reichbier.de
parents: 4
diff changeset
17
4
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
18 module viewconsumer;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
19
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
20 import dsfml.window.all;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
21 import dsfml.system.all;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
22 import dsfml.graphics.all;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
23
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
24 import consumer;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
25 import renderer;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
26 import tango.io.Stdout;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
27
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
28 /* 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
29 class ViewConsumer : Consumer {
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
30 protected View view;
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 this(Renderer renderer) {
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
33 super(renderer);
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
34 // set the initial view
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
35 this.view = renderer.app.getView();
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
36 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
37 this.update_view();
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
38 }
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
39
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
40 protected void update_view() {
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
41 this.renderer.app.setView(this.view);
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
42 }
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
43
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
44 void move_view(float x=0, float y=0) {
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
45 this.view.move(x, y);
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
46 }
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
47 }
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 class InteractiveViewConsumer : ViewConsumer {
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
50 this(Renderer renderer) {
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
51 super(renderer);
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
52 }
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
53
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
54 bool handle_event(Event evt) {
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
55 if (evt.Type == Event.EventType.KEYPRESSED) {
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
56 float x=0, y=0;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
57 if(evt.Key.Code == KeyCode.LEFT) x -= 2;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
58 if(evt.Key.Code == KeyCode.RIGHT) x += 2;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
59 if(evt.Key.Code == KeyCode.UP) y -= 2;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
60 if(evt.Key.Code == KeyCode.DOWN) y += 2;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
61 if(x != 0 || y != 0) {
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
62 Stdout.formatln("{} fps", 1.0 / this.renderer.app.getFrameTime());
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
63 this.move_view(x, y);
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
64 return true;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
65 }
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
66 }
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
67 return false;
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
68 }
292df259cc85 view + sprite consumers, animated sprite working
fred@reichbier.de
parents:
diff changeset
69 }