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