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) |