Mercurial > hg > early-roguelike
comparison rogue3/rip.c @ 16:a731f515575e
rogue3: add the option of logging all games to a text file
| author | edwarj4 |
|---|---|
| date | Tue, 10 Nov 2009 22:38:46 +0000 |
| parents | 78df7025783b |
| children | d67cac79f0f1 |
comparison
equal
deleted
inserted
replaced
| 15:7ef854484e08 | 16:a731f515575e |
|---|---|
| 75 mvaddstr(16, 33, vowelstr(killer)); | 75 mvaddstr(16, 33, vowelstr(killer)); |
| 76 sprintf(prbuf, "%4d", 1900+lt->tm_year); | 76 sprintf(prbuf, "%4d", 1900+lt->tm_year); |
| 77 mvaddstr(18, 26, prbuf); | 77 mvaddstr(18, 26, prbuf); |
| 78 move(LINES-1, 0); | 78 move(LINES-1, 0); |
| 79 draw(stdscr); | 79 draw(stdscr); |
| 80 log(purse, 0, monst); | |
| 80 score(purse, 0, monst); | 81 score(purse, 0, monst); |
| 81 /* Make sure all the output gets through ssh and | 82 /* Make sure all the output gets through ssh and |
| 82 anything else that might be in the way. */ | 83 anything else that might be in the way. */ |
| 83 printf("[Press return to exit]\n"); | 84 printf("[Press return to exit]\n"); |
| 84 fflush(NULL); | 85 fflush(NULL); |
| 115 } | 116 } |
| 116 #else | 117 #else |
| 117 scoreboard = NULL; | 118 scoreboard = NULL; |
| 118 #endif | 119 #endif |
| 119 } | 120 } |
| 121 | |
| 122 #if 0 /* not necessary */ | |
| 123 /* Same thing, but for the log file. Maybe combine them eventually. */ | |
| 124 /* FIXME you don't know what this does */ | |
| 125 void open_log(void) | |
| 126 { | |
| 127 #ifdef LOGFILE | |
| 128 if (logf != NULL) { | |
| 129 rewind(logf); | |
| 130 return; | |
| 131 } | |
| 132 | |
| 133 logf = fopen(LOGFILE, "a"); | |
| 134 | |
| 135 if (logf == NULL) | |
| 136 { | |
| 137 fprintf(stderr, "Could not open %s for appending: %s\n", LOGFILE, strerror(errno)); | |
| 138 fflush(stderr); | |
| 139 } | |
| 140 #else | |
| 141 logf == NULL; | |
| 142 #endif | |
| 143 return; | |
| 144 } | |
| 145 #endif | |
| 120 | 146 |
| 121 /* VARARGS2 */ | 147 /* VARARGS2 */ |
| 122 void | 148 void |
| 123 score(int amount, int flags, int monst) | 149 score(int amount, int flags, int monst) |
| 124 { | 150 { |
| 284 } | 310 } |
| 285 | 311 |
| 286 md_unlockfile(outf); | 312 md_unlockfile(outf); |
| 287 | 313 |
| 288 fclose(outf); | 314 fclose(outf); |
| 315 } | |
| 316 | |
| 317 void log(int amount, int flags, int monst) | |
| 318 { | |
| 319 char logmessage[160], ltemp[80]; | |
| 320 char *killer; | |
| 321 | |
| 322 if (waswizard) | |
| 323 return; | |
| 324 #ifdef LOGFILE | |
| 325 sprintf(logmessage, "%d %d %.20s ", time(NULL), amount, whoami); | |
| 326 if (flags == 0) /* died */ | |
| 327 { | |
| 328 strcat(logmessage, "killed by a"); | |
| 329 killer = killname(monst); | |
| 330 if (*killer == 'a' || *killer == 'e' || *killer == 'i' || | |
| 331 *killer == 'o' || *killer == 'u') | |
| 332 strcat(logmessage, "n "); | |
| 333 else | |
| 334 strcat(logmessage, " "); | |
| 335 strcat(logmessage, killer); | |
| 336 if (max_level > level) | |
| 337 sprintf(ltemp, " on level %d [max %d]\n", level, max_level); | |
| 338 else | |
| 339 sprintf(ltemp, " on level %d\n", level); | |
| 340 strcat(logmessage, ltemp); | |
| 341 } | |
| 342 else if (flags == 1) /* quit */ | |
| 343 { | |
| 344 if (max_level > level) | |
| 345 sprintf(ltemp, "quit on level %d [max %d]\n", level, max_level); | |
| 346 else | |
| 347 sprintf(ltemp, "quit on level %d\n", level); | |
| 348 strcat(logmessage, ltemp); | |
| 349 } | |
| 350 else if (flags == 2) /* won */ | |
| 351 { | |
| 352 sprintf(ltemp, "escaped with the Amulet found on level %d\n", max_level); | |
| 353 strcat(logmessage, ltemp); | |
| 354 } | |
| 355 else | |
| 356 return; | |
| 357 | |
| 358 logf = fopen(LOGFILE, "a"); /* permissions? */ | |
| 359 if (logf == NULL) | |
| 360 return; | |
| 361 /* and write it */ | |
| 362 md_lockfile(logf); | |
| 363 fprintf(logf, "%s", logmessage); | |
| 364 md_unlockfile(logf); | |
| 365 fclose(logf); | |
| 366 #endif | |
| 367 return; | |
| 289 } | 368 } |
| 290 | 369 |
| 291 void | 370 void |
| 292 total_winner() | 371 total_winner() |
| 293 { | 372 { |
| 392 mvprintw(c - 'a' + 1, 0, "%c) %5d %s", c, worth, inv_name(obj, FALSE)); | 471 mvprintw(c - 'a' + 1, 0, "%c) %5d %s", c, worth, inv_name(obj, FALSE)); |
| 393 purse += worth; | 472 purse += worth; |
| 394 } | 473 } |
| 395 mvprintw(c - 'a' + 1, 0," %5d Gold Peices ", oldpurse); | 474 mvprintw(c - 'a' + 1, 0," %5d Gold Peices ", oldpurse); |
| 396 refresh(); | 475 refresh(); |
| 476 log(purse, 2, 0); | |
| 397 score(purse, 2, 0); | 477 score(purse, 2, 0); |
| 398 exit(0); | 478 exit(0); |
| 399 } | 479 } |
| 400 | 480 |
| 401 char * | 481 char * |
