Update of /cvsroot/netrek/client/netrekxp/src In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv20941/src Modified Files: check.c cowmain.c dashboard.c data.c death.c defaults.c input.c local.c main.c map.c mswindow.c newwin.c option.c Log Message: Rewrote doublebuffering to make it an rc option and not a #define - removes a lot of extra work in terms of needing twice as many write bitmap functions (client had one for regular draw, and one for DB) Added observer support to show repair/declare war flags on dashboard. Observers can also now change lock if they are observing a transwarper (server side fix, but good to know). Changed alert borders so they always redraw instead of on an alert change - was causing lots of problems with bitmaps at edge of screen, as well as with double buffering Readded the ability to see tractor/pressors if they go off screen (such as in the case of ATT tractors). Added "doubleBuffering: (on)/off" to control whether to draw with double buffering (it's recommended you do so if using the new planet and ship bitmaps). Can be changed in game through the options menu. Fixed the -c (report players on server) option so it doesn't crash the client Readded the ability to autologin by using -C name -A password. No more extra typing :). Fixed a whole bunch of startup options (-C, -A, -h, -g, etc) that were crashing client if not entered properly. Also made it so it prints out option list on a misused option. Bunch of other write bitmap function optimizations Index: mswindow.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/mswindow.c,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- mswindow.c 20 May 2006 17:09:39 -0000 1.23 +++ mswindow.c 21 May 2006 09:56:38 -0000 1.24 @@ -155,6 +155,56 @@ return;\ win = (Window *)window +#define DBHEADER_VOID\ + HDC hdc;\ + SDBUFFER * sdb;\ + register Window *win;\ + if (!window)\ + return;\ + sdb = SDB_lookup (window);\ + if (doubleBuffering && sdb && ingame)\ [...1764 lines suppressed...] - SetWorldTransform(sdb->mem_dc,&xForm); - BitBlt(sdb->mem_dc, 0, 0, newwidth, newheight, GlobalMemDC2, srcx, srcy, SRCCOPY); - - // Reset xForm - xForm.eM11 = (FLOAT) 1.0; - xForm.eM12 = (FLOAT) 0.0; - xForm.eM21 = (FLOAT) 0.0; - xForm.eM22 = (FLOAT) 1.0; - xForm.eDx = (FLOAT) 0.0; - xForm.eDy = (FLOAT) 0.0; - - SetWorldTransform(sdb->mem_dc,&xForm); - - DeleteObject (newbmp); + BitBlt (sdb->win_dc, 0, 0, sdb->wr.right, sdb->wr.bottom, sdb->mem_dc, 0, 0, SRCCOPY); } -#endif /* DOUBLE_BUFFERING */ // Make a WIN_SCROLL type window. // We use a scrollbar so we can look through the text, something the X version Index: dashboard.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/dashboard.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- dashboard.c 20 May 2006 17:09:39 -0000 1.7 +++ dashboard.c 21 May 2006 09:56:38 -0000 1.8 @@ -306,20 +306,26 @@ of importance */ /* Declare War text */ - if (delay) + if (me->p_flags & PFWAR) { sprintf (buf, "War "); - sprintf(buf2, "%d", delay - time (0)); - strcat (buf, buf2); + if (delay) + { + sprintf(buf2, "%d", delay - time (0)); + strcat (buf, buf2); + } msgtype = 0; color = W_Red; } /* Refit text */ - else if (rdelay) + else if (me->p_flags & PFREFITTING) { sprintf (buf, "Refit "); - sprintf(buf2, "%d", rdelay - time (0)); - strcat (buf, buf2); + if (rdelay) + { + sprintf(buf2, "%d", rdelay - time (0)); + strcat (buf, buf2); + } msgtype = 1; color = W_Green; } Index: newwin.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/newwin.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- newwin.c 20 May 2006 17:09:39 -0000 1.24 +++ newwin.c 21 May 2006 09:56:39 -0000 1.25 @@ -690,16 +690,12 @@ w = W_MakeWindow ("local", 0, 0, WINSIDE, WINSIDE, baseWin, THICKBORDER, foreColor); -#ifdef DOUBLE_BUFFERING localSDB = W_InitSDB (w); -#endif mapw = W_MakeWindow ("map", WINSIDE + 6, 0, WINSIDE, WINSIDE, baseWin, THICKBORDER, foreColor); -#ifdef DOUBLE_BUFFERING mapSDB = W_InitSDB (mapw); -#endif tstatw = W_MakeWindow ("tstat", 0, WINSIDE + 6, WINSIDE + 3, STATSIZE + 2, baseWin, BORDER, foreColor); @@ -1995,14 +1991,13 @@ cy = CLOCK_Y + CLOCK_HEI / 2; angle = (int)(-360 * time / max); - W_WriteBitmap ( CLOCK_BDR, CLOCK_BDR, clockpic, foreColor); + W_WriteBitmap ( CLOCK_BDR, CLOCK_BDR, clockpic, foreColor, qwin); W_OverlayScaleBitmap (CLOCK_BDR, CLOCK_BDR, BMP_CHAND_WIDTH, BMP_CHAND_HEIGHT, BMP_CHAND_WIDTH, BMP_CHAND_HEIGHT, angle, clockhandmask, foreColor, qwin); - angle = (int)(255-time*255/max); W_WriteScaleBitmap (CLOCK_BDR, CLOCK_BDR, BMP_CHAND_WIDTH, BMP_CHAND_HEIGHT, BMP_CHAND_WIDTH, BMP_CHAND_HEIGHT, - (unsigned char)(angle), clockhandpic, foreColor, qwin); + angle, clockhandpic, foreColor, qwin); sprintf (buf, "%d", max - time); tx = cx - W_Textwidth * strlen (buf) / 2; ty = 2*(cy - W_Textheight / 2)/3; @@ -2015,7 +2010,7 @@ cy = CLOCK_Y + (CLOCK_HEI - W_Textheight) / 2; ex = cx - BMP_CLOCK_WIDTH / 2; ey = cy - BMP_CLOCK_HEIGHT / 2; - W_WriteBitmap (ex, ey, clockpic, foreColor); + W_WriteBitmap (ex, ey, clockpic, foreColor, qwin); ex = (int) (cx - BMP_CLOCK_WIDTH * sin (2 * XPI * time / max) / 2); ey = (int) (cy - BMP_CLOCK_HEIGHT * cos (2 * XPI * time / max) / 2); Index: input.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/input.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- input.c 7 May 2006 21:10:51 -0000 1.10 +++ input.c 21 May 2006 09:56:38 -0000 1.11 @@ -692,7 +692,8 @@ while (W_EventsPending ()) W_NextEvent (&event); - + + ingame = 0; longjmp (env, 0); } Index: local.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- local.c 20 May 2006 17:09:39 -0000 1.23 +++ local.c 21 May 2006 09:56:38 -0000 1.24 @@ -26,6 +26,7 @@ /* Local Variables */ #define XPI 3.1415926 +static int playalert = 0; static int clearcount = 0; static int clearzone[4][(MAXTORP + 1) * MAXPLAYER + (MAXPLASMA + 1) * MAXPLAYER + MAXPLANETS]; @@ -266,11 +267,7 @@ dx = scaleLocal (dx); dy = scaleLocal (dy); -#ifndef DOUBLE_BUFFERING W_CacheLine (w, dx, dy, dx - dxx, dy - dyy, s->s_color); -#else - W_CacheLineDB (localSDB, dx, dy, dx - dxx, dy - dyy, s->s_color); -#endif clearline[0][clearlcount] = dx; clearline[1][clearlcount] = dy; @@ -290,11 +287,7 @@ dx = scaleLocal (dx); dy = scaleLocal (dy); -#ifndef DOUBLE_BUFFERING W_CachePoint (w, dx, dy, s->s_color); -#else - W_CachePointDB (localSDB, dx, dy, s->s_color); -#endif clearline[0][clearlcount] = dx; clearline[1][clearlcount] = dy; @@ -357,7 +350,6 @@ if (planetBitmap == 3) { -#ifndef DOUBLE_BUFFERING W_WriteScaleBitmap (dx - (BMP_PLANET_WIDTH / 2), dy - (BMP_PLANET_HEIGHT / 2), BMP_PLANET_WIDTH, @@ -368,32 +360,14 @@ planetBitmapC (l), planetColor (l), w); -#else - W_WriteScaleBitmapDB (localSDB, dx - (BMP_PLANET_WIDTH / 2), - dy - (BMP_PLANET_HEIGHT / 2), - BMP_PLANET_WIDTH, - BMP_PLANET_HEIGHT, - BMP_CPLANET_WIDTH, - BMP_CPLANET_HEIGHT, - 0, - planetBitmapC (l), - planetColor (l), - w); /* Draw planet resources */ - planetResourcesC(localSDB, l, BMP_PLANET_WIDTH, BMP_PLANET_HEIGHT, dx, dy, w); -#endif + planetResourcesC(l, BMP_PLANET_WIDTH, BMP_PLANET_HEIGHT, dx, dy, w); } else { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (BMP_PLANET_WIDTH / 2), dy - (BMP_PLANET_HEIGHT / 2), getPlanetBitmap (l), - planetColor (l)); -#else - W_WriteBitmapDB (localSDB, dx - (BMP_PLANET_WIDTH / 2), - dy - (BMP_PLANET_HEIGHT / 2), getPlanetBitmap (l), - planetColor (l)); -#endif + planetColor (l), w); } if (showIND && ((l->pl_info & me->p_team) #ifdef RECORDGAME @@ -401,7 +375,6 @@ #endif ) && (l->pl_owner == NOBODY)) { -#ifndef DOUBLE_BUFFERING W_CacheLine (w, dx - (BMP_PLANET_WIDTH / 2), dy - (BMP_PLANET_HEIGHT / 2), dx + (BMP_PLANET_WIDTH / 2 - 1), @@ -410,40 +383,33 @@ dy - (BMP_PLANET_HEIGHT / 2), dx - (BMP_PLANET_WIDTH / 2), dy + (BMP_PLANET_HEIGHT / 2 - 1), W_White); -#else - W_CacheLineDB (localSDB, dx - (BMP_PLANET_WIDTH / 2), - dy - (BMP_PLANET_HEIGHT / 2), - dx + (BMP_PLANET_WIDTH / 2 - 1), - dy + (BMP_PLANET_HEIGHT / 2 - 1), W_White); - W_CacheLineDB (localSDB, dx + (BMP_PLANET_WIDTH / 2 - 1), - dy - (BMP_PLANET_HEIGHT / 2), - dx - (BMP_PLANET_WIDTH / 2), - dy + (BMP_PLANET_HEIGHT / 2 - 1), W_White); -#endif } if (showPlanetNames) { -#ifndef DOUBLE_BUFFERING W_MaskText (w, dx - (BMP_PLANET_WIDTH / 2), dy + (BMP_PLANET_HEIGHT / 2), planetColor (l), l->pl_name, l->pl_namelen, planetFont (l)); -#else - W_MaskTextDB (localSDB, dx - (BMP_PLANET_WIDTH / 2), - dy + (BMP_PLANET_HEIGHT / 2), planetColor (l), - l->pl_name, l->pl_namelen, planetFont (l)); -#endif clearzone[0][clearcount] = dx - (BMP_PLANET_WIDTH / 2); clearzone[1][clearcount] = dy + (BMP_PLANET_HEIGHT / 2); clearzone[2][clearcount] = W_Textwidth * l->pl_namelen; clearzone[3][clearcount] = W_Textheight; clearcount++; } - - clearzone[0][clearcount] = dx - (7 * BMP_PLANET_WIDTH / 8); - clearzone[1][clearcount] = dy - (5 * BMP_PLANET_HEIGHT / 6); - clearzone[2][clearcount] = 7 * BMP_PLANET_WIDTH / 4 + 1; - clearzone[3][clearcount] = 4 * BMP_PLANET_HEIGHT / 3 + 1; + if (planetBitmap == 3) // Needs adjusting + { + clearzone[0][clearcount] = dx - (7 * BMP_PLANET_WIDTH / 8); + clearzone[1][clearcount] = dy - (5 * BMP_PLANET_HEIGHT / 6); + clearzone[2][clearcount] = 7 * BMP_PLANET_WIDTH / 4 + 1; + clearzone[3][clearcount] = 4 * BMP_PLANET_HEIGHT / 3 + 1; + } + else + { + clearzone[0][clearcount] = dx - (BMP_PLANET_WIDTH / 2); + clearzone[1][clearcount] = dy - (BMP_PLANET_HEIGHT / 2); + clearzone[2][clearcount] = BMP_PLANET_WIDTH; + clearzone[3][clearcount] = BMP_PLANET_HEIGHT; + } clearcount++; } } @@ -676,14 +642,8 @@ #endif ) { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (cloak_width / 2), - dy - (cloak_height / 2), cloakicon, myColor); -#else - W_WriteBitmapDB (localSDB, dx - (cloak_width / 2), - dy - (cloak_height / 2), cloakicon, myColor); -#endif - + dy - (cloak_height / 2), cloakicon, myColor, w); clearzone[0][clearcount] = dx - (shield_width / 2); clearzone[1][clearcount] = dy - (shield_height / 2); clearzone[2][clearcount] = shield_width; @@ -849,56 +809,30 @@ if (colorClient != 4) { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (j->p_ship.s_width / 2), dy - (j->p_ship.s_height / 2), ship_bits[j->p_ship.s_type][rosette (j->p_dir)], - playerColor (j)); -#else - W_WriteBitmapDB (localSDB, dx - (j->p_ship.s_width / 2), - dy - (j->p_ship.s_height / 2), - ship_bits[j->p_ship.s_type][rosette (j->p_dir)], - playerColor (j)); -#endif + playerColor (j), w); } else { -#ifndef DOUBLE_BUFFERING W_WriteScaleBitmap (dx - (j->p_ship.s_width / 2), dy - (j->p_ship.s_height / 2), j->p_ship.s_width, j->p_ship.s_height, BMP_SHIP_WIDTH_HR, BMP_SHIP_HEIGHT_HR, - j->p_dir, + (360 * j->p_dir/255), // Converted to angle ship_bitsHR[j->p_ship.s_type], playerColor (j), w); -#else - W_WriteScaleBitmapDB (localSDB, dx - (j->p_ship.s_width / 2), - dy - (j->p_ship.s_height / 2), - j->p_ship.s_width, - j->p_ship.s_height, - BMP_SHIP_WIDTH_HR, - BMP_SHIP_HEIGHT_HR, - j->p_dir, - ship_bitsHR[j->p_ship.s_type], - playerColor (j), - w); -#endif } if (j->p_cloakphase > 0) { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (cloak_width / 2), dy - (cloak_height / 2), cloakicon, - playerColor (j)); -#else - W_WriteBitmapDB (localSDB, dx - (cloak_width / 2), - dy - (cloak_height / 2), cloakicon, - playerColor (j)); -#endif + playerColor (j), w); if (!myPlayer (j)) /* if myplayer draw the * shield */ continue; @@ -911,18 +845,10 @@ && (liteflag & LITE_PLAYERS_LOCAL)) { int seq_n = emph_player_seq_n[j->p_no] % emph_player_seql_frames; - -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (emph_player_seql_width / 2), dy - (emph_player_seql_height / 2), emph_player_seql[seq_n], - W_White); -#else - W_WriteBitmapDB (localSDB, dx - (emph_player_seql_width / 2), - dy - (emph_player_seql_height / 2), - emph_player_seql[seq_n], - W_White); -#endif + W_White, w); } #endif @@ -1006,23 +932,12 @@ } #ifdef VSHIELD_BITMAPS -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (shield_width / 2), dy - (shield_height / 2), shield[shieldnum], - color); -#else - W_WriteBitmapDB (localSDB, dx - (shield_width / 2), - dy - (shield_height / 2), shield[shieldnum], - color); -#endif /* DOUBLE_BUFFERING */ + color, w); #else -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (shield_width / 2), - dy - (shield_height / 2), shield, color); -#else - W_WriteBitmapDB (localSDB, dx - (shield_width / 2), - dy - (shield_height / 2), shield, color); -#endif /* DOUBLE_BUFFERING */ + dy - (shield_height / 2), shield, color, w); #endif } if (j->p_flags & PFCLOAK) /* when cloaked stop here */ @@ -1083,16 +998,9 @@ } } } -#ifndef DOUBLE_BUFFERING W_MaskText (w, dx + (j->p_ship.s_width / 2), dy - (j->p_ship.s_height / 2), color, idbuf, buflen, shipFont (j)); -#else - W_MaskTextDB (localSDB, dx + (j->p_ship.s_width / 2), - dy - (j->p_ship.s_height / 2), color, - idbuf, buflen, shipFont (j)); -#endif - clearzone[0][clearcount] = dx + (j->p_ship.s_width / 2); clearzone[1][clearcount] = dy - (j->p_ship.s_height / 2); clearzone[2][clearcount] = buflen * W_Textwidth; @@ -1169,15 +1077,9 @@ if (j->p_ship.s_type == STARBASE) { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (BMP_SBEXPL_WIDTH / 2), dy - (BMP_SBEXPL_HEIGHT / 2), sbexpview[i], - playerColor (j)); -#else - W_WriteBitmapDB (localSDB, dx - (BMP_SBEXPL_WIDTH / 2), - dy - (BMP_SBEXPL_HEIGHT / 2), sbexpview[i], - playerColor (j)); -#endif + playerColor (j), w); clearzone[0][clearcount] = dx - (BMP_SBEXPL_WIDTH / 2); clearzone[1][clearcount] = dy - (BMP_SBEXPL_HEIGHT / 2); clearzone[2][clearcount] = BMP_SBEXPL_WIDTH; @@ -1185,15 +1087,9 @@ } else { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (BMP_SHIPEXPL_WIDTH / 2), dy - (BMP_SHIPEXPL_HEIGHT / 2), expview[i], - playerColor (j)); -#else - W_WriteBitmapDB (localSDB, dx - (BMP_SHIPEXPL_WIDTH / 2), - dy - (BMP_SHIPEXPL_HEIGHT / 2), expview[i], - playerColor (j)); -#endif + playerColor (j), w); clearzone[0][clearcount] = dx - (BMP_SHIPEXPL_WIDTH / 2); clearzone[1][clearcount] = dy - (BMP_SHIPEXPL_HEIGHT / 2); clearzone[2][clearcount] = BMP_SHIPEXPL_WIDTH; @@ -1360,11 +1256,7 @@ px = new_dx; py = new_dy; } -#ifndef DOUBLE_BUFFERING W_CacheLine (w, px, py, tx, ty, col); -#else - W_CacheLineDB (localSDB, px, py, tx, ty, col); -#endif } else { @@ -1379,55 +1271,27 @@ py = new_dy; } if (highlightFriendlyPhasers) -#ifndef DOUBLE_BUFFERING W_CacheLine (w, px, py, tx, ty, foreColor); -#else - W_CacheLineDB (localSDB, px, py, tx, ty, foreColor); -#endif else { if ((php->ph_fuse % 2) == 1) -#ifndef DOUBLE_BUFFERING W_CacheLine (w, px, py, tx, ty, foreColor); -#else - W_CacheLineDB (localSDB, px, py, tx, ty, foreColor); -#endif else -#ifndef DOUBLE_BUFFERING W_CacheLine (w, px, py, tx, ty, shipCol[remap[j->p_team]]); -#else - W_CacheLineDB (localSDB, px, py, tx, ty, shipCol[remap[j->p_team]]); -#endif } } else -#ifndef DOUBLE_BUFFERING W_CacheLine (w, px, py, tx, ty, shipCol[remap[j->p_team]]); -#else - W_CacheLineDB (localSDB, px, py, tx, ty, shipCol[remap[j->p_team]]); -#endif } #else if (highlightFriendlyPhasers && (php->ph_status == PHHIT)) -#ifndef DOUBLE_BUFFERING W_CacheLine (w, px, py, tx, ty, foreColor); -#else - W_CacheLineDB (localSDB, px, py, tx, ty, foreColor); -#endif else { if ((php->ph_fuse % 2) == 1) -#ifndef DOUBLE_BUFFERING W_CacheLine (w, px, py, tx, ty, foreColor); -#else - W_CacheLineDB (localSDB, px, py, tx, ty, foreColor); -#endif else -#ifndef DOUBLE_BUFFERING W_CacheLine (w, px, py, tx, ty, shipCol[remap[j->p_team]]); -#else - W_CacheLineDB (localSDB, px, py, tx, ty, shipCol[remap[j->p_team]]); -#endif } #endif php->ph_fuse++; @@ -1464,13 +1328,8 @@ lx = (int) (px - enemyPhasers * Cos[dir]); ly = (int) (py - enemyPhasers * Sin[dir]); -#ifndef DOUBLE_BUFFERING W_MakePhaserLine (w, wx, wy, tx, ty, shipCol[remap[j->p_team]]); W_MakePhaserLine (w, lx, ly, tx, ty, shipCol[remap[j->p_team]]); -#else - W_MakePhaserLineDB (localSDB, wx, wy, tx, ty, shipCol[remap[j->p_team]]); - W_MakePhaserLineDB (localSDB, lx, ly, tx, ty, shipCol[remap[j->p_team]]); -#endif php->ph_fuse++; @@ -1488,11 +1347,7 @@ } else { -#ifndef DOUBLE_BUFFERING W_MakePhaserLine (w, px, py, tx, ty, shipCol[remap[j->p_team]]); -#else - W_MakePhaserLineDB (localSDB, px, py, tx, ty, shipCol[remap[j->p_team]]); -#endif php->ph_fuse++; @@ -1543,8 +1398,6 @@ px = (tractee->p_x - me->p_x); py = (tractee->p_y - me->p_y); - if(px > view || px < -view || py > view || py < -view) - continue; px = px / SCALE + WINSIDE / 2; py = py / SCALE + WINSIDE / 2; @@ -1567,23 +1420,13 @@ ly[1] = (int) (py - (Sin[dir] * (target_width / 2))); if (j->p_flags & PFPRESS) { -#ifndef DOUBLE_BUFFERING W_MakeTractLine (w, dx, dy, lx[0], ly[0], W_Yellow); W_MakeTractLine (w, dx, dy, lx[1], ly[1], W_Yellow); -#else - W_MakeTractLineDB (localSDB, dx, dy, lx[0], ly[0], W_Yellow); - W_MakeTractLineDB (localSDB, dx, dy, lx[1], ly[1], W_Yellow); -#endif } else { -#ifndef DOUBLE_BUFFERING W_MakeTractLine (w, dx, dy, lx[0], ly[0], W_Green); W_MakeTractLine (w, dx, dy, lx[1], ly[1], W_Green); -#else - W_MakeTractLineDB (localSDB, dx, dy, lx[0], ly[0], W_Green); - W_MakeTractLineDB (localSDB, dx, dy, lx[1], ly[1], W_Green); -#endif } /* @@ -1793,15 +1636,9 @@ torpTeam = 2; } } -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (BMP_CTORPDET_WIDTH / 2), dy - (BMP_CTORPDET_HEIGHT / 2), - cloudC[torpTeam][k->t_fuse], torpColor (k)); -#else - W_WriteBitmapDB (localSDB, dx - (BMP_CTORPDET_WIDTH / 2), - dy - (BMP_CTORPDET_HEIGHT / 2), - cloudC[torpTeam][k->t_fuse], torpColor (k)); -#endif + cloudC[torpTeam][k->t_fuse], torpColor (k), w); clearzone[0][clearcount] = dx - (BMP_CTORPDET_WIDTH / 2); clearzone[1][clearcount] = dy - (BMP_CTORPDET_HEIGHT / 2); clearzone[2][clearcount] = BMP_CTORPDET_WIDTH; @@ -1810,15 +1647,9 @@ } else { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (BMP_TORPDET_WIDTH / 2), dy - (BMP_TORPDET_HEIGHT / 2), - cloud[k->t_fuse], torpColor (k)); -#else - W_WriteBitmapDB (localSDB, dx - (BMP_TORPDET_WIDTH / 2), - dy - (BMP_TORPDET_HEIGHT / 2), - cloud[k->t_fuse], torpColor (k)); -#endif + cloud[k->t_fuse], torpColor (k), w); clearzone[0][clearcount] = dx - (BMP_TORPDET_WIDTH / 2); clearzone[1][clearcount] = dy - (BMP_TORPDET_HEIGHT / 2); clearzone[2][clearcount] = BMP_TORPDET_WIDTH; @@ -1859,28 +1690,15 @@ if (j != me && ((k->t_war & me->p_team) || (j->p_team & (me->p_hostile | me->p_swar)))) { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (BMP_CTORP_WIDTH / 2), dy - (BMP_CTORP_HEIGHT / 2), - torpC[torpTeam][k->t_fuse], torpColor (k)); -#else - W_WriteBitmapDB (localSDB, dx - (BMP_CTORP_WIDTH / 2), - dy - (BMP_CTORP_HEIGHT / 2), - torpC[torpTeam][k->t_fuse], torpColor (k)); -#endif - + torpC[torpTeam][k->t_fuse], torpColor (k), w); } else { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (BMP_CTORP_WIDTH / 2), dy - (BMP_CTORP_HEIGHT / 2), - mtorpC[torpTeam][k->t_fuse], torpColor (k)); -#else - W_WriteBitmapDB (localSDB, dx - (BMP_CTORP_WIDTH / 2), - dy - (BMP_CTORP_HEIGHT / 2), - mtorpC[torpTeam][k->t_fuse], torpColor (k)); -#endif + mtorpC[torpTeam][k->t_fuse], torpColor (k), w); } clearzone[0][clearcount] = dx - (BMP_CTORP_WIDTH / 2); @@ -1899,13 +1717,8 @@ * torpColor(k)); */ /* XFIX */ -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (etorp_width / 2), - dy - (etorp_height / 2), etorp, torpColor (k)); -#else - W_WriteBitmapDB (localSDB, dx - (etorp_width / 2), - dy - (etorp_height / 2), etorp, torpColor (k)); -#endif + dy - (etorp_height / 2), etorp, torpColor (k), w); clearzone[0][clearcount] = dx - (etorp_width / 2); clearzone[1][clearcount] = dy - (etorp_height / 2); clearzone[2][clearcount] = etorp_width; @@ -1914,13 +1727,8 @@ } else { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (mtorp_width / 2), - dy - (mtorp_height / 2), mtorp, torpColor (k)); -#else - W_WriteBitmapDB (localSDB, dx - (mtorp_width / 2), - dy - (mtorp_height / 2), mtorp, torpColor (k)); -#endif + dy - (mtorp_height / 2), mtorp, torpColor (k), w); clearzone[0][clearcount] = dx - (mtorp_width / 2); clearzone[1][clearcount] = dy - (mtorp_height / 2); clearzone[2][clearcount] = mtorp_width; @@ -2079,17 +1887,10 @@ ptorpTeam = 2; } } -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (BMP_CPLASMATORPDET_WIDTH / 2), dy - (BMP_CPLASMATORPDET_HEIGHT / 2), plcloudC[ptorpTeam][pt->pt_fuse], - plasmatorpColor (pt)); -#else - W_WriteBitmapDB (localSDB, dx - (BMP_CPLASMATORPDET_WIDTH / 2), - dy - (BMP_CPLASMATORPDET_HEIGHT / 2), - plcloudC[ptorpTeam][pt->pt_fuse], - plasmatorpColor (pt)); -#endif + plasmatorpColor (pt), w); clearzone[0][clearcount] = dx - (BMP_CPLASMATORPDET_WIDTH / 2); clearzone[1][clearcount] = dy - (BMP_CPLASMATORPDET_HEIGHT / 2); clearzone[2][clearcount] = BMP_CPLASMATORPDET_WIDTH; @@ -2098,15 +1899,9 @@ } else { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (BMP_PLASMATORPDET_WIDTH / 2), dy - (BMP_PLASMATORPDET_HEIGHT / 2), - plasmacloud[pt->pt_fuse], plasmatorpColor (pt)); -#else - W_WriteBitmapDB (localSDB, dx - (BMP_PLASMATORPDET_WIDTH / 2), - dy - (BMP_PLASMATORPDET_HEIGHT / 2), - plasmacloud[pt->pt_fuse], plasmatorpColor (pt)); -#endif + plasmacloud[pt->pt_fuse], plasmatorpColor (pt), w); clearzone[0][clearcount] = dx - (BMP_PLASMATORPDET_WIDTH / 2); clearzone[1][clearcount] = dy - (BMP_PLASMATORPDET_HEIGHT / 2); clearzone[2][clearcount] = BMP_PLASMATORPDET_WIDTH; @@ -2148,31 +1943,17 @@ p_team & (me->p_hostile | me-> p_swar)))) { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (BMP_CPLASMATORP_WIDTH / 2), dy - (BMP_CPLASMATORP_HEIGHT / 2), plasmaC[ptorpTeam][pt->pt_fuse], - plasmatorpColor (pt)); -#else - W_WriteBitmapDB (localSDB, dx - (BMP_CPLASMATORP_WIDTH / 2), - dy - (BMP_CPLASMATORP_HEIGHT / 2), - plasmaC[ptorpTeam][pt->pt_fuse], - plasmatorpColor (pt)); -#endif + plasmatorpColor (pt), w); } else { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (BMP_CPLASMATORP_WIDTH / 2), dy - (BMP_CPLASMATORP_HEIGHT / 2), mplasmaC[ptorpTeam][pt->pt_fuse], - plasmatorpColor (pt)); -#else - W_WriteBitmapDB (localSDB, dx - (BMP_CPLASMATORP_WIDTH / 2), - dy - (BMP_CPLASMATORP_HEIGHT / 2), - mplasmaC[ptorpTeam][pt->pt_fuse], - plasmatorpColor (pt)); -#endif + plasmatorpColor (pt), w); } clearzone[0][clearcount] = dx - (BMP_CPLASMATORP_WIDTH / 2); clearzone[1][clearcount] = dy - (BMP_CPLASMATORP_HEIGHT / 2); @@ -2188,15 +1969,9 @@ p_team & (me->p_hostile | me-> p_swar)))) { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (eplasmatorp_width / 2), dy - (eplasmatorp_height / 2), - eplasmatorp, plasmatorpColor (pt)); -#else - W_WriteBitmapDB (localSDB, dx - (eplasmatorp_width / 2), - dy - (eplasmatorp_height / 2), - eplasmatorp, plasmatorpColor (pt)); -#endif + eplasmatorp, plasmatorpColor (pt), w); clearzone[0][clearcount] = dx - (eplasmatorp_width / 2); clearzone[1][clearcount] = dy - (eplasmatorp_height / 2); clearzone[2][clearcount] = eplasmatorp_width; @@ -2205,15 +1980,9 @@ } else { -#ifndef DOUBLE_BUFFERING W_WriteBitmap (dx - (mplasmatorp_width / 2), dy - (mplasmatorp_height / 2), - mplasmatorp, plasmatorpColor (pt)); -#else - W_WriteBitmapDB (localSDB, dx - (mplasmatorp_width / 2), - dy - (mplasmatorp_height / 2), - mplasmatorp, plasmatorpColor (pt)); -#endif + mplasmatorp, plasmatorpColor (pt), w); clearzone[0][clearcount] = dx - (mplasmatorp_width / 2); clearzone[1][clearcount] = dy - (mplasmatorp_height / 2); clearzone[2][clearcount] = mplasmatorp_width; @@ -2296,11 +2065,7 @@ else continue; -#ifndef DOUBLE_BUFFERING W_CacheLine (w, sx, sy, ex, ey, sl->color); -#else - W_CacheLineDB (localSDB, sx, sy, ex, ey, sl->color); -#endif clearline[0][clearlcount] = sx; clearline[1][clearlcount] = sy; clearline[2][clearlcount] = ex; @@ -2321,11 +2086,7 @@ if (ey > WINSIDE - 1) ey = WINSIDE - 1; /* XFIX */ -#ifndef DOUBLE_BUFFERING W_CacheLine (w, dx, sy, dx, ey, warningColor); -#else - W_CacheLineDB (localSDB, dx, sy, dx, ey, warningColor); -#endif clearline[0][clearlcount] = dx; clearline[1][clearlcount] = sy; clearline[2][clearlcount] = dx; @@ -2343,11 +2104,7 @@ if (ey > WINSIDE - 1) ey = WINSIDE - 1; /* XFIX */ -#ifndef DOUBLE_BUFFERING W_CacheLine (w, dx, sy, dx, ey, warningColor); -#else - W_CacheLineDB (localSDB, dx, sy, dx, ey, warningColor); -#endif clearline[0][clearlcount] = dx; clearline[1][clearlcount] = sy; clearline[2][clearlcount] = dx; @@ -2365,11 +2122,7 @@ if (ex > WINSIDE - 1) ex = WINSIDE - 1; /* XFIX */ -#ifndef DOUBLE_BUFFERING W_CacheLine (w, sx, dy, ex, dy, warningColor); -#else - W_CacheLineDB (localSDB, sx, dy, ex, dy, warningColor); -#endif clearline[0][clearlcount] = sx; clearline[1][clearlcount] = dy; clearline[2][clearlcount] = ex; @@ -2387,11 +2140,7 @@ if (ex > WINSIDE - 1) ex = WINSIDE - 1; /* XFIX */ -#ifndef DOUBLE_BUFFERING W_CacheLine (w, sx, dy, ex, dy, warningColor); -#else - W_CacheLineDB (localSDB, sx, dy, ex, dy, warningColor); -#endif clearline[0][clearlcount] = sx; clearline[1][clearlcount] = dy; clearline[2][clearlcount] = ex; @@ -2400,27 +2149,24 @@ } - /* Change border color to signify alert status */ - + /* Decided to always redraw alert borders, was causing too many problems with + the infrequent draw rate - BB */ if (oldalert != (me->p_flags & (PFGREEN | PFYELLOW | PFRED))) + playalert = 1; + oldalert = (me->p_flags & (PFGREEN | PFYELLOW | PFRED)); + switch (oldalert) { - oldalert = (me->p_flags & (PFGREEN | PFYELLOW | PFRED)); - switch (oldalert) + case PFGREEN: + if (extraAlertBorder) { - case PFGREEN: - if (extraAlertBorder) - { -#ifndef DOUBLE_BUFFERING - W_ChangeBorder (w, gColor); - W_ChangeBorder (mapw, gColor); -#else - W_ChangeBorderDB (localSDB, gColor); - W_ChangeBorderDB (mapSDB, gColor); -#endif - } - W_ChangeBorder (baseWin, gColor); + W_ChangeBorder (w, gColor); + W_ChangeBorder (mapw, gColor); + } + W_ChangeBorder (baseWin, gColor); #if defined(SOUND) + if (playalert) + { if (newSound) // Kill any channels with WARNING_WAV or RED_ALERT_WAV (group 2) Mix_HaltGroup(2); else @@ -2428,25 +2174,20 @@ Abort_Sound(WARNING_SOUND); Abort_Sound(RED_ALERT_SOUND); } - -#endif - - break; - case PFYELLOW: - if (extraAlertBorder) - { -#ifndef DOUBLE_BUFFERING - W_ChangeBorder (w, yColor); - W_ChangeBorder (mapw, yColor); -#else - W_ChangeBorderDB (localSDB, yColor); - W_ChangeBorderDB (mapSDB, yColor); + } #endif - } - W_ChangeBorder (baseWin, yColor); + break; + case PFYELLOW: + if (extraAlertBorder) + { + W_ChangeBorder (w, yColor); + W_ChangeBorder (mapw, yColor); + } + W_ChangeBorder (baseWin, yColor); #if defined(SOUND) - + if (playalert) + { if (newSound) // Kill any channels with RED_ALERT_WAV (group 2) { Mix_HaltGroup(2); @@ -2457,33 +2198,29 @@ Abort_Sound(RED_ALERT_SOUND); Play_Sound(WARNING_SOUND); } - -#endif - - break; - case PFRED: - if (extraAlertBorder) - { -#ifndef DOUBLE_BUFFERING - W_ChangeBorder (w, rColor); - W_ChangeBorder (mapw, rColor); -#else - W_ChangeBorderDB (localSDB, rColor); - W_ChangeBorderDB (mapSDB, rColor); + } #endif - } - W_ChangeBorder (baseWin, rColor); - + break; + case PFRED: + if (extraAlertBorder) + { + W_ChangeBorder (w, rColor); + W_ChangeBorder (mapw, rColor); + } + W_ChangeBorder (baseWin, rColor); + #if defined(SOUND) + if (playalert) + { if (newSound) Play_Sound(RED_ALERT_WAV); else Play_Sound(RED_ALERT_SOUND); -#endif - - break; } +#endif + break; } + playalert = 0; #if defined(SOUND) if (newSound) @@ -2577,11 +2314,7 @@ } if (tri_x != -1) { -#ifndef DOUBLE_BUFFERING W_WriteTriangle (w, tri_x, tri_y, 4, facing, foreColor); -#else - W_WriteTriangleDB (localSDB, tri_x, tri_y, 4, facing, foreColor); -#endif clearzone[0][clearcount] = tri_x - tri_size - 1; clearzone[1][clearcount] = tri_y - 1 + (facing ? 0 : -tri_size); clearzone[2][clearcount] = tri_size * 2 + 2; @@ -2598,9 +2331,8 @@ Draw out the 'tactical' map */ { -#ifdef DOUBLE_BUFFERING - W_Win2Mem (localSDB); -#endif + if (doubleBuffering) + W_Win2Mem (localSDB); clearLocal (); @@ -2619,9 +2351,8 @@ weaponUpdate = 0; DrawMisc (); -#ifdef DOUBLE_BUFFERING - W_Mem2Win (localSDB); -#endif + if (doubleBuffering) + W_Mem2Win (localSDB); } @@ -2635,11 +2366,7 @@ { if (W_FastClear) { -#ifndef DOUBLE_BUFFERING W_ClearWindow (w); -#else - W_ClearWindowDB (localSDB); -#endif clearcount = 0; clearlcount = 0; tractcurrent = tracthead; @@ -2647,44 +2374,25 @@ else { // Much more efficient way of clearing -- X programmers take note! -#ifndef DOUBLE_BUFFERING W_ClearAreas (w, clearzone[0], clearzone[1], clearzone[2], clearzone[3], clearcount); -#else - W_ClearAreasDB (localSDB, clearzone[0], clearzone[1], clearzone[2], - clearzone[3], clearcount); -#endif clearcount = 0; /* erase the tractor lines [BDyess] */ for (tractrunner = tracthead; tractrunner != tractcurrent; tractrunner = tractrunner->next) { -#ifndef DOUBLE_BUFFERING W_MakeTractLine (w, tractrunner->sx, tractrunner->sy, tractrunner->d1x, tractrunner->d1y, backColor); W_MakeTractLine (w, tractrunner->sx, tractrunner->sy, tractrunner->d2x, tractrunner->d2y, backColor); -#else - W_MakeTractLineDB (localSDB, tractrunner->sx, tractrunner->sy, - tractrunner->d1x, tractrunner->d1y, - backColor); - W_MakeTractLineDB (localSDB, tractrunner->sx, tractrunner->sy, - tractrunner->d2x, tractrunner->d2y, - backColor); -#endif } tractcurrent = tracthead; -#ifndef DOUBLE_BUFFERING W_MakeLines (w, clearline[0], clearline[1], clearline[2], clearline[3], clearlcount, backColor); -#else - W_MakeLinesDB (localSDB, clearline[0], clearline[1], clearline[2], - clearline[3], clearlcount, backColor); -#endif clearlcount = 0; } } Index: death.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/death.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- death.c 14 May 2006 02:14:54 -0000 1.6 +++ death.c 21 May 2006 09:56:38 -0000 1.7 @@ -39,6 +39,7 @@ { W_Event event; + ingame = 0; #ifdef AUTOKEY if (autoKey) autoKeyAllOff (); @@ -51,13 +52,8 @@ { if (extraAlertBorder) { -#ifndef DOUBLE_BUFFERING W_ChangeBorder (w, gColor); W_ChangeBorder (mapw, gColor); -#else - W_ChangeBorderDB (localSDB, gColor); - W_ChangeBorderDB (mapSDB, gColor); -#endif } W_ChangeBorder (baseWin, gColor); oldalert = PFGREEN; @@ -223,7 +219,8 @@ { /* Otherwise we aren't within a thread, so... */ while (W_EventsPending ()) W_NextEvent (&event); - + + ingame = 0; longjmp (env, 0); } #endif /* Threaded */ Index: option.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/option.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- option.c 14 May 2006 02:14:54 -0000 1.14 +++ option.c 21 May 2006 09:56:39 -0000 1.15 @@ -387,6 +387,7 @@ #ifdef XTRA_MESSAGE_UI {1, "", &messageHUD, 0, 0, 0, messagehudmess, &messagehud_range}, #endif + {1, "use double buffering", &doubleBuffering, 0, 0, 0, NULL, NULL}, {1, "done", ¬done, 0, 0, 0, NULL, NULL}, {-1, NULL, 0, 0, 0, 0, NULL, NULL} }; @@ -890,6 +891,13 @@ showHockeyScore = 0; } #endif + /* Let's see if this is our double buffering changed */ + else if (op->op_option == &doubleBuffering) + { + W_ClearWindow (w); + W_ClearWindow (mapw); + redrawall = 1; + } else if (op->op_option == &partitionPlist) RedrawPlayerList (); else if (op->op_option == &sortPlayers) Index: check.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/check.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- check.c 21 Apr 2006 12:00:06 -0000 1.3 +++ check.c 21 May 2006 09:56:38 -0000 1.4 @@ -77,7 +77,6 @@ if (connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0) { perror ("connect"); - close (sock); terminate (0); } @@ -89,6 +88,5 @@ { perror ("read"); } - close (sock); terminate (0); } Index: data.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/data.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- data.c 20 May 2006 17:09:39 -0000 1.22 +++ data.c 21 May 2006 09:56:38 -0000 1.23 @@ -32,6 +32,8 @@ struct mctl *mctl; struct memory universe; +int ingame = 0; /* If player is in game - to distinguish between whether + to use double buffering on the local and map window */ int ghoststart = 0; /* is this a ghostbust * restart? */ int ghost_pno = 0; /* is this a ghostbust @@ -733,10 +735,10 @@ struct stringlist *defaults = NULL; -#ifdef DOUBLE_BUFFERING SDBUFFER * localSDB = NULL; SDBUFFER * mapSDB = NULL; -#endif + +int doubleBuffering = 1; /* Use double buffering to draw map/local */ int disableWinkey = 1; /* disable WinKey + ContextKey by default */ Index: main.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/main.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- main.c 7 May 2006 16:59:27 -0000 1.5 +++ main.c 21 May 2006 09:56:38 -0000 1.6 @@ -121,9 +121,9 @@ { case 'C': /* character name */ - if (i < argc) + if (i < argc && argv[i + 1]) { - (void) STRNCPY (pseudo, argv[i], sizeof (pseudo)); + (void) STRNCPY (pseudo, argv[i + 1], sizeof (argv[i + 1])); i++; } else @@ -131,9 +131,9 @@ break; case 'A': /* authorization password */ - if (i < argc) + if (i < argc && argv[i + 1]) { - (void) STRNCPY (defpasswd, argv[i], sizeof (defpasswd)); + (void) STRNCPY (defpasswd, argv[i + 1], sizeof (argv[i + 1])); i++; } else @@ -151,7 +151,7 @@ break; case 's': /* listen socket number */ - if (i < argc) + if (i < argc && argv[i + 1]) { xtrekPort = atoi (argv[i + 1]); passive = 1; @@ -166,7 +166,7 @@ /* No break */ case 'f': /* record to cambot file */ - if (i < argc) + if (i < argc && argv[i + 1]) { recordFileName = argv[i + 1]; i++; @@ -176,7 +176,7 @@ break; #endif case 'l': /* log to file */ - if (i < argc) + if (i < argc && argv[i + 1]) { logFileName = argv[i + 1]; i++; @@ -186,7 +186,7 @@ break; case 'p': /* port to connect to */ - if (i < argc) + if (i < argc && argv[i + 1]) { xtrekPort = atoi (argv[i + 1]); i++; @@ -196,7 +196,7 @@ break; case 'd': - if (i < argc) + if (i < argc && argv[i + 1]) { display_host = argv[i + 1]; i++; @@ -253,7 +253,7 @@ #endif case 'h': /* server to connect to */ - if (i < argc) + if (i < argc && argv[i + 1]) { servertmp = argv[i + 1]; if (metablock(servertmp)) @@ -276,7 +276,7 @@ #ifdef GATEWAY case 'H': /* gateway to connect through */ hset++; - if (i < argc) + if (i < argc && argv[i + 1]) { netaddr = strToNetaddr (argv[i + 1]; i++; @@ -286,7 +286,7 @@ break; #endif case 'U': /* local UDP port */ - if (i < argc) + if (i < argc && argv[i + 1]) { if ((baseUdpLocalPort = atoi (argv[i + 1])) == 0) { @@ -305,7 +305,7 @@ break; #endif case 'G': /* try restarting previous session */ - if (i < argc) + if (i < argc && argv[i + 1]) { ghoststart++; ghost_pno = atoi (argv[i + 1]); @@ -317,7 +317,7 @@ break; case 't': /* window title */ - if (i < argc) + if (i < argc && argv[i + 1]) { title = argv[i + 1]; i++; @@ -327,7 +327,7 @@ break; case 'r': /* defaults file */ - if (i < argc) + if (i < argc && argv[i + 1]) { deffile = argv[i + 1]; i++; @@ -371,15 +371,16 @@ if (!usemeta && !servertmp) /* no meta type was selected, pick metaserver */ usemeta = 1; - - if (hideConsole) - FreeConsole (); if (usage || err) { printUsage (name); + if (hideConsole) + FreeConsole (); exit (err); } + if (hideConsole) + FreeConsole (); #ifdef GATEWAY if (!hset) use_trekhopd = 0; /* allow use via normal connections */ Index: cowmain.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/cowmain.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- cowmain.c 7 May 2006 16:59:27 -0000 1.12 +++ cowmain.c 21 May 2006 09:56:38 -0000 1.13 @@ -555,7 +555,7 @@ serverName = gateway; #endif - pseudo[0] = defpasswd[0] = '\0'; +// pseudo[0] = defpasswd[0] = '\0'; /* Why was this ever put in? */ #ifdef RECORDGAME if (recordFileName != NULL) @@ -1082,7 +1082,7 @@ Play_Sound(ENGINE_SOUND); } #endif - + ingame = 1; /* Get input until the player quits or dies */ input (); Index: map.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/map.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- map.c 20 May 2006 17:09:39 -0000 1.10 +++ map.c 21 May 2006 09:56:38 -0000 1.11 @@ -333,7 +333,7 @@ /*** planetResourcesC() /******************************************************************************/ extern inline void -planetResourcesC (SDBUFFER * sdb, register struct planet *p, int destwidth, int destheight, +planetResourcesC (register struct planet *p, int destwidth, int destheight, int dx, int dy, W_Window window) /* * Draw the resources for a colorized planet. @@ -347,35 +347,35 @@ { /* Select resources */ if (p->pl_armies > 4) - W_OverlayScaleBitmapDB(sdb, dx - 7 * destwidth / 8, - dy - (destheight / 2), - destwidth/3, - destheight, - BMP_ARMY_WIDTH, - BMP_ARMY_HEIGHT, - 0, - army_bitmap, planetColor(p), - window); + W_WriteScaleBitmap(dx - 7 * destwidth / 8, + dy - (destheight / 2), + destwidth/3, + destheight, + BMP_ARMY_WIDTH, + BMP_ARMY_HEIGHT, + 0, + army_bitmap, planetColor(p), + window); if (p->pl_flags & PLREPAIR) - W_OverlayScaleBitmapDB(sdb, dx - (destwidth / 2), - dy - (5 * destheight / 6), - destwidth, - destheight/3, - BMP_WRENCH_WIDTH, - BMP_WRENCH_HEIGHT, - 0, - wrench_bitmap, planetColor(p), - window); + W_WriteScaleBitmap(dx - (destwidth / 2), + dy - (5 * destheight / 6), + destwidth, + destheight/3, + BMP_WRENCH_WIDTH, + BMP_WRENCH_HEIGHT, + 0, + wrench_bitmap, planetColor(p), + window); if (p->pl_flags & PLFUEL) - W_OverlayScaleBitmapDB(sdb, dx + 3 * destwidth / 5, - dy - (destheight / 2), - destwidth/3, - destheight, - BMP_FUEL_WIDTH, - BMP_FUEL_HEIGHT, - 0, - fuel_bitmap, planetColor(p), - window); + W_WriteScaleBitmap(dx + 3 * destwidth / 5, + dy - (destheight / 2), + destwidth/3, + destheight, + BMP_FUEL_WIDTH, + BMP_FUEL_HEIGHT, + 0, + fuel_bitmap, planetColor(p), + window); } return; } @@ -429,21 +429,17 @@ ody = pl_update[l->pl_no].plu_y * WINSIDE / GWIDTH; /* XFIX */ -#ifndef DOUBLE_BUFFERING - W_ClearArea (mapw, odx - (BMP_MPLANET_WIDTH / 2), - ody - (BMP_MPLANET_HEIGHT / 2), - BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT); + if (planetBitmapGalaxy == 3) // Needs adjusting + W_ClearArea (mapw, odx - 7 * BMP_MPLANET_WIDTH / 8, + ody - (5 * BMP_MPLANET_HEIGHT / 6), + 7 * BMP_MPLANET_WIDTH / 4, 4 * BMP_MPLANET_HEIGHT / 3); + else + W_ClearArea (mapw, odx - (BMP_MPLANET_WIDTH / 2), + ody - (BMP_MPLANET_HEIGHT / 2), + BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT); W_WriteText (mapw, odx - (BMP_MPLANET_WIDTH / 2), ody + (BMP_MPLANET_HEIGHT / 2), backColor, l->pl_name, 3, planetFont (l)); -#else - W_ClearAreaDB (mapSDB, odx - (BMP_MPLANET_WIDTH / 2), - ody - (BMP_MPLANET_HEIGHT / 2), - BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT); - W_WriteTextDB (mapSDB, odx - (BMP_MPLANET_WIDTH / 2), - ody + (BMP_MPLANET_HEIGHT / 2), - backColor, l->pl_name, 3, planetFont (l)); -#endif pl_update[l->pl_no].plu_update = 0; } else @@ -451,15 +447,15 @@ /* Clear the planet normally */ /* XFIX */ -#ifndef DOUBLE_BUFFERING - W_ClearArea (mapw, dx - (BMP_MPLANET_WIDTH / 2 + 8), - dy - (BMP_MPLANET_HEIGHT / 2 + 4), - BMP_MPLANET_WIDTH + 8, BMP_MPLANET_HEIGHT + 8); -#else - W_ClearAreaDB (mapSDB, dx - 7 * BMP_MPLANET_WIDTH / 8, - dy - (5 * BMP_MPLANET_HEIGHT / 6), - 7 * BMP_MPLANET_WIDTH / 4, 4 * BMP_MPLANET_HEIGHT / 3); -#endif + if (planetBitmapGalaxy == 3) // Needs adjusting + W_ClearArea (mapw, dx - 7 * BMP_MPLANET_WIDTH / 8, + dy - (5 * BMP_MPLANET_HEIGHT / 6), + 7 * BMP_MPLANET_WIDTH / 4, 4 * BMP_MPLANET_HEIGHT / 3); + + else + W_ClearArea (mapw, dx - (BMP_MPLANET_WIDTH / 2 + 4), + dy - (BMP_MPLANET_HEIGHT / 2 + 4), + BMP_MPLANET_WIDTH + 8, BMP_MPLANET_HEIGHT + 8); l->pl_flags &= ~PLCLEAR; } @@ -473,11 +469,10 @@ if (planetBitmapGalaxy == 3) { -#ifndef DOUBLE_BUFFERING - W_OverlayBitmap(dx - (emph_planet_seq_width / 2 + 1), + W_WriteBitmap(dx - (emph_planet_seq_width / 2 + 1), dy - (emph_planet_seq_height / 2), emph_planet_seq[seq_n], - W_White); + W_White, mapw); W_WriteScaleBitmap(dx - (BMP_MPLANET_WIDTH / 2), dy - (BMP_MPLANET_HEIGHT / 2), @@ -490,45 +485,17 @@ mapw); /* Draw planet resources */ - planetResourcesC(mapSDB, l, BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT, dx, dy, mapw); -#else - W_OverlayBitmapDB(mapSDB, dx - (emph_planet_seq_width / 2 + 1), - dy - (emph_planet_seq_height / 2), - emph_planet_seq[seq_n], - W_White); - - W_WriteScaleBitmapDB(mapSDB, dx - (BMP_MPLANET_WIDTH / 2), - dy - (BMP_MPLANET_HEIGHT / 2), - BMP_MPLANET_WIDTH, - BMP_MPLANET_HEIGHT, - BMP_CPLANET_WIDTH, - BMP_CPLANET_HEIGHT, - 0, - planetBitmapC(l), planetColor(l), - mapw); - /* Draw planet resources */ - planetResourcesC(mapSDB, l, BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT, dx, dy, mapw); -#endif + planetResourcesC(l, BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT, dx, dy, mapw); } else { -#ifndef DOUBLE_BUFFERING - W_OverlayBitmap(dx - (emph_planet_seq_width / 2 + 1), + W_WriteBitmap(dx - (emph_planet_seq_width / 2 + 1), dy - (emph_planet_seq_height / 2), emph_planet_seq[seq_n], - W_White); + W_White, mapw); W_WriteBitmap(dx - (BMP_MPLANET_WIDTH / 2), dy - (BMP_MPLANET_HEIGHT / 2), - planetmBitmap(l), planetColor(l)); -#else - W_OverlayBitmapDB(mapSDB, dx - (emph_planet_seq_width / 2 + 1), - dy - (emph_planet_seq_height / 2), - emph_planet_seq[seq_n], - W_White); - - W_WriteBitmapDB(mapSDB, dx - (BMP_MPLANET_WIDTH / 2), dy - (BMP_MPLANET_HEIGHT / 2), - planetmBitmap(l), planetColor(l)); -#endif + planetmBitmap(l), planetColor(l), mapw); } emph_planet_seq_n[l->pl_no] -= 1; l->pl_flags |= PLREDRAW; /* Leave redraw on until * * @@ -541,7 +508,6 @@ #endif // Beeplite end if (planetBitmapGalaxy == 3) { -#ifndef DOUBLE_BUFFERING W_WriteScaleBitmap (dx - (BMP_MPLANET_WIDTH / 2), dy - (BMP_MPLANET_HEIGHT / 2), BMP_MPLANET_WIDTH, @@ -553,33 +519,13 @@ planetColor (l), mapw); /* Draw planet resources */ - planetResourcesC(mapSDB, l, BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT, dx, dy, mapw); -#else - W_WriteScaleBitmapDB (mapSDB, dx - (BMP_MPLANET_WIDTH / 2), - dy - (BMP_MPLANET_HEIGHT / 2), - BMP_MPLANET_WIDTH, - BMP_MPLANET_HEIGHT, - BMP_CPLANET_WIDTH, - BMP_CPLANET_HEIGHT, - 0, - planetBitmapC (l), - planetColor (l), - mapw); - /* Draw planet resources */ - planetResourcesC(mapSDB, l, BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT, dx, dy, mapw); -#endif + planetResourcesC(l, BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT, dx, dy, mapw); } else { -#ifndef DOUBLE_BUFFERING - W_OverlayBitmap (dx - (BMP_MPLANET_WIDTH / 2), + W_WriteBitmap (dx - (BMP_MPLANET_WIDTH / 2), dy - (BMP_MPLANET_HEIGHT / 2), planetmBitmap (l), - planetColor (l)); -#else - W_OverlayBitmapDB (mapSDB, dx - (BMP_MPLANET_WIDTH / 2), - dy - (BMP_MPLANET_HEIGHT / 2), planetmBitmap (l), - planetColor (l)); -#endif + planetColor (l), mapw); } #ifdef BEEPLITE } @@ -592,40 +538,22 @@ agri_name[0] = (char) (toupper (l->pl_name[0])); agri_name[1] = (char) (toupper (l->pl_name[1])); agri_name[2] = (char) (toupper (l->pl_name[2])); -#ifndef DOUBLE_BUFFERING W_WriteText (mapw, dx - (BMP_MPLANET_WIDTH / 2), dy + (BMP_MPLANET_HEIGHT / 2), getAgriColor (l), agri_name, 3, planetFont (l)); -#else - W_WriteTextDB (mapSDB, dx - (BMP_MPLANET_WIDTH / 2), - dy + (BMP_MPLANET_HEIGHT / 2), getAgriColor (l), - agri_name, 3, planetFont (l)); -#endif } else { -#ifndef DOUBLE_BUFFERING W_WriteText (mapw, dx - (BMP_MPLANET_WIDTH / 2), dy + (BMP_MPLANET_HEIGHT / 2), getAgriColor (l), l->pl_name, 3, planetFont (l)); -#else - W_WriteTextDB (mapSDB, dx - (BMP_MPLANET_WIDTH / 2), - dy + (BMP_MPLANET_HEIGHT / 2), getAgriColor (l), - l->pl_name, 3, planetFont (l)); -#endif } } else { -#ifndef DOUBLE_BUFFERING W_WriteText (mapw, dx - (BMP_MPLANET_WIDTH / 2), dy + (BMP_MPLANET_HEIGHT / 2), planetColor (l), l->pl_name, 3, planetFont (l)); -#else - W_WriteTextDB (mapSDB, dx - (BMP_MPLANET_WIDTH / 2), - dy + (BMP_MPLANET_HEIGHT / 2), planetColor (l), - l->pl_name, 3, planetFont (l)); -#endif } if (showIND && ((l->pl_info & me->p_team) @@ -634,7 +562,6 @@ #endif ) && (l->pl_owner == NOBODY)) { -#ifndef DOUBLE_BUFFERING W_MakeLine (mapw, dx + (BMP_MPLANET_WIDTH / 2 - 1), dy + (BMP_MPLANET_HEIGHT / 2 - 1), dx - (BMP_MPLANET_WIDTH / 2), @@ -643,16 +570,6 @@ dy + (BMP_MPLANET_HEIGHT / 2 - 1), dx + (BMP_MPLANET_WIDTH / 2 - 1), dy - (BMP_MPLANET_HEIGHT / 2), W_White); -#else - W_MakeLineDB (mapSDB, dx + (BMP_MPLANET_WIDTH / 2 - 1), - dy + (BMP_MPLANET_HEIGHT / 2 - 1), - dx - (BMP_MPLANET_WIDTH / 2), - dy - (BMP_MPLANET_HEIGHT / 2), W_White); - W_MakeLineDB (mapSDB, dx - (BMP_MPLANET_WIDTH / 2), - dy + (BMP_MPLANET_HEIGHT / 2 - 1), - dx + (BMP_MPLANET_WIDTH / 2 - 1), - dy - (BMP_MPLANET_HEIGHT / 2), W_White); -#endif } if (showPlanetOwner) @@ -662,13 +579,8 @@ || playback #endif )? tolower (teamlet[l->pl_owner]) : '?'); -#ifndef DOUBLE_BUFFERING W_WriteText (mapw, dx + (BMP_MPLANET_WIDTH / 2) + 2, dy - 6, planetColor (l), &ch, 1, planetFont (l)); -#else - W_WriteTextDB (mapSDB, dx + (BMP_MPLANET_WIDTH / 2) + 2, - dy - 6, planetColor (l), &ch, 1, planetFont (l)); -#endif } } } @@ -684,12 +596,7 @@ for (sl = map_hockey_lines + NUM_HOCKEY_LINES - 1; sl >= map_hockey_lines; --sl) { -#ifndef DOUBLE_BUFFERING W_CacheLine (mapw, sl->begin_x, sl->begin_y, sl->end_x, sl->end_y, sl->color); -#else - W_CacheLineDB (mapSDB, sl->begin_x, sl->begin_y, sl->end_x, sl->end_y, sl->color); -#endif - } } @@ -745,23 +652,12 @@ ori_offset = 3; kli_offset = 8; } - -#ifndef DOUBLE_BUFFERING W_WriteText (mapw, ori_offset * W_Textwidth, 1 * W_Textheight, W_Ori, ori_score_line, strlen (ori_score_line), W_RegularFont); W_WriteText (mapw, 6 * W_Textwidth, 1 * W_Textheight, W_White, ":", 1, W_RegularFont); W_WriteText (mapw, kli_offset * W_Textwidth, 1 * W_Textheight, W_Kli, kli_score_line, strlen (kli_score_line), W_RegularFont); -#else - W_WriteTextDB (mapSDB, ori_offset * W_Textwidth, 1 * W_Textheight, W_Ori, - ori_score_line, strlen (ori_score_line), W_RegularFont); - W_WriteTextDB (mapSDB, 6 * W_Textwidth, 1 * W_Textheight, W_White, - ":", 1, W_RegularFont); - W_WriteTextDB (mapSDB, kli_offset * W_Textwidth, 1 * W_Textheight, W_Kli, - kli_score_line, strlen (kli_score_line), W_RegularFont); -#endif - } #endif /* HOCKEY_LINES */ @@ -793,9 +689,8 @@ int view = WINSIDE * SCALE / 2; int mvx, mvy; -#ifdef DOUBLE_BUFFERING - W_Win2Mem (mapSDB); -#endif + if (doubleBuffering) + W_Win2Mem (mapSDB); dx = (me->p_x) / (GWIDTH / WINSIDE); dy = (me->p_y) / (GWIDTH / WINSIDE); @@ -813,12 +708,8 @@ /* Don't do anything if initPlanets() has not been called */ return; } - -#ifndef DOUBLE_BUFFERING W_ClearWindow (mapw); -#else - W_ClearWindowDB (mapSDB); -#endif + clearlock = 0; clearviewbox = 0; viewboxcleared = 0; @@ -840,13 +731,8 @@ if (clearlock) { clearlock = 0; -#ifndef DOUBLE_BUFFERING W_WriteTriangle (mapw, clearlmark[0], clearlmark[1], clearlmark[2], clearlmark[3], backColor); -#else - W_WriteTriangleDB (mapSDB, clearlmark[0], clearlmark[1], - clearlmark[2], clearlmark[3], backColor); -#endif } if (clearviewbox) @@ -854,30 +740,13 @@ clearviewbox = 0; /* clear old dots - placed here for less flicker */ if (viewx + viewdist < WINSIDE && viewy + viewdist < WINSIDE) -#ifndef DOUBLE_BUFFERING W_MakePoint (mapw, viewx + viewdist, viewy + viewdist, backColor); -#else - W_MakePointDB (mapSDB, viewx + viewdist, viewy + viewdist, backColor); -#endif if (viewx + viewdist < WINSIDE && viewy - viewdist > 0) -#ifndef DOUBLE_BUFFERING W_MakePoint (mapw, viewx + viewdist, viewy - viewdist, backColor); -#else - W_MakePointDB (mapSDB, viewx + viewdist, viewy - viewdist, backColor); -#endif if (viewx - viewdist > 0 && viewy + viewdist < WINSIDE) -#ifndef DOUBLE_BUFFERING W_MakePoint (mapw, viewx - viewdist, viewy + viewdist, backColor); -#else - W_MakePointDB (mapSDB, viewx - viewdist, viewy + viewdist, backColor); -#endif if (viewx - viewdist > 0 && viewy - viewdist > 0) -#ifndef DOUBLE_BUFFERING W_MakePoint (mapw, viewx - viewdist, viewy - viewdist, backColor); -#else - W_MakePointDB (mapSDB, viewx - viewdist, viewy - viewdist, backColor); -#endif - /* redraw any planets they overwrote */ mvx = viewx * (GWIDTH / WINSIDE); /* correct from view scale */ mvy = viewy * (GWIDTH / WINSIDE); @@ -900,14 +769,8 @@ if (mclearzone[2][i]) { /* XFIX */ -#ifndef DOUBLE_BUFFERING W_ClearArea (mapw, mclearzone[0][i], mclearzone[1][i], mclearzone[2][i], mclearzone[3][i]); -#else - W_ClearAreaDB (mapSDB, mclearzone[0][i], mclearzone[1][i], - mclearzone[2][i], mclearzone[3][i]); -#endif - /* Redraw the hole just left next update */ checkRedraw (mclearzone[4][i], mclearzone[5][i]); mclearzone[2][i] = 0; @@ -946,29 +809,13 @@ { /* draw the new points */ if (dx + viewdist < WINSIDE && dy + viewdist < WINSIDE) -#ifndef DOUBLE_BUFFERING W_MakePoint (mapw, dx + viewdist, dy + viewdist, W_White); -#else - W_MakePointDB (mapSDB, dx + viewdist, dy + viewdist, W_White); -#endif if (dx + viewdist < WINSIDE && dy - viewdist > 0) -#ifndef DOUBLE_BUFFERING W_MakePoint (mapw, dx + viewdist, dy - viewdist, W_White); -#else - W_MakePointDB (mapSDB, dx + viewdist, dy - viewdist, W_White); -#endif if (dx - viewdist > 0 && dy + viewdist < WINSIDE) -#ifndef DOUBLE_BUFFERING W_MakePoint (mapw, dx - viewdist, dy + viewdist, W_White); -#else - W_MakePointDB (mapSDB, dx - viewdist, dy + viewdist, W_White); -#endif if (dx - viewdist > 0 && dy - viewdist > 0) -#ifndef DOUBLE_BUFFERING W_MakePoint (mapw, dx - viewdist, dy - viewdist, W_White); -#else - W_MakePointDB (mapSDB, dx - viewdist, dy - viewdist, W_White); -#endif viewx = dx; /* store the points for later */ viewy = dy; /* clearing */ @@ -1014,48 +861,24 @@ if (j->p_flags & PFCLOAK) { if (omitTeamLetter) -#ifndef DOUBLE_BUFFERING W_WriteText (mapw, dx - (W_Textwidth / 2), dy - W_Textheight / 2, unColor, cloakChars, 1, W_RegularFont); -#else - W_WriteTextDB (mapSDB, dx - (W_Textwidth / 2), - dy - W_Textheight / 2, unColor, cloakChars, - (cloakChars[1] == '\0' ? 1 : 2), W_RegularFont); -#endif else -#ifndef DOUBLE_BUFFERING W_WriteText (mapw, dx - W_Textwidth, dy - W_Textheight / 2, unColor, cloakChars, (cloakChars[1] == '\0' ? 1 : 2), W_RegularFont); -#else - W_WriteTextDB (mapSDB, dx - W_Textwidth, - dy - W_Textheight / 2, unColor, cloakChars, - (cloakChars[1] == '\0' ? 1 : 2), W_RegularFont); -#endif } else { if (omitTeamLetter) -#ifndef DOUBLE_BUFFERING W_WriteText (mapw, dx - (W_Textwidth / 2), dy - W_Textheight / 2, playerColor (j), (j->p_mapchars)+1, 1, shipFont (j)); -#else - W_WriteTextDB (mapSDB, dx - (W_Textwidth / 2), - dy - W_Textheight / 2, playerColor (j), - (j->p_mapchars)+1, 1, shipFont (j)); -#endif else -#ifndef DOUBLE_BUFFERING W_WriteText (mapw, dx - W_Textwidth, dy - W_Textheight / 2, playerColor (j), j->p_mapchars, 2, shipFont (j)); -#else - W_WriteTextDB (mapSDB, dx - W_Textwidth, - dy - W_Textheight / 2, playerColor (j), - j->p_mapchars, 2, shipFont (j)); -#endif } #ifdef BEEPLITE @@ -1064,17 +887,10 @@ { int seq_n = emph_player_seq_n[i] % emph_player_seq_frames; -#ifndef DOUBLE_BUFFERING W_WriteBitmap(dx - (emph_player_seq_width / 2 - 1), dy - (emph_player_seq_height / 2 + 1), emph_player_seq[seq_n], - W_White); -#else - W_WriteBitmapDB(mapSDB, dx - (emph_player_seq_width / 2 - 1), - dy - (emph_player_seq_height / 2 + 1), - emph_player_seq[seq_n], - W_White); -#endif + W_White, mapw); emph_player_seq_n[i] -= 1; mclearzone[0][i] = dx - (emph_player_seq_width / 2 - 1); mclearzone[1][i] = dy - (emph_player_seq_height / 2 + 1); @@ -1114,11 +930,7 @@ { dx = j->p_x * WINSIDE / GWIDTH; dy = j->p_y * WINSIDE / GWIDTH; -#ifndef DOUBLE_BUFFERING W_WriteTriangle (mapw, dx, dy + 6, 4, 1, foreColor); -#else - W_WriteTriangleDB (mapSDB, dx, dy + 6, 4, 1, foreColor); -#endif clearlmark[0] = dx; clearlmark[1] = dy + 6; @@ -1133,11 +945,7 @@ dx = l->pl_x * WINSIDE / GWIDTH; dy = l->pl_y * WINSIDE / GWIDTH; -#ifndef DOUBLE_BUFFERING W_WriteTriangle (mapw, dx, dy - (BMP_MPLANET_HEIGHT) / 2 - 4, 4, 0, foreColor); -#else - W_WriteTriangleDB (mapSDB, dx, dy - (BMP_MPLANET_HEIGHT) / 2 - 4, 4, 0, foreColor); -#endif clearlmark[0] = dx; clearlmark[1] = dy - (BMP_MPLANET_HEIGHT) / 2 - 4; @@ -1146,7 +954,6 @@ clearlock = 1; } -#ifdef DOUBLE_BUFFERING - W_Mem2Win (mapSDB); -#endif + if (doubleBuffering) + W_Mem2Win (mapSDB); } \ No newline at end of file Index: defaults.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/defaults.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- defaults.c 16 May 2006 05:10:13 -0000 1.17 +++ defaults.c 21 May 2006 09:56:38 -0000 1.18 @@ -130,6 +130,12 @@ NULL } }, + {"doubleBuffering", &doubleBuffering, RC_BOOL, + { + "Use double buffering to reduce screen flicker", + NULL + } + }, {"dynamicBitmaps", &dynamicBitmaps, RC_BOOL, { "Allow switching of ship bitmaps in game. With this option disabled", @@ -1390,6 +1396,7 @@ if (timerType < T_NONE || timerType >= T_TOTAL) timerType = T_SHIP; + doubleBuffering = booleanDefault ("doubleBuffering", doubleBuffering); allowWheelActions = booleanDefault ("allowWheelActions", allowWheelActions); newQuit = booleanDefault ("newQuit", newQuit); newSound = booleanDefault ("newSound", newSound);