Mercurial > hg > early-roguelike
comparison arogue5/rip.c @ 65:7aff18a8d508
arogue5: implement logging.
| author | elwin |
|---|---|
| date | Fri, 10 Aug 2012 21:17:14 +0000 |
| parents | 0ed67132cf10 |
| children | c49f7927b0fa |
comparison
equal
deleted
inserted
replaced
| 64:a98834ce7e04 | 65:7aff18a8d508 |
|---|---|
| 113 killer = killname(monst); | 113 killer = killname(monst); |
| 114 mvaddstr(17, 28-((strlen(killer)+1)/2), killer); | 114 mvaddstr(17, 28-((strlen(killer)+1)/2), killer); |
| 115 mvaddstr(18, 26, (sprintf(prbuf, "%4d", 1900+lt->tm_year), prbuf)); | 115 mvaddstr(18, 26, (sprintf(prbuf, "%4d", 1900+lt->tm_year), prbuf)); |
| 116 move(LINES-1, 0); | 116 move(LINES-1, 0); |
| 117 refresh(); | 117 refresh(); |
| 118 writelog(pstats.s_exp, KILLED, monst); | |
| 118 score(pstats.s_exp, KILLED, monst); | 119 score(pstats.s_exp, KILLED, monst); |
| 119 exit(0); | 120 exit(0); |
| 120 } | 121 } |
| 121 | 122 |
| 122 char * | 123 char * |
| 567 * Update the list file | 568 * Update the list file |
| 568 */ | 569 */ |
| 569 scoreout(top_ten, outf); | 570 scoreout(top_ten, outf); |
| 570 fclose(outf); | 571 fclose(outf); |
| 571 } | 572 } |
| 572 | 573 |
| 574 void writelog(unsigned long amount, int flags, short monst) { | |
| 575 #ifdef LOGFILE | |
| 576 FILE *logfi; | |
| 577 char fate[100]; | |
| 578 char *class; | |
| 579 struct linked_list *item; | |
| 580 struct object *obj; | |
| 581 char had_quest = '0'; | |
| 582 | |
| 583 if (waswizard) | |
| 584 return; | |
| 585 switch (player.t_ctype) { | |
| 586 case C_FIGHTER: class = "Fighter"; | |
| 587 when C_MAGICIAN: class = "Magician"; | |
| 588 when C_CLERIC: class = "Cleric"; | |
| 589 when C_THIEF: class = "Thief"; | |
| 590 otherwise: class = "Unknown"; | |
| 591 } | |
| 592 for (item = pack; item != NULL; item = next(item)) { | |
| 593 obj = OBJPTR(item); | |
| 594 if (obj->o_type == RELIC && obj->o_which == quest_item) | |
| 595 had_quest = '1'; | |
| 596 } | |
| 597 if (flags == KILLED) { | |
| 598 sprintf(fate, "killed by %s", killname(monst)); | |
| 599 } | |
| 600 else if (flags == CHICKEN) { | |
| 601 sprintf(fate, "quit"); | |
| 602 } | |
| 603 else if (flags == WINNER) { | |
| 604 sprintf(fate, "escaped"); | |
| 605 } | |
| 606 else | |
| 607 return; | |
| 608 | |
| 609 logfi = fopen(LOGFILE, "a"); | |
| 610 if (logfi == NULL) { | |
| 611 perror(LOGFILE); | |
| 612 return; | |
| 613 } | |
| 614 fprintf(logfi, "%d %d %.20s %d %s %d %d %d %c %s\n", time(NULL), amount, | |
| 615 whoami, pstats.s_lvl, class, level, max_level, quest_item, had_quest, | |
| 616 fate); | |
| 617 fclose(logfi); | |
| 618 #endif | |
| 619 return; | |
| 620 } | |
| 621 | |
| 573 /* | 622 /* |
| 574 * scorein: | 623 * scorein: |
| 575 * Convert a character string that has been translated from a | 624 * Convert a character string that has been translated from a |
| 576 * score file by scoreout() back to a score file structure. | 625 * score file by scoreout() back to a score file structure. |
| 577 */ | 626 */ |
| 702 mvprintw(c - 'a' + 1, 0, "%c) %6d %s", c, worth, inv_name(obj, FALSE)); | 751 mvprintw(c - 'a' + 1, 0, "%c) %6d %s", c, worth, inv_name(obj, FALSE)); |
| 703 purse += worth; | 752 purse += worth; |
| 704 } | 753 } |
| 705 mvprintw(c - 'a' + 1, 0," %5d Gold Pieces ", oldpurse); | 754 mvprintw(c - 'a' + 1, 0," %5d Gold Pieces ", oldpurse); |
| 706 refresh(); | 755 refresh(); |
| 756 writelog(pstats.s_exp + (long) purse, WINNER, '\0'); | |
| 707 score(pstats.s_exp + (long) purse, WINNER, '\0'); | 757 score(pstats.s_exp + (long) purse, WINNER, '\0'); |
| 708 exit(0); | 758 exit(0); |
| 709 } | 759 } |
| 710 | 760 |
| 711 update(top_ten, amount, quest, whoami, flags, level, monst, ctype, system, login) | 761 update(top_ten, amount, quest, whoami, flags, level, monst, ctype, system, login) |
