annotate src/renderer.d @ 0:a2d653eb9e99

first working version.
author fred@reichbier.de
date Thu, 17 Jul 2008 18:52:55 +0200
parents
children 292df259cc85
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
1 module renderer;
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
2
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
3 import dsfml.window.all;
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
4 import dsfml.system.all;
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
5 import dsfml.graphics.all;
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
6
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
7 import consumer;
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
8 import imagecache;
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
9
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
10 class Renderer {
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
11 public RenderWindow app;
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
12 public Cache cache;
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
13 private Consumer[] consumers;
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
14
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
15 this(char[] title, int width, int height, int depth=32) {
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
16 this.app = new RenderWindow(VideoMode(width, height, depth), title);
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
17 this.app.setFramerateLimit(40);
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
18
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
19 this.cache = new Cache("."); // TODO
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
20 }
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
21
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
22 void add_consumer(Consumer consumer) {
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
23 this.consumers ~= consumer;
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
24 }
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
25
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
26 /* start the mainloop */
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
27 void mainloop() {
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
28 Event evt;
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
29
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
30 while(this.app.isOpened()) {
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
31 // handle all events
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
32 while(this.app.getEvent(evt)) {
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
33 if (evt.Type == Event.EventType.CLOSED) {
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
34 this.app.close();
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
35 }
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
36 }
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
37 // draw all
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
38 foreach(Consumer consumer; this.consumers) {
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
39 consumer.draw();
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
40 }
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
41 // display all
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
42 this.app.display();
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
43 }
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
44 }
a2d653eb9e99 first working version.
fred@reichbier.de
parents:
diff changeset
45 }