Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv15113/src
Modified Files:
cowmain.c planetlist.c short.c socket.c
Log Message:
planetlist.c: New function updatePlanetw(), which only updates lines in the planet list if the new
formatted planet string differs from the prior string. Prior strings are stored in a static priorplanets
string array. Planetlist() rewritten to initialize string array to blank strings then call updatePlanetw().
socket.c, short.c: Call to updatePlanetw() when new planet data is received
Index: short.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/short.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- short.c 26 May 2006 05:58:08 -0000 1.9
+++ short.c 10 Dec 2006 02:49:14 -0000 1.10
@@ -1191,6 +1191,8 @@
#endif /* ATM */
} /* FOR */
+ if (W_IsMapped (planetw)) /* planet window */
+ updatePlanetw ();
}
Index: cowmain.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/cowmain.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- cowmain.c 1 Dec 2006 00:43:11 -0000 1.18
+++ cowmain.c 10 Dec 2006 02:49:14 -0000 1.19
@@ -1046,10 +1046,10 @@
W_MapWindow (hintWin);
if (W_IsMapped (pStats)) /* support ping stuff */
- {
- BringWindowToTop (((Window *) pStats)->hwnd);
+ {
+ BringWindowToTop (((Window *) pStats)->hwnd);
redrawPStats ();
- }
+ }
if (isFirstEntry)
{
Index: socket.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/socket.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- socket.c 30 Nov 2006 01:32:36 -0000 1.9
+++ socket.c 10 Dec 2006 02:49:14 -0000 1.10
@@ -1577,6 +1577,8 @@
{
plan->pl_flags |= PLREDRAW;
}
+ if (W_IsMapped (planetw)) /* planet window */
+ updatePlanetw ();
}
void
Index: planetlist.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/planetlist.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- planetlist.c 16 May 2006 05:10:13 -0000 1.2
+++ planetlist.c 10 Dec 2006 02:49:14 -0000 1.3
@@ -18,6 +18,11 @@
#include "data.h"
#include "proto.h"
+/* Local functions */
+void updatePlanetw (void);
+
+static char priorplanets[MAXPLANETS][BUFSIZ];
+
static char *teamname[9] = {
"IND",
"FED",
@@ -33,19 +38,29 @@
/* * Open a window which contains all the planets and their current *
* statistics. Players will not know about planets that their team * has not
* orbited. */
-
void
planetlist (void)
{
register int i;
- register int k = 0;
char buf[BUFSIZ];
- register struct planet *j;
/* W_ClearWindow(planetw); */
(void) sprintf (buf, "Planet Name own armies REPAIR FUEL AGRI CORE info");
W_WriteText (planetw, 2, 1, textColor, buf, strlen (buf), W_RegularFont);
- k = 2;
+ /* Initialize planet window string array */
+ for (i = 0; i < MAXPLANETS; i++)
+ strcpy(priorplanets[i], "");
+ updatePlanetw ();
+}
+
+/* Update only lines that have changed */
+void
+updatePlanetw (void)
+{
+ register int i;
+ char buf[BUFSIZ];
+ register struct planet *j;
+
for (i = 0, j = &planets[i]; i < MAXPLANETS; i++, j++)
{
if (j->pl_info & me->p_team)
@@ -62,14 +77,24 @@
(j->pl_info & ROM ? 'R' : ' '),
(j->pl_info & KLI ? 'K' : ' '),
(j->pl_info & ORI ? 'O' : ' '));
- W_WriteText (planetw, 2, k++, planetColor (j), buf, strlen (buf),
- planetFont (j));
+ if (strcmp(priorplanets[i], buf))
+ {
+ W_ClearArea (planetw, 2, i+2, 55, 1);
+ W_WriteText (planetw, 2, i+2, planetColor (j), buf, strlen (buf),
+ planetFont (j));
+ strcpy(priorplanets[i], buf);
+ }
}
else
{
(void) sprintf (buf, "%-16s", j->pl_name);
- W_WriteText (planetw, 2, k++, unColor, buf, strlen (buf),
- W_RegularFont);
+ if (strcmp(priorplanets[i], buf))
+ {
+ W_ClearArea (planetw, 2, i+2, 55, 1);
+ W_WriteText (planetw, 2, i+2, unColor, buf, strlen (buf),
+ W_RegularFont);
+ strcpy(priorplanets[i], buf);
+ }
}
}
-}
+}
\ No newline at end of file