Differences From Artifact [b301f73c74ef62f4]:
- File
src/output.d
- 2012-07-15 11:17:59 - part of checkin [ff0ab77d3d] on branch trunk - new game class. (user: kinaba) [annotate]
To Artifact [e2d0d7db868c3a44]:
- File
src/output.d
- 2012-07-15 11:26:58 - part of checkin [bd650eb3f9] on branch trunk - Output is now fully functional. (user: kinaba) [annotate]
14 this(in Game g) {} 14 this(in Game g) {}
15 override void on_game_changed(char c, in Game g, bool finished) 15 override void on_game_changed(char c, in Game g, bool finished)
16 { 16 {
17 stdout.write(c); 17 stdout.write(c);
18 stdout.flush(); 18 stdout.flush();
19 } 19 }
20 } 20 }
21 /* <
> 21
22 class GuardedOutput : GameObserver 22 class GuardedOutput : GameObserver
23 { 23 {
24 this(in Game g) 24 this(in Game g)
25 { 25 {
26 setup_sigint_handling(); 26 setup_sigint_handling();
27 score_log ~= g.score; 27 score_log ~= g.score;
28 flushed = false; 28 flushed = false;
................................................................................................................................................................................
31 override void on_game_changed(char c, in Game g, bool finished) 31 override void on_game_changed(char c, in Game g, bool finished)
32 { 32 {
33 if(flushed) 33 if(flushed)
34 return; 34 return;
35 35
36 log ~= c; 36 log ~= c;
37 score_log ~= g.score; 37 score_log ~= g.score;
38 if(finished || log.length+1==g.map.W*g.map.H) | 38 if(finished || log.length+1==g.W*g.H)
39 flush(); 39 flush();
40 } 40 }
41 41
42 private: 42 private:
43 string log; 43 string log;
44 long[] score_log; 44 long[] score_log;
45 bool flushed; 45 bool flushed;
................................................................................................................................................................................
68 { 68 {
69 assert(g_output is null); 69 assert(g_output is null);
70 g_output = this; 70 g_output = this;
71 extern(C) static void catch_sigint(int) { g_output.flush(); appl 71 extern(C) static void catch_sigint(int) { g_output.flush(); appl
72 core.stdc.signal.signal(SIGINT, &catch_sigint); 72 core.stdc.signal.signal(SIGINT, &catch_sigint);
73 } 73 }
74 } 74 }
75 */ <