arogue5: implement logging.

This commit is contained in:
John "Elwin" Edwards 2012-08-10 21:17:14 +00:00
parent 38a8534eb5
commit 4c16144c6b
4 changed files with 54 additions and 1 deletions

View file

@ -450,6 +450,7 @@ quit(int sig)
clear();
move(LINES-1, 0);
draw(stdscr);
writelog(pstats.s_exp + (long) purse, CHICKEN, 0);
score(pstats.s_exp + (long) purse, CHICKEN, 0);
exit(0);
}

View file

@ -26,6 +26,7 @@
* where scorefile should live
*/
#define SCOREFILE "/var/local/games/roguelike/arogue5.scr"
#define LOGFILE "/var/local/games/roguelike/arogue5.log"
#define SAVEDIR "/var/local/games/roguelike/arogue5save/"
/*

View file

@ -115,6 +115,7 @@ register short monst;
mvaddstr(18, 26, (sprintf(prbuf, "%4d", 1900+lt->tm_year), prbuf));
move(LINES-1, 0);
refresh();
writelog(pstats.s_exp, KILLED, monst);
score(pstats.s_exp, KILLED, monst);
exit(0);
}
@ -569,7 +570,55 @@ short monst;
scoreout(top_ten, outf);
fclose(outf);
}
void writelog(unsigned long amount, int flags, short monst) {
#ifdef LOGFILE
FILE *logfi;
char fate[100];
char *class;
struct linked_list *item;
struct object *obj;
char had_quest = '0';
if (waswizard)
return;
switch (player.t_ctype) {
case C_FIGHTER: class = "Fighter";
when C_MAGICIAN: class = "Magician";
when C_CLERIC: class = "Cleric";
when C_THIEF: class = "Thief";
otherwise: class = "Unknown";
}
for (item = pack; item != NULL; item = next(item)) {
obj = OBJPTR(item);
if (obj->o_type == RELIC && obj->o_which == quest_item)
had_quest = '1';
}
if (flags == KILLED) {
sprintf(fate, "killed by %s", killname(monst));
}
else if (flags == CHICKEN) {
sprintf(fate, "quit");
}
else if (flags == WINNER) {
sprintf(fate, "escaped");
}
else
return;
logfi = fopen(LOGFILE, "a");
if (logfi == NULL) {
perror(LOGFILE);
return;
}
fprintf(logfi, "%d %d %.20s %d %s %d %d %d %c %s\n", time(NULL), amount,
whoami, pstats.s_lvl, class, level, max_level, quest_item, had_quest,
fate);
fclose(logfi);
#endif
return;
}
/*
* scorein:
* Convert a character string that has been translated from a
@ -704,6 +753,7 @@ total_winner()
}
mvprintw(c - 'a' + 1, 0," %5d Gold Pieces ", oldpurse);
refresh();
writelog(pstats.s_exp + (long) purse, WINNER, '\0');
score(pstats.s_exp + (long) purse, WINNER, '\0');
exit(0);
}

View file

@ -965,6 +965,7 @@ bool blue_light(), can_blink(), creat_mons(), add_pack(),
long check_level();
void byebye(int sig), genmonsters();
int land(), undance();
void writelog(unsigned long amount, int flags, short monst);
#ifdef CHECKTIME
int checkout();
#endif