comparison srogue/rip.c @ 41:5ea4a4d8f961

srogue: add logging.
author elwin
date Sat, 04 Dec 2010 14:45:38 +0000
parents 2128c7dc8a40
children 24e6beb9e7aa
comparison
equal deleted inserted replaced
40:984f7d5afb6f 41:5ea4a4d8f961
19 #include <sys/types.h> 19 #include <sys/types.h>
20 #include <pwd.h> 20 #include <pwd.h>
21 #include <fcntl.h> 21 #include <fcntl.h>
22 #include "rogue.h" 22 #include "rogue.h"
23 #include "rogue.ext" 23 #include "rogue.ext"
24
25 #define LOGFILE "/usr/local/games/roguelike/srogue.log"
24 26
25 static char scoreline[100]; 27 static char scoreline[100];
26 28
27 static char *rip[] = { 29 static char *rip[] = {
28 " ____________________", 30 " ____________________",
80 mvaddstr(16, 36 - ((strlen(buf) + 1) / 2), buf); 82 mvaddstr(16, 36 - ((strlen(buf) + 1) / 2), buf);
81 sprintf(prbuf, "%d/%d/%d", lt->tm_mon + 1, lt->tm_mday, 1900+lt->tm_year); 83 sprintf(prbuf, "%d/%d/%d", lt->tm_mon + 1, lt->tm_mday, 1900+lt->tm_year);
82 mvaddstr(18, 32, prbuf); 84 mvaddstr(18, 32, prbuf);
83 move(LINES-1, 0); 85 move(LINES-1, 0);
84 refresh(); 86 refresh();
87 writelog(purse, KILLED, monst);
85 score(purse, KILLED, monst); 88 score(purse, KILLED, monst);
86 byebye(0); 89 byebye(0);
87 } 90 }
88 91
89 /* 92 /*
213 refresh(); 216 refresh();
214 endwin(); 217 endwin();
215 showtop(prflags); /* print top ten list */ 218 showtop(prflags); /* print top ten list */
216 } 219 }
217 220
221 void writelog(int amount, int aflag, char monst)
222 {
223 char logmessage[160], ltemp[80], mlev[40];
224 char *killer;
225 FILE *logfi;
226
227 if (waswizard)
228 return;
229 #ifdef LOGFILE
230 sprintf(logmessage, "%d %d %.20s %d ", time(NULL), amount, whoami,
231 him->s_lvl);
232 if (amulet)
233 sprintf(mlev, " [max %d] with the Amulet", max_level);
234 else
235 mlev[0] = '\0';
236 if (aflag == KILLED) {
237 killer = killname(monst);
238 sprintf(ltemp, "killed by a%s %s on level %d%s\n",
239 vowelstr(killer), killer, level, mlev);
240 }
241 else if (aflag == CHICKEN) {
242 sprintf(ltemp, "quit on level %d%s\n", level, mlev);
243 }
244 else if (aflag == WINNER) {
245 sprintf(ltemp, "escaped with the Amulet [deepest level: %d]\n",
246 max_level);
247 }
248 else
249 return;
250 strcat(logmessage, ltemp);
251 logfi = fopen(LOGFILE, "a");
252 if (logfi == NULL)
253 return;
254 fprintf(logfi, "%s", logmessage);
255 fclose(logfi);
256 #endif
257 return;
258 }
259
218 /* 260 /*
219 * showtop: 261 * showtop:
220 * Display the top ten on the screen 262 * Display the top ten on the screen
221 */ 263 */
222 showtop(showname) 264 showtop(showname)
294 refresh(); 336 refresh();
295 wait_for(stdscr, ' '); 337 wait_for(stdscr, ' ');
296 clear(); 338 clear();
297 oldpurse = purse; 339 oldpurse = purse;
298 showpack(TRUE, NULL); 340 showpack(TRUE, NULL);
341 writelog(purse, WINNER, 0);
299 score(purse, WINNER, 0); 342 score(purse, WINNER, 0);
300 byebye(0); 343 byebye(0);
301 } 344 }
302 345
303 /* 346 /*