Update of /cvsroot/netrek/client/netrekxp/src In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv28343/src Modified Files: findslot.c newwin.c socket.c Log Message: More MOTD cleanup from COW. Index: newwin.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/newwin.c,v retrieving revision 1.85 retrieving revision 1.86 diff -u -d -r1.85 -r1.86 --- newwin.c 10 Jun 2009 02:48:19 -0000 1.85 +++ newwin.c 10 Jun 2009 23:25:44 -0000 1.86 @@ -33,12 +33,36 @@ extern HINSTANCE MyInstance; extern int metaHeight; /* height of metaserver window */ -static int line = 0; -int MaxMotdLine = 0; +/* line number of motd to display at top of window */ +static int motd_offset = 0; + +/* number of motd lines received since clear */ +int motd_last = 0; + +/* number of times we have received a motd clear */ +int motd_clears = 0; + +/* whether a refresh of the motd should be done on the next SP_MASK */ +int motd_refresh_needed = 0; + +/* if a motd line from the server is this, the client will junk all motd * + * data it currently has. New data may be received */ +#define MOTDCLEARLINE "\033\030CLEAR_MOTD\000" #define LINESPERPARADISEPAGE 38 #define LINESPERPAGE 28 +/* forward linked list of received motd lines */ +struct motd_line +{ + struct motd_line *next; + char *data; + int bold; +}; + +/* pointer to first item in the list */ +static struct motd_line *motd_lines = NULL; + #define S_MOTD 0 #define S_SYSDEF 1 #define S_CREDITS 2 @@ -48,14 +72,8 @@ static struct piclist *motdPics = NULL; static struct piclist **motd_buftail = &motdPics; -/* if a motd line from the server is this, the client will junk all motd * - * data it currently has. New data may be received */ -#define MOTDCLEARLINE "\033\030CLEAR_MOTD\000" - -#define SIZEOF(a) (sizeof (a) / sizeof (*(a))) - #define BOXSIDE (TWINSIDE / 5) -#define MENU_PAD 4 +#define MENU_PAD 4 #define TILESIDE 16 #define YOFF 0 @@ -1625,7 +1643,7 @@ *team = -1; startTime = time (0); if (me->p_whydead != KWINNER && me->p_whydead != KGENOCIDE) - showMotdWin (w, line); + showMotdWin (w, motd_offset); updatedeath (); @@ -1690,8 +1708,7 @@ UpdatePlayerList (); if (paradise && newMotdStuff) { - showMotdWin (w, line); - //showValues(mapw); + showMotdWin (w, motd_offset); } showTimeLeft (elapsed, autoQuit); lasttime = time (0); @@ -1799,47 +1816,47 @@ resetting = 1; break; case 'f': /* Scroll motd forward */ - line = line + (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE); - if (line > MaxMotdLine) + motd_offset = motd_offset + (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE); + if (motd_offset > motd_last) { - line = line - (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE); + motd_offset = motd_offset - (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE); break; } W_ClearWindow (w); - showMotdWin (w, line); + showMotdWin (w, motd_offset); break; case 'b': /* Scroll motd backward */ - if (line == 0) + if (motd_offset == 0) break; - line = line - (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE); - if (line < 0) - line = 0; + motd_offset = motd_offset - (paradise ? LINESPERPARADISEPAGE : LINESPERPAGE); + if (motd_offset < 0) + motd_offset = 0; W_ClearWindow (w); - showMotdWin (w, line); + showMotdWin (w, motd_offset); break; /* Paradise MOTD requires paging */ case 'F': /* Scroll motd a bit forwards */ if (paradise) break; - line = line + 4; - if (line > MaxMotdLine) + motd_offset = motd_offset + 4; + if (motd_offset > motd_last) { - line = line - 4; + motd_offset = motd_offset - 4; break; } W_ClearWindow (w); - showMotdWin (w, line); + showMotdWin (w, motd_offset); break; case 'B': /* Scroll motd a bit backwards */ if (paradise) break; - if (line == 0) + if (motd_offset == 0) break; - line = line - 4; - if (line < 0) - line = 0; + motd_offset = motd_offset - 4; + if (motd_offset < 0) + motd_offset = 0; W_ClearWindow (w); - showMotdWin (w, line); + showMotdWin (w, motd_offset); break; } } @@ -1883,7 +1900,7 @@ else if (event.Window == w) { if (me->p_whydead != KWINNER && me->p_whydead != KGENOCIDE) - showMotdWin (w, line); + showMotdWin (w, motd_offset); } else if (event.Window == helpWin) #ifdef RECORDGAME @@ -2047,14 +2064,15 @@ char *s, *t; int i; int end = 0; + + if (me == NULL) + return 0; if (strlen (line) < 60) - return (0); + return 0; s = line + 4; t = me->p_name; - if (me == NULL) - return (0); for (i = 0; i < 16; i++) { @@ -2073,19 +2091,9 @@ s++; t++; } - return (1); + return 1; } -/* forward linked list of received motd lines */ -struct motd_line -{ - struct motd_line *next; - char *data; - int bold; -}; -/* pointer to first item in the list */ -static struct motd_line *motd_lines = NULL; - /******************************************************************************/ /*** showMotdWin() @@ -2165,7 +2173,8 @@ } if (paradise) showPics(motdwin, atline); - showValues (data); + //if (!motd_clears) + showValues(data); } /******************************************************************************/ @@ -2208,8 +2217,8 @@ void showValues (struct motd_line *data) { - int i; - static char *msg = "OPTIONS SET WHEN YOU STARTED WERE:"; + int i, y; + static char *msg = "Server options set:"; /* try to find the start of the info */ while (1) @@ -2223,17 +2232,19 @@ data = data->next; if (paradise) - /* Use the full window for paradise, and no header */ { + /* Use the full window for paradise, single line spacing, and no header */ for (i = 1; i < 50; i++) { + y = i * W_Textheight; + if (data == NULL) break; if (data->data[0] == '+') /* quick boldface hack */ - W_WriteText (mapw, 20, i * W_Textheight, textColor, + W_WriteText (mapw, 20, y, textColor, data->data + 1, strlen (data->data) - 1, W_BoldFont); else - W_WriteText (mapw, 20, i * W_Textheight, textColor, data->data, + W_WriteText (mapw, 20, y, textColor, data->data, strlen (data->data), W_RegularFont); data = data->next; } @@ -2245,23 +2256,37 @@ W_WriteText (mapw, 20, 14 * W_Textheight, textColor, msg, strlen (msg), W_RegularFont); - for (i = 16; i < 50; i++) + for (i = 16; i < 50; i+=2) { + y = i * W_Textheight; + if (data == NULL) break; if (data->data[0] == '+') /* quick boldface hack */ - W_WriteText (mapw, 20, i * W_Textheight, textColor, + W_WriteText (mapw, 20, y, textColor, data->data + 1, strlen (data->data) - 1, W_BoldFont); else - W_WriteText (mapw, 20, i * W_Textheight, textColor, data->data, + W_WriteText (mapw, 20, y, textColor, data->data, strlen (data->data), W_RegularFont); data = data->next; - i++; } } } /******************************************************************************/ +/*** motd_refresh() +/*** Refresh the displayed MOTD +/******************************************************************************/ +void motd_refresh (void) +{ + if (motd_refresh_needed) + { + showMotdWin(w, motd_offset); + motd_refresh_needed = 0; + } +} + +/******************************************************************************/ /*** ClearMotd() /*** Free the current motd_lines /******************************************************************************/ @@ -2287,6 +2312,9 @@ free (this); } motd_lines = NULL; + motd_offset = 0; + motd_last = 0; + motd_clears++; } /******************************************************************************/ @@ -2328,7 +2356,6 @@ { W_ClearWindow (w); ClearMotd (); - MaxMotdLine = 0; statmode = 0; return; } @@ -2341,11 +2368,8 @@ return; if (!statmode) - MaxMotdLine++; + motd_last++; -#ifdef DEBUG - LineToConsole("%s\n", line); -#endif /* add new line to tail of list */ new->next = NULL; new->bold = -1; @@ -2356,6 +2380,7 @@ old->next = new; old = new; + motd_refresh_needed++; } /******************************************************************************/ Index: findslot.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/findslot.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- findslot.c 16 Apr 2008 00:08:11 -0000 1.11 +++ findslot.c 10 Jun 2009 23:25:44 -0000 1.12 @@ -103,7 +103,7 @@ findslot (void) { int oldcount = -1; - extern int MaxMotdLine; + extern int motd_last; int WaitMotdLine = 0; int showMotd = booleanDefault ("showMotd", 1); W_Event event; @@ -186,7 +186,7 @@ { WaitMotdLine += 28; /* scroll to start if it goes over */ - if (WaitMotdLine > MaxMotdLine) + if (WaitMotdLine > motd_last) WaitMotdLine = 0; } W_ClearWindow (motdWin); Index: socket.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/socket.c,v retrieving revision 1.74 retrieving revision 1.75 diff -u -d -r1.74 -r1.75 --- socket.c 9 Jun 2009 01:04:33 -0000 1.74 +++ socket.c 10 Jun 2009 23:25:44 -0000 1.75 @@ -2190,6 +2190,7 @@ void handleMask (struct mask_spacket *packet) { + motd_refresh(); tournMask = packet->mask; } @@ -2878,6 +2879,7 @@ ltd.weapons.plasma.damage.inflicted = ntohl(packet->wsdi); ltd.weapons.plasma.damage.taken = ntohl(packet->wsdt); +#if 0 LineToConsole("SP_LTD test output begins\n"); dump_prefix("kt", "kills total"); dump_stat(kills.total); dump_prefix("kmax", "kills max"); dump_max(kills.max); @@ -2960,6 +2962,7 @@ dump_prefix("wsdi", "weap smack damage inflicted"); dump_stat(weapons.plasma.damage.inflicted); dump_prefix("wsdt", "weap smack damage taken"); dump_stat(weapons.plasma.damage.taken); LineToConsole("SP_LTD test output ends\n"); +#endif } void