Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv27015/src

Modified Files:
	dashboard.c data.c defaults.c local.c mswindow.c newwin.c 
	option.c 
Log Message:
Fixed KRP dashboard hull display upon death
Added "warnHull: on/(off)" to visually display hull status as a series of dots around your ship.  Modelled after warnHull implementation in COW, except that I use an actual bitmap rather than the hullbitmap header file to define the bitmaps.

Index: mswindow.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/mswindow.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- mswindow.c	12 Jun 2006 14:10:31 -0000	1.35
+++ mswindow.c	13 Jun 2006 11:18:23 -0000	1.36
@@ -604,6 +604,9 @@
     free (shield);
 #endif
 
+    for (i = 0; i < BMP_HULL_FRAMES; i++)
+        free (hull[i]);
+
     free (cloakicon);
     free (stipple);
     free (genopic);
@@ -4586,7 +4589,7 @@
     SetScrollRange (win->hwnd, SB_VERT, 0, y, FALSE);
     SetScrollPos (win->hwnd, SB_VERT, y, TRUE);
 
-    //Scroll up however many lines. Use ScrollDC se we don't invalidate the window
+    //Scroll up however many lines. Use ScrollDC so we don't invalidate the window
     y = win->TextHeight - win->AddedStrings;
 
     if (y < 0)                  //Pathalogical case (but it does happen):

Index: dashboard.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/dashboard.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- dashboard.c	3 Jun 2006 21:52:11 -0000	1.11
+++ dashboard.c	13 Jun 2006 11:18:23 -0000	1.12
@@ -591,7 +591,7 @@
         else
             color = W_Green;
         db_bar ("Hu", 90, 31,
-                (me->p_ship.s_maxdamage - me->p_damage),
+                max(0,(me->p_ship.s_maxdamage - me->p_damage)),  // Can't display negative hull values
                 me->p_ship.s_maxdamage, me->p_ship.s_maxdamage, DB_3DIGITS,
                 color);
         old_dam = me->p_damage;

Index: newwin.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/newwin.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- newwin.c	12 Jun 2006 14:10:31 -0000	1.38
+++ newwin.c	13 Jun 2006 11:18:23 -0000	1.39
@@ -1296,10 +1296,17 @@
                         LR_MONOCHROME);
     for (i = 0; i < SHIELD_FRAMES; i++)
         shield[i] =
-            W_PointBitmap2 (base_vshield, 0, i, BMP_SHIELD_WIDTH,
-                            BMP_SHIELD_HEIGHT);
+            W_PointBitmap2 (base_vshield, 0, i, BMP_SHIELD_WIDTH, BMP_SHIELD_HEIGHT);
 #endif
 
+    base_hull =
+        W_StoreBitmap3 ("bitmaps/misclib/varyhull.bmp", hull_width,
+                        hull_height * BMP_HULL_FRAMES, BMP_HULL, w,
+                        LR_MONOCHROME);
+    for (i = 0; i < BMP_HULL_FRAMES; i++)
+        hull[i] =
+            W_PointBitmap2 (base_hull, 0, i, hull_width, hull_height);
+
     cloakicon =
         W_StoreBitmap3 ("bitmaps/misclib/cloak.bmp", BMP_CLOAK_WIDTH,
                         BMP_CLOAK_HEIGHT, BMP_CLOAK, w, LR_MONOCHROME);

Index: local.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- local.c	12 Jun 2006 14:10:30 -0000	1.42
+++ local.c	13 Jun 2006 11:18:23 -0000	1.43
@@ -1107,6 +1107,65 @@
                                dy - (shield_height / 2), shield, color, w);
 #endif
             }
+            /* Warning hull */
+            if (vary_hull)
+            {
+            	if (myPlayer(j) || isObsLockPlayer(j))
+            	{	
+            	    int hull_left = (100 * (me->p_ship.s_maxdamage -
+		                     me->p_damage)) / me->p_ship.s_maxdamage;
+		    int hull_num = 7;
+		    int hull_color;
+		    
+		    if (hull_left <= 16)
+		    {
+		    	hull_num = 0;
+		    	hull_color = W_Red;
+		    }
+		    else if (hull_left <= 28)
+		    {
+		    	hull_num = 1;
+		    	hull_color = W_Red;
+		    }
+		    else if (hull_left <= 40)
+		    {
+		    	hull_num = 2;
+		    	hull_color = W_Red;
+		    }
+		    else if (hull_left <= 52)
+		    {
+		    	hull_num = 3;
+		    	hull_color = W_Yellow;
+		    }
+		    else if (hull_left <= 64)
+		    {
+		    	hull_num = 4;
+		    	hull_color = W_Yellow;
+		    }
+		    else if (hull_left <= 76)
+		    {
+		    	hull_num = 5;
+		    	hull_color = W_Yellow;
+		    }
+		    else if (hull_left <= 88)
+		    {
+		    	hull_num = 6;
+		    	hull_color = W_Yellow;
+		    }
+		    else
+		        hull_color = playerColor(j);
+
+		    W_WriteBitmap(dx - (shield_width / 2 + 1),
+			          dy - (shield_height / 2 + 1),
+			          hull[hull_num], hull_color, w);
+			          
+		    clearzone[0][clearcount] = dx - (shield_width / 2 + 1);
+		    clearzone[1][clearcount] = dy - (shield_height / 2 + 1);
+		    clearzone[2][clearcount] = shield_width + 2;
+		    clearzone[3][clearcount] = shield_height + 2;
+		    clearcount++;
+                }
+            }
             /* Det circle */
             if (detCircle)
             {

Index: defaults.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/defaults.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- defaults.c	9 Jun 2006 02:14:08 -0000	1.25
+++ defaults.c	13 Jun 2006 11:18:23 -0000	1.26
@@ -750,6 +750,12 @@
             NULL
         }
     },
+    {"warnHull", &vary_hull, RC_BOOL,
+        {
+            "Warn hull state based on damage",
+            NULL
+        }
+    },
     {"warnShields", &warnShields, RC_BOOL,
         {
             "Change shields color on enemy approach",
@@ -1495,6 +1501,7 @@
 #endif
 
     warnShields = booleanDefault ("warnShields", warnShields);
+    vary_hull = booleanDefault("warnHull", vary_hull);
 
 #ifdef RSA
     if (useRsa >= 0)

Index: data.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/data.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -d -r1.36 -r1.37
--- data.c	12 Jun 2006 14:10:29 -0000	1.36
+++ data.c	13 Jun 2006 11:18:23 -0000	1.37
@@ -284,6 +284,10 @@
 
 #endif
 
+W_Icon base_hull;
+W_Icon hull[BMP_HULL_FRAMES];
+int vary_hull = 0;
+
 // Ships
 W_Icon ship_bitmaps[5];
 W_Icon fed_bitmaps[NUM_TYPES][SHIP_VIEWS], kli_bitmaps[NUM_TYPES][SHIP_VIEWS],

Index: option.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/option.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- option.c	6 Jun 2006 19:50:39 -0000	1.22
+++ option.c	13 Jun 2006 11:18:23 -0000	1.23
@@ -255,6 +255,7 @@
     {1, "vary shields bitmap", &varyShields, 0, 0, 0, NULL, NULL},
 #endif
     {1, "use warning shields", &warnShields, 0, 0, 0, NULL, NULL},
+    {1, "use warning hull", &vary_hull, 0, 0, 0, NULL, NULL},
     {1, "show speed on tactical", &showMySpeed, 0, 0, 0, NULL, NULL},
 #ifdef JUBILEE_PHASERS
     {1, "use colorful phasers", &colorfulPhasers, 0, 0, 0, NULL, NULL},