Diff
Not logged in

Differences From Artifact [b301f73c74ef62f4]:

To Artifact [e2d0d7db868c3a44]:


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 */ <