Update of /cvsroot/netrek/client/netrekxp/src In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv18138/src Modified Files: data.c defaults.c inform.c map.c mswindow.c newwin.c planetlist.c Log Message: Addition of core flag to planet info and planet menu. New quit window stuff. More work on planet bitmaps and draw functions. Index: mswindow.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/mswindow.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- mswindow.c 14 May 2006 02:14:54 -0000 1.20 +++ mswindow.c 16 May 2006 05:10:13 -0000 1.21 @@ -451,7 +451,8 @@ // Free other bitmaps free (clockpic); - + free (clockhandpic); + for (j = 0; j < NUM_CTORP_TYPES; j++) { for (i = 0; i < BMP_TORPDET_FRAMES; i++) @@ -4967,6 +4968,7 @@ int destheight, int srcwidth, int srcheight, + int angle, W_Icon icon, W_Color color, W_Window window) @@ -4978,6 +4980,8 @@ HBITMAP newbmp; XFORM xForm; int newwidth, newheight; + double radians; + float cosine, sine, xscale, yscale, eDx, eDy; FNHEADER_VOID; // First copy bitmap into new bitmap, and scale it. This makes life @@ -5038,17 +5042,40 @@ SetBkColor (hdc, colortable[color].rgb); SetTextColor (hdc, colortable[BLACK].rgb); + //Convert angle to radians + radians=(2*3.14159*angle/360); + + cosine=(float)cos(radians); + sine=(float)sin(radians); + + // Scale used to find bitmap center + xscale = (float)(newwidth/2); + yscale = (float)(newheight/2); + + eDx = x + xscale - cosine*(xscale) + sine*(yscale); + eDy = y + yscale - cosine*(yscale) - sine*(xscale); SetGraphicsMode(hdc,GM_ADVANCED); + xForm.eM11=cosine; + xForm.eM12=sine; + xForm.eM21=-sine; + xForm.eM22=cosine; + xForm.eDx = eDx; + xForm.eDy = eDy; + + SetWorldTransform(hdc,&xForm); + + BitBlt(hdc, 0, 0, newwidth, newheight, GlobalMemDC2, srcx, srcy, SRCPAINT); + + // 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)x; - xForm.eDy = (float)y; + xForm.eDx = (FLOAT) 0.0; + xForm.eDy = (FLOAT) 0.0; - SetWorldTransform(hdc,&xForm); - BitBlt(hdc, 0, 0, newwidth, newheight, GlobalMemDC2, 0, 0, SRCPAINT); + SetWorldTransform(hdc,&xForm); ReleaseDC (win->hwnd, hdc); DeleteObject (newbmp); @@ -6213,7 +6240,8 @@ void W_OverlayScaleBitmapDB (SDBUFFER * sdb, int x, int y, int destwidth, int destheight, - int srcwidth, int srcheight, W_Icon icon, W_Color color, W_Window window) + int srcwidth, int srcheight, int angle, + W_Icon icon, W_Color color, W_Window window) { register struct Icon *bitmap = (struct Icon *) icon; register int border; @@ -6221,6 +6249,8 @@ HBITMAP newbmp; XFORM xForm; int newwidth, newheight; + double radians; + float cosine, sine, xscale, yscale, eDx, eDy; FNHEADER_VOID; // First copy bitmap into new bitmap, and scale it. This makes life @@ -6280,17 +6310,29 @@ SetBkColor (sdb->mem_dc, colortable[color].rgb); SetTextColor (sdb->mem_dc, colortable[BLACK].rgb); + //Convert angle to radians + radians=(2*3.14159*angle/360); + + cosine=(float)cos(radians); + sine=(float)sin(radians); + + // Scale used to find bitmap center + xscale = (float)(newwidth/2); + yscale = (float)(newheight/2); + + eDx = x + xscale - cosine*(xscale) + sine*(yscale); + eDy = y + yscale - cosine*(yscale) - sine*(xscale); SetGraphicsMode(sdb->mem_dc,GM_ADVANCED); - xForm.eM11 = (FLOAT) 1.0; - xForm.eM12 = (FLOAT) 0.0; - xForm.eM21 = (FLOAT) 0.0; - xForm.eM22 = (FLOAT) 1.0; - xForm.eDx = (float)x; - xForm.eDy = (float)y; + xForm.eM11=cosine; + xForm.eM12=sine; + xForm.eM21=-sine; + xForm.eM22=cosine; + xForm.eDx = eDx; + xForm.eDy = eDy; SetWorldTransform(sdb->mem_dc,&xForm); - BitBlt(sdb->mem_dc, 0, 0, newwidth, newheight, GlobalMemDC2, 0, 0, SRCPAINT); + BitBlt(sdb->mem_dc, 0, 0, newwidth, newheight, GlobalMemDC2, srcx, srcy, SRCPAINT); // Reset xForm xForm.eM11 = (FLOAT) 1.0; @@ -6301,7 +6343,7 @@ xForm.eDy = (FLOAT) 0.0; SetWorldTransform(sdb->mem_dc,&xForm); - + DeleteObject (newbmp); } #endif /* DOUBLE_BUFFERING */ Index: newwin.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/newwin.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- newwin.c 14 May 2006 02:14:54 -0000 1.21 +++ newwin.c 16 May 2006 05:10:13 -0000 1.22 @@ -704,7 +704,7 @@ W_SetWindowButtonHandler (messagew, handleMessageWindowButton); W_SetWindowExposeHandler (messagew, DisplayMessage); - planetw = W_MakeTextWindow ("planet", 10, 10, 53, MAXPLANETS + 3, w, 2); + planetw = W_MakeTextWindow ("planet", 10, 10, 57, MAXPLANETS + 3, w, 2); W_SetWindowExposeHandler (planetw, planetlist); rankw = W_MakeTextWindow ("rank", 50, 300, 65, NUMRANKS + 9, w, 2); @@ -1196,11 +1196,23 @@ stipple = W_StoreBitmap3 ("bitmaps/misclib/stipple.bmp", BMP_STIPPLE_WIDTH, BMP_STIPPLE_HEIGHT, BMP_STIPPLE, w, LR_MONOCHROME); - clockpic = - W_StoreBitmap3 ("bitmaps/misclib/clock.bmp", BMP_CLOCK_WIDTH, - BMP_CLOCK_HEIGHT, BMP_CLOCK, qwin, LR_MONOCHROME); + if (newQuit) + { + clockpic = + W_StoreBitmap3 ("bitmaps/misclib/color/clock.bmp", BMP_CCLOCK_WIDTH, + BMP_CCLOCK_HEIGHT, BMP_CLOCK, qwin, LR_DEFAULTCOLOR); + clockhandpic = + W_StoreBitmap3 ("bitmaps/misclib/color/clockhand.bmp", BMP_CHAND_WIDTH, + BMP_CHAND_HEIGHT, BMP_CLOCKHAND, qwin, LR_DEFAULTCOLOR); + } + else + { + clockpic = + W_StoreBitmap3 ("bitmaps/misclib/clock.bmp", BMP_CLOCK_WIDTH, + BMP_CLOCK_HEIGHT, BMP_CLOCK, qwin, LR_MONOCHROME); + } genopic = - W_StoreBitmap3 ("bitmaps/misclib/genocide.bmp", WINSIDE, + W_StoreBitmap3 ("bitmaps/misclib/color/genocide.bmp", WINSIDE, WINSIDE, BMP_GENO, w, LR_DEFAULTCOLOR); } @@ -1503,7 +1515,7 @@ redrawTeam (teamWin[i], i, &lastplayercount[i]); break; } - if (event.Window == qwin) + if (event.Window == qwin && !newQuit) { redrawQuit (); } @@ -1924,9 +1936,6 @@ W_WriteText (qwin, 5, 5, textColor, "Quit NetrekXP", 13, W_RegularFont); } - -#define CLOCK_WID (BOXSIDE * 9 / 10) -#define CLOCK_HEI (BOXSIDE * 2 / 3) #define CLOCK_BDR 0 #define CLOCK_X (BOXSIDE / 2 - CLOCK_WID / 2) #define CLOCK_Y (BOXSIDE / 2 - CLOCK_HEI / 2) @@ -1939,9 +1948,23 @@ void showTimeLeft (time_t time, time_t max) { + register struct player *j = me; char buf[BUFSIZ], *cp; - int cx, cy, ex, ey, tx, ty; + int cx, cy, tx, ty; + int ex = 0, ey = 0; + int CLOCK_WID, CLOCK_HEI; + int angle; + if (newQuit) + { + CLOCK_WID = BOXSIDE; + CLOCK_HEI = BOXSIDE; + } + else + { + CLOCK_WID = (BOXSIDE * 9 / 10); + CLOCK_HEI = (BOXSIDE * 2 / 3); + } if ((max - time) < 10 && time & 1) { W_Beep (); @@ -1950,21 +1973,40 @@ W_ClearArea (qwin, CLOCK_X, CLOCK_Y, CLOCK_WID, CLOCK_HEI); cx = CLOCK_X + CLOCK_WID / 2; - 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); + if (newQuit) + { + cy = CLOCK_Y + CLOCK_HEI / 2; + + angle = (int)(-360 * time / max); + W_WriteBitmap ( CLOCK_BDR, CLOCK_BDR, clockpic, foreColor); + W_OverlayScaleBitmap (CLOCK_BDR, CLOCK_BDR, BMP_CHAND_WIDTH, BMP_CHAND_HEIGHT, + BMP_CHAND_WIDTH, BMP_CHAND_HEIGHT, + angle, clockhandpic, foreColor, qwin); + sprintf (buf, "%d", max - time); + tx = cx - W_Textwidth * strlen (buf) / 2; + ty = 2*(cy - W_Textheight / 2)/3; + W_WriteText (qwin, tx, ty, textColor, buf, strlen (buf), W_RegularFont); - ex = (int) (cx - BMP_CLOCK_WIDTH * sin (2 * XPI * time / max) / 2); - ey = (int) (cy - BMP_CLOCK_HEIGHT * cos (2 * XPI * time / max) / 2); - W_MakeLine (qwin, cx, cy, ex, ey, foreColor); + cp = "Quit NetrekXP"; + } + else + { + 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); + + ex = (int) (cx - BMP_CLOCK_WIDTH * sin (2 * XPI * time / max) / 2); + ey = (int) (cy - BMP_CLOCK_HEIGHT * cos (2 * XPI * time / max) / 2); + W_MakeLine (qwin, cx, cy, ex, ey, foreColor); - sprintf (buf, "%d", max - time); - tx = cx - W_Textwidth * strlen (buf) / 2; - ty = cy - W_Textheight / 2; - W_WriteText (qwin, tx, ty, textColor, buf, strlen (buf), W_RegularFont); + sprintf (buf, "%d", max - time); + tx = cx - W_Textwidth * strlen (buf) / 2; + ty = cy - W_Textheight / 2; + W_WriteText (qwin, tx, ty, textColor, buf, strlen (buf), W_RegularFont); - cp = "Auto Quit"; + cp = "Auto Quit"; + } tx = CLOCK_X + cx - W_Textwidth * strlen (cp) / 2; ty = CLOCK_Y + CLOCK_HEI - W_Textheight; W_WriteText (qwin, tx, ty, textColor, cp, strlen (cp), W_RegularFont); Index: inform.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/inform.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- inform.c 12 Apr 2006 04:20:03 -0000 1.2 +++ inform.c 16 May 2006 05:10:13 -0000 1.3 @@ -225,13 +225,13 @@ else { /* Planet */ /* Too close to the edge? */ - if (mx + 20 * W_Textwidth + 2 > windowWidth) - mx = windowWidth - 25 * W_Textwidth - 2; + if (mx + 23 * W_Textwidth + 2 > windowWidth) + mx = windowWidth - 28 * W_Textwidth - 2; if (my + 3 * W_Textheight + 2 > windowHeight) my = windowHeight - 3 * W_Textheight - 2; infow = - W_MakeWindow ("info", mx, my, W_Textwidth * 25, W_Textheight * 3, + W_MakeWindow ("info", mx, my, W_Textwidth * 28, W_Textheight * 3, ww, 2, foreColor); W_MapWindow (infow); k = &planets[target->o_num]; @@ -249,10 +249,11 @@ (void) sprintf (buf, "Armies %d", k->pl_armies); W_WriteText (infow, W_Textwidth, W_Textheight * line++, planetColor (k), buf, strlen (buf), W_RegularFont); - (void) sprintf (buf, "%s %s %s %c%c%c%c", + (void) sprintf (buf, "%s %s %s %s %c%c%c%c", (k->pl_flags & PLREPAIR ? "REPAIR" : " "), (k->pl_flags & PLFUEL ? "FUEL" : " "), (k->pl_flags & PLAGRI ? "AGRI" : " "), + (k->pl_flags & PLCORE ? "CORE" : " "), (k->pl_info & FED ? 'F' : ' '), (k->pl_info & ROM ? 'R' : ' '), (k->pl_info & KLI ? 'K' : ' '), Index: planetlist.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/planetlist.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- planetlist.c 21 Jan 2003 21:28:42 -0000 1.1.1.1 +++ planetlist.c 16 May 2006 05:10:13 -0000 1.2 @@ -43,20 +43,21 @@ register struct planet *j; /* W_ClearWindow(planetw); */ - (void) sprintf (buf, "Planet Name own armies REPAIR FUEL AGRI info"); + (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; for (i = 0, j = &planets[i]; i < MAXPLANETS; i++, j++) { if (j->pl_info & me->p_team) { - (void) sprintf (buf, "%-16s %3s %3d %6s %4s %4s %c%c%c%c", + (void) sprintf (buf, "%-16s %3s %3d %6s %4s %4s %4s %c%c%c%c", j->pl_name, teamname[j->pl_owner], j->pl_armies, (j->pl_flags & PLREPAIR ? "REPAIR" : " "), (j->pl_flags & PLFUEL ? "FUEL" : " "), (j->pl_flags & PLAGRI ? "AGRI" : " "), + (j->pl_flags & PLCORE ? "CORE" : " "), (j->pl_info & FED ? 'F' : ' '), (j->pl_info & ROM ? 'R' : ' '), (j->pl_info & KLI ? 'K' : ' '), Index: defaults.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/defaults.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- defaults.c 14 May 2006 02:14:54 -0000 1.16 +++ defaults.c 16 May 2006 05:10:13 -0000 1.17 @@ -288,6 +288,12 @@ NULL } }, + {"newQuit", &newQuit, RC_BOOL, + { + "Use new quit window", + NULL + } + }, {"newSound", &newSound, RC_BOOL, { "Use new layered, stereo sound", @@ -1385,6 +1391,7 @@ timerType = T_SHIP; allowWheelActions = booleanDefault ("allowWheelActions", allowWheelActions); + newQuit = booleanDefault ("newQuit", newQuit); newSound = booleanDefault ("newSound", newSound); newSoundAngles = booleanDefault ("newSoundAngles", newSoundAngles); tpDotDist = intDefault ("tpDotDist", tpDotDist); Index: data.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/data.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- data.c 14 May 2006 02:14:54 -0000 1.18 +++ data.c 16 May 2006 05:10:13 -0000 1.19 @@ -236,7 +236,7 @@ extern double Sin[], Cos[]; -W_Icon stipple, clockpic, genopic, icon; +W_Icon stipple, clockpic, clockhandpic, genopic, icon; W_Color borderColor, backColor, textColor, myColor, warningColor, shipCol[5], rColor, yColor, gColor, unColor, foreColor; @@ -747,6 +747,6 @@ WNDPROC lpfnDefRichEditWndProc; /* default window proc */ int richText = 0; /* temporary variable to select rich text message windows */ - +int newQuit = 1; int newSound = 1; /* use new SDL sound */ int newSoundAngles = 1; /* use new SDL sound with angular 3d component */ \ No newline at end of file Index: map.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/map.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- map.c 14 May 2006 02:14:54 -0000 1.8 +++ map.c 16 May 2006 05:10:13 -0000 1.9 @@ -482,7 +482,7 @@ } else { -#endif +#endif // Beeplite end if (planetBitmapGalaxy == 3) { #ifndef DOUBLE_BUFFERING @@ -492,6 +492,7 @@ BMP_MPLANET_HEIGHT, BMP_CPLANET_WIDTH, BMP_CPLANET_HEIGHT, + 0, planetBitmapC (l), planetColor (l), mapw); @@ -502,6 +503,7 @@ BMP_MPLANET_HEIGHT, BMP_CPLANET_WIDTH, BMP_CPLANET_HEIGHT, + 0, planetBitmapC (l), planetColor (l), mapw);