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

Modified Files:
	data.c defaults.c local.c mswindow.c newwin.c option.c 
Log Message:
Addition of color weapons, based on COW/TedTurner, but made better :).

Index: mswindow.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/mswindow.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- mswindow.c	21 Apr 2006 12:00:07 -0000	1.7
+++ mswindow.c	29 Apr 2006 19:22:38 -0000	1.8
@@ -444,18 +444,39 @@
     // Free other bitmaps
     free (clockpic);
 
+    for (j = 0; j < NUM_CTORP_TYPES; j++)
+    {
+        for (i = 0; i < BMP_TORPDET_FRAMES; i++)
+        {
+            free (cloudC[j][i]);
+            free (plcloudC[j][i]);
+        }
+        for (i = 0; i < BMP_TORP_FRAMES; i++)
+        {
+            free (torpC[j][i]);
+            free (mtorpC[j][i]);
+            free (plasmaC[j][i]);
+            free (mplasmaC[j][i]);
+        }
+
+    }
+    free (torp_cloud_bitmaps);
+    free (plasma_cloud_bitmaps);
+    free (mtorp_bitmaps);
+    free (torp_bitmaps);
+    free (mplasma_bitmaps);
+    free (plasma_bitmaps);
+
     for (i = 0; i < BMP_TORPDET_FRAMES; i++)
     {
         free (cloud[i]);
         free (plasmacloud[i]);
     }
-
-#ifdef COLORIZEWEAPON
     free (etorp);
     free (mtorp);
     free (eplasmatorp);
     free (mplasmatorp);
-#endif /* COLORIZEWEAPON */
+
 
     for (i = 0; i < PLANET_VIEWS; i++)
         free (bplanets[i]);
@@ -3548,8 +3569,7 @@
     HBITMAP temp = 0;
 
     FNHEADER;
-    //Allocate memory for the bitmap structure and convert the
-    //X11 bitmap into a useful form
+    //Allocate memory for the bitmap structure
     if (!(bitmap = (struct Icon *) malloc (sizeof (struct Icon))))
         goto memfail;
 
@@ -3609,8 +3629,7 @@
     HBITMAP temp = 0;
 
     FNHEADER;
-    //Allocate memory for the bitmap structure and convert the
-    //X11 bitmap into a useful form
+    //Allocate memory for the bitmap structure
     if (!(bitmap = (struct Icon *) malloc (sizeof (struct Icon))))
         goto memfail;
 

Index: newwin.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/newwin.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- newwin.c	26 Apr 2006 02:04:24 -0000	1.12
+++ newwin.c	29 Apr 2006 19:22:38 -0000	1.13
@@ -419,6 +419,87 @@
         }
     }               
 }
+
+/******************************************************************************/
+/***  loadweaponsC() - colorized weapons
+/******************************************************************************/
+void loadweaponsC()
+{    
+    int j,k;
+
+    /* Load the four 6x8 weapon bitmaps */
+    torp_bitmaps =
+        W_StoreBitmap3 ("bitmaps/weaplibm/color/torpC.bmp",
+                        BMP_CTORP_WIDTH * NUM_CTORP_TYPES,
+                        BMP_CTORP_HEIGHT * BMP_TORP_FRAMES, BMP_TORPC, w,
+                        LR_DEFAULTCOLOR);
+    mtorp_bitmaps =
+        W_StoreBitmap3 ("bitmaps/weaplibm/color/mtorpC.bmp",
+                        BMP_CTORP_WIDTH * NUM_CTORP_TYPES,
+                        BMP_CTORP_HEIGHT * BMP_TORP_FRAMES, BMP_MTORPC, w,
+                        LR_DEFAULTCOLOR);
+    plasma_bitmaps =
+        W_StoreBitmap3 ("bitmaps/weaplibm/color/plasmaC.bmp",
+                        BMP_CPLASMATORP_WIDTH * NUM_CTORP_TYPES,
+                        BMP_CPLASMATORP_HEIGHT * BMP_TORP_FRAMES, BMP_PLASMAC, w,
+                        LR_DEFAULTCOLOR);
+    mplasma_bitmaps =
+        W_StoreBitmap3 ("bitmaps/weaplibm/color/mplasmaC.bmp",
+                        BMP_CPLASMATORP_WIDTH * NUM_CTORP_TYPES,
+                        BMP_CPLASMATORP_HEIGHT * BMP_TORP_FRAMES, BMP_MPLASMAC, w,
+                        LR_DEFAULTCOLOR);
+                        
+    /* Make pointers to the four 6x8 weapon bitmaps */
+    for (j = 0; j < NUM_CTORP_TYPES; j++)
+    {        
+    	for (k = 0; k < BMP_TORP_FRAMES; k++)
+        {
+            torpC[j][k] =
+                W_PointBitmap2 (torp_bitmaps, j, k, BMP_CTORP_WIDTH,
+                                BMP_CTORP_HEIGHT);
+                            
+            mtorpC[j][k] =
+                W_PointBitmap2 (mtorp_bitmaps, j, k, BMP_CTORP_WIDTH,
+                                BMP_CTORP_HEIGHT);
+                            
+            plasmaC[j][k] =
+                 W_PointBitmap2 (plasma_bitmaps, j, k, BMP_CPLASMATORP_WIDTH,
+                                BMP_CPLASMATORP_HEIGHT);
+                            
+            mplasmaC[j][k] =
+                W_PointBitmap2 (mplasma_bitmaps, j, k, BMP_CPLASMATORP_WIDTH,
+                                BMP_CPLASMATORP_HEIGHT);
+        }
+    }
+        
+           
+    /* Load the two 6x5 cloud bitmaps */
+    torp_cloud_bitmaps =
+         W_StoreBitmap3 ("bitmaps/weaplibm/color/cloudC.bmp",
+                        BMP_CTORPDET_WIDTH * NUM_CTORP_TYPES,
+                        BMP_CTORPDET_HEIGHT * BMP_TORPDET_FRAMES, BMP_CLOUDC, w,
+                        LR_DEFAULTCOLOR);
+    plasma_cloud_bitmaps = 
+         W_StoreBitmap3 ("bitmaps/weaplibm/color/plcloudC.bmp",
+                        BMP_CPLASMATORPDET_WIDTH * NUM_CTORP_TYPES,
+                        BMP_CPLASMATORPDET_HEIGHT * BMP_TORPDET_FRAMES, BMP_PLCLOUDC, w,
+                        LR_DEFAULTCOLOR);
+                        
+    /* Make pointers to the two 6x5 cloud bitmaps */
+    for (j = 0; j < NUM_CTORP_TYPES; j++)
+    {
+        for (k = 0; k < BMP_TORPDET_FRAMES; k++)
+        {
+            cloudC[j][k] =
+                W_PointBitmap2 (torp_cloud_bitmaps, j, k, BMP_CTORPDET_WIDTH,
+                                BMP_CTORPDET_HEIGHT);
+            plcloudC[j][k] =
+                W_PointBitmap2 (plasma_cloud_bitmaps, j, k, BMP_CPLASMATORPDET_WIDTH,
+                                BMP_CPLASMATORPDET_HEIGHT);
+        }
+    }            
+}
+
 /******************************************************************************/
 /***  handleMessageWindowKeyDown()
 /******************************************************************************/
@@ -813,101 +894,59 @@
     }
 #endif
 
-/* Experimental weapons */
-#ifdef COLORIZEWEAPON
-/* Not implemented... have to redo code with StoreBitmap3
-  for (i = 0; i < BMP_TORPDET_FRAMES; i++)
-    {
-     cloud[0][i] = W_StoreBitmap2(hWeapLibrary, BMP_TORPDET_WIDTH, BMP_TORPDET_HEIGHT,
-                       BMP_FED_TORP_DET + i, w, LR_DEFAULTCOLOR);
-     cloud[1][i] = W_StoreBitmap2(hWeapLibrary, BMP_TORPDET_WIDTH, BMP_TORPDET_HEIGHT,
-                       BMP_ORI_TORP_DET + i, w, LR_DEFAULTCOLOR);
-     cloud[2][i] = W_StoreBitmap2(hWeapLibrary, BMP_TORPDET_WIDTH, BMP_TORPDET_HEIGHT,
-                       BMP_KLI_TORP_DET + i, w, LR_DEFAULTCOLOR);
-     cloud[3][i] = W_StoreBitmap2(hWeapLibrary, BMP_TORPDET_WIDTH, BMP_TORPDET_HEIGHT,
-                       BMP_ROM_TORP_DET + i, w, LR_DEFAULTCOLOR);
-     cloud[4][i] = W_StoreBitmap2(hWeapLibrary, BMP_TORPDET_WIDTH, BMP_TORPDET_HEIGHT,
-                       BMP_IND_TORP_DET + i, w, LR_DEFAULTCOLOR);
 
-     plasmacloud[0][i] = W_StoreBitmap2(hWeapLibrary, BMP_PLASMATORPDET_WIDTH, BMP_PLASMATORPDET_HEIGHT,
-                        BMP_FED_PLASMA_DET + i, w, LR_DEFAULTCOLOR);
-     plasmacloud[1][i] = W_StoreBitmap2(hWeapLibrary, BMP_PLASMATORPDET_WIDTH, BMP_PLASMATORPDET_HEIGHT,
-                        BMP_ORI_PLASMA_DET + i, w, LR_DEFAULTCOLOR);
-     plasmacloud[2][i] = W_StoreBitmap2(hWeapLibrary, BMP_PLASMATORPDET_WIDTH, BMP_PLASMATORPDET_HEIGHT,
-                        BMP_KLI_PLASMA_DET + i, w, LR_DEFAULTCOLOR);
-     plasmacloud[3][i] = W_StoreBitmap2(hWeapLibrary, BMP_PLASMATORPDET_WIDTH, BMP_PLASMATORPDET_HEIGHT,
-                        BMP_ROM_PLASMA_DET + i, w, LR_DEFAULTCOLOR);
-     plasmacloud[4][i] = W_StoreBitmap2(hWeapLibrary, BMP_PLASMATORPDET_WIDTH, BMP_PLASMATORPDET_HEIGHT,
-                        BMP_IND_PLASMA_DET + i, w, LR_DEFAULTCOLOR);
+    loadweaponsC();
 
-     }
-  for (i = 0; i < BMP_TORP_FRAMES; i++)
-    {
-    	torpIcon[0][i] = W_StoreBitmap2(hWeapLibrary, BMP_TORP_WIDTH, BMP_TORP_HEIGHT, BMP_FED_TORP+i, w, LR_DEFAULTCOLOR);
-    	torpIcon[1][i] = W_StoreBitmap2(hWeapLibrary, BMP_TORP_WIDTH, BMP_TORP_HEIGHT, BMP_ORI_TORP+i, w, LR_DEFAULTCOLOR);
-    	torpIcon[2][i] = W_StoreBitmap2(hWeapLibrary, BMP_TORP_WIDTH, BMP_TORP_HEIGHT, BMP_KLI_TORP+i, w, LR_DEFAULTCOLOR);
-    	torpIcon[3][i] = W_StoreBitmap2(hWeapLibrary, BMP_TORP_WIDTH, BMP_TORP_HEIGHT, BMP_ROM_TORP+i, w, LR_DEFAULTCOLOR);
-    	torpIcon[4][i] = W_StoreBitmap2(hWeapLibrary, BMP_TORP_WIDTH, BMP_TORP_HEIGHT, BMP_IND_TORP+i, w, LR_DEFAULTCOLOR);
-    	plasmatorpIcon[0][i] = W_StoreBitmap2(hWeapLibrary, BMP_PLASMATORP_WIDTH, BMP_PLASMATORP_HEIGHT, BMP_FED_PLASMA+i, w, LR_DEFAULTCOLOR);
-    	plasmatorpIcon[1][i] = W_StoreBitmap2(hWeapLibrary, BMP_PLASMATORP_WIDTH, BMP_PLASMATORP_HEIGHT, BMP_ORI_PLASMA+i, w, LR_DEFAULTCOLOR);
-    	plasmatorpIcon[2][i] = W_StoreBitmap2(hWeapLibrary, BMP_PLASMATORP_WIDTH, BMP_PLASMATORP_HEIGHT, BMP_KLI_PLASMA+i, w, LR_DEFAULTCOLOR);
-    	plasmatorpIcon[3][i] = W_StoreBitmap2(hWeapLibrary, BMP_PLASMATORP_WIDTH, BMP_PLASMATORP_HEIGHT, BMP_ROM_PLASMA+i, w, LR_DEFAULTCOLOR);
-    	plasmatorpIcon[4][i] = W_StoreBitmap2(hWeapLibrary, BMP_PLASMATORP_WIDTH, BMP_PLASMATORP_HEIGHT, BMP_IND_PLASMA+i, w, LR_DEFAULTCOLOR);
-    }
-*/
-#else /* COLORIZEWEAPON */
     cloud[0] =
-        W_StoreBitmap3 ("bitmaps/weaplibm/cloud1.bmp", BMP_TORPDET_WIDTH,
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/cloud1.bmp", BMP_TORPDET_WIDTH,
                         BMP_TORPDET_HEIGHT, BMP_CLOUD, w, LR_MONOCHROME);
     cloud[1] =
-        W_StoreBitmap3 ("bitmaps/weaplibm/cloud2.bmp", BMP_TORPDET_WIDTH,
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/cloud2.bmp", BMP_TORPDET_WIDTH,
                         BMP_TORPDET_HEIGHT, BMP_CLOUD, w, LR_MONOCHROME);
     cloud[2] =
-        W_StoreBitmap3 ("bitmaps/weaplibm/cloud3.bmp", BMP_TORPDET_WIDTH,
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/cloud3.bmp", BMP_TORPDET_WIDTH,
                         BMP_TORPDET_HEIGHT, BMP_CLOUD, w, LR_MONOCHROME);
     cloud[3] =
-        W_StoreBitmap3 ("bitmaps/weaplibm/cloud4.bmp", BMP_TORPDET_WIDTH,
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/cloud4.bmp", BMP_TORPDET_WIDTH,
                         BMP_TORPDET_HEIGHT, BMP_CLOUD, w, LR_MONOCHROME);
     cloud[4] =
-        W_StoreBitmap3 ("bitmaps/weaplibm/cloud5.bmp", BMP_TORPDET_WIDTH,
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/cloud5.bmp", BMP_TORPDET_WIDTH,
                         BMP_TORPDET_HEIGHT, BMP_CLOUD, w, LR_MONOCHROME);
 
     plasmacloud[0] =
-        W_StoreBitmap3 ("bitmaps/weaplibm/plcloud1.bmp",
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/plcloud1.bmp",
                         BMP_PLASMATORPDET_WIDTH, BMP_PLASMATORPDET_HEIGHT,
                         BMP_PLCLOUD, w, LR_MONOCHROME);
     plasmacloud[1] =
-        W_StoreBitmap3 ("bitmaps/weaplibm/plcloud1.bmp",
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/plcloud2.bmp",
                         BMP_PLASMATORPDET_WIDTH, BMP_PLASMATORPDET_HEIGHT,
                         BMP_PLCLOUD, w, LR_MONOCHROME);
     plasmacloud[2] =
-        W_StoreBitmap3 ("bitmaps/weaplibm/plcloud1.bmp",
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/plcloud3.bmp",
                         BMP_PLASMATORPDET_WIDTH, BMP_PLASMATORPDET_HEIGHT,
                         BMP_PLCLOUD, w, LR_MONOCHROME);
     plasmacloud[3] =
-        W_StoreBitmap3 ("bitmaps/weaplibm/plcloud1.bmp",
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/plcloud4.bmp",
                         BMP_PLASMATORPDET_WIDTH, BMP_PLASMATORPDET_HEIGHT,
                         BMP_PLCLOUD, w, LR_MONOCHROME);
     plasmacloud[4] =
-        W_StoreBitmap3 ("bitmaps/weaplibm/plcloud1.bmp",
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/plcloud5.bmp",
                         BMP_PLASMATORPDET_WIDTH, BMP_PLASMATORPDET_HEIGHT,
                         BMP_PLCLOUD, w, LR_MONOCHROME);
 
     etorp =
-        W_StoreBitmap3 ("bitmaps/weaplibm/etorp.bmp", BMP_TORP_WIDTH,
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/etorp.bmp", BMP_TORP_WIDTH,
                         BMP_TORP_HEIGHT, BMP_ETORP, w, LR_MONOCHROME);
     mtorp =
-        W_StoreBitmap3 ("bitmaps/weaplibm/mtorp.bmp", BMP_TORP_WIDTH,
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/mtorp.bmp", BMP_TORP_WIDTH,
                         BMP_TORP_HEIGHT, BMP_MTORP, w, LR_MONOCHROME);
     eplasmatorp =
-        W_StoreBitmap3 ("bitmaps/weaplibm/eplasma.bmp", BMP_EPLASMA_WIDTH,
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/eplasma.bmp", BMP_EPLASMA_WIDTH,
                         BMP_EPLASMA_HEIGHT, BMP_EPLASMA, w, LR_MONOCHROME);
     mplasmatorp =
-        W_StoreBitmap3 ("bitmaps/weaplibm/mplasma.bmp", BMP_MPLASMA_WIDTH,
+        W_StoreBitmap3 ("bitmaps/weaplibm/mono/mplasma.bmp", BMP_MPLASMA_WIDTH,
                         BMP_MPLASMA_HEIGHT, BMP_MPLASMA, w, LR_MONOCHROME);
 
-#endif /* COLORIZEWEAPON */
-
     base_planets =
         W_StoreBitmap3 (Planlib, BMP_PLANET_WIDTH, BMP_PLANET_HEIGHT * 9,
                         BMP_PLANET000, w, LR_MONOCHROME);

Index: local.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- local.c	27 Apr 2006 21:22:05 -0000	1.14
+++ local.c	29 Apr 2006 19:22:38 -0000	1.15
@@ -1450,6 +1450,7 @@
     register int dx, dy;
     struct player *j;
     int torpCount;
+    int torpTeam;
     const int view = SCALE * WINSIDE / 2;
 
     for (t = torps, j = players; j != players + MAXPLAYER; t += MAXTORP, ++j)
@@ -1584,117 +1585,145 @@
                 }
 #endif
 
-#ifdef COLORIZEWEAPON
-                switch (j->p_team)
+                if (colorWeapons)
                 {
-                case FED:
-                    torpTeam = 0;
-                    break;
-                case ORI:
-                    torpTeam = 1;
-                    break;
-                case KLI:
-                    torpTeam = 2;
-                    break;
-                case ROM:
-                    torpTeam = 3;
-                    break;
-                default:
-                    torpTeam = 4;
+                    if (myPlayer(j))
+                        torpTeam = 0;
+                    else
+                    {
+                        switch (j->p_team)
+                        {
+                        case FED:
+                            torpTeam = 1;
+                            break;
+                        case IND:
+                            torpTeam = 2;
+                            break;
+                        case KLI:
+                            torpTeam = 3;
+                            break;
+                        case ORI:
+                            torpTeam = 4;
+                            break;
+                        case ROM:
+                            torpTeam = 5;
+                            break;
+                        default:
+                            torpTeam = 0;
+                        }
+                    }
+                    W_WriteBitmap (dx - (BMP_CTORPDET_WIDTH / 2),
+                                   dy - (BMP_CTORPDET_HEIGHT / 2),
+                                   cloudC[torpTeam][k->t_fuse], torpColor (k));
+                    clearzone[0][clearcount] = dx - (BMP_CTORPDET_WIDTH / 2);
+                    clearzone[1][clearcount] = dy - (BMP_CTORPDET_HEIGHT / 2);
+                    clearzone[2][clearcount] = BMP_CTORPDET_WIDTH;
+                    clearzone[3][clearcount] = BMP_CTORPDET_HEIGHT;
+                    clearcount++;
+                }
+                else
+                {
+                    W_WriteBitmap (dx - (BMP_TORPDET_WIDTH / 2),
+                                   dy - (BMP_TORPDET_HEIGHT / 2),
+                                   cloud[k->t_fuse], torpColor (k));
+                    clearzone[0][clearcount] = dx - (BMP_TORPDET_WIDTH / 2);
+                    clearzone[1][clearcount] = dy - (BMP_TORPDET_HEIGHT / 2);
+                    clearzone[2][clearcount] = BMP_TORPDET_WIDTH;
+                    clearzone[3][clearcount] = BMP_TORPDET_HEIGHT;
+                    clearcount++;
                 }
-
-                W_WriteBitmap (dx - (BMP_TORPDET_WIDTH / 2),
-                               dy - (BMP_TORPDET_HEIGHT / 2),
-                               cloud[torpTeam][k->t_fuse], torpColor (k));
-                /*W_WriteBitmapDB (localSDB, dx - (BMP_TORPDET_WIDTH / 2),
-                                 dy - (BMP_TORPDET_HEIGHT / 2),
-                                 cloud[torpTeam][k->t_fuse], torpColor (k));*/
-#else /* COLORIZEWEAPON */
-                W_WriteBitmap (dx - (BMP_TORPDET_WIDTH / 2),
-                               dy - (BMP_TORPDET_HEIGHT / 2),
-                               cloud[k->t_fuse], torpColor (k));
-                /*W_WriteBitmapDB (localSDB, dx - (BMP_TORPDET_WIDTH / 2),
-                                 dy - (BMP_TORPDET_HEIGHT / 2),
-                                 cloud[k->t_fuse], torpColor (k));*/
-                clearzone[0][clearcount] = dx - (BMP_TORPDET_WIDTH / 2);
-                clearzone[1][clearcount] = dy - (BMP_TORPDET_HEIGHT / 2);
-                clearzone[2][clearcount] = BMP_TORPDET_WIDTH;
-                clearzone[3][clearcount] = BMP_TORPDET_HEIGHT;
-                clearcount++;
-#endif
-            }
-            else
-#ifndef COLORIZEWEAPON
-            if (j != me && ((k->t_war & me->p_team) ||
-                                (j->p_team & (me->p_hostile | me->p_swar))))
-            {
-                /* solid.  Looks strange. W_FillArea(w, dx - (etorp_width/2),
-                 * dy - (etorp_height/2), etorp_width, etorp_height,
-                 * torpColor(k)); */
-
-                /* XFIX */
-                W_WriteBitmap (dx - (etorp_width / 2),
-                               dy - (etorp_height / 2), etorp, torpColor (k));
-                /*W_WriteBitmapDB (localSDB, dx - (etorp_width / 2),
-                                 dy - (etorp_height / 2), etorp, torpColor (k));*/
-                clearzone[0][clearcount] = dx - (etorp_width / 2);
-                clearzone[1][clearcount] = dy - (etorp_height / 2);
-                clearzone[2][clearcount] = etorp_width;
-                clearzone[3][clearcount] = etorp_height;
-                clearcount++;
             }
             else
             {
-                W_WriteBitmap (dx - (mtorp_width / 2),
-                               dy - (mtorp_height / 2), mtorp, torpColor (k));
-                /*W_WriteBitmapDB (localSDB, dx - (mtorp_width / 2),
-                                 dy - (mtorp_height / 2), mtorp, torpColor (k));*/
-
-                clearzone[0][clearcount] = dx - (mtorp_width / 2);
-                clearzone[1][clearcount] = dy - (mtorp_height / 2);
-                clearzone[2][clearcount] = mtorp_width;
-                clearzone[3][clearcount] = mtorp_height;
-                clearcount++;
-            }
-#else
-// Experimental weapons SRS 5/17/98
-            if ((k->t_fuse++ >= BMP_TORP_FRAMES - 1) || (k->t_fuse < 0))
-                k->t_fuse = 0;
-            switch (j->p_team)
-            {
-            case FED:
-                torpTeam = 0;
-                break;
-            case ORI:
-                torpTeam = 1;
-                break;
-            case KLI:
-                torpTeam = 2;
-                break;
-            case ROM:
-                torpTeam = 3;
-                break;
-            default:
-                torpTeam = 4;
+            	if (colorWeapons)
+            	{
+                    if ((k->t_fuse++ >= BMP_TORP_FRAMES - 1) || (k->t_fuse < 0))
+                        k->t_fuse = 0;
+        
+                    if (myPlayer(j))
+                        torpTeam = 0;
+                    else
+                    {
+                        switch (j->p_team)
+                        {
+                        case FED:
+                            torpTeam = 1;
+                            break;
+                        case IND:
+                            torpTeam = 2;
+                            break;
+                        case KLI:
+                            torpTeam = 3;
+                            break;
+                        case ORI:
+                            torpTeam = 4;
+                            break;
+                        case ROM:
+                            torpTeam = 5;
+                            break;
+                        default:
+                            torpTeam = 0;
+                        }
+                    }
+                    
+                    if (j != me && ((k->t_war & me->p_team) ||
+                                        (j->p_team & (me->p_hostile | me->p_swar))))
+                    {
+                        W_WriteBitmap (dx - (BMP_CTORP_WIDTH / 2),
+                                       dy - (BMP_CTORP_HEIGHT / 2),
+                                       torpC[torpTeam][k->t_fuse], torpColor (k));
+                    }
+                    else
+                    {
+                        W_WriteBitmap (dx - (BMP_CTORP_WIDTH / 2),
+                                       dy - (BMP_CTORP_HEIGHT / 2),
+                                       mtorpC[torpTeam][k->t_fuse], torpColor (k));
+                    }
+                    
+                    clearzone[0][clearcount] = dx - (BMP_CTORP_WIDTH / 2);
+                    clearzone[1][clearcount] = dy - (BMP_CTORP_HEIGHT / 2);
+                    clearzone[2][clearcount] = BMP_CTORP_WIDTH;
+                    clearzone[3][clearcount] = BMP_CTORP_HEIGHT;
+                    clearcount++;
+                }
+                else
+                {
+                    if (j != me && ((k->t_war & me->p_team) ||
+                                        (j->p_team & (me->p_hostile | me->p_swar))))
+                    {
+                        /* solid.  Looks strange. W_FillArea(w, dx - (etorp_width/2),
+                         * dy - (etorp_height/2), etorp_width, etorp_height,
+                         * torpColor(k)); */
+        
+                        /* XFIX */
+                        W_WriteBitmap (dx - (etorp_width / 2),
+                                       dy - (etorp_height / 2), etorp, torpColor (k));
+                        /*W_WriteBitmapDB (localSDB, dx - (etorp_width / 2),
+                                         dy - (etorp_height / 2), etorp, torpColor (k));*/
+                        clearzone[0][clearcount] = dx - (etorp_width / 2);
+                        clearzone[1][clearcount] = dy - (etorp_height / 2);
+                        clearzone[2][clearcount] = etorp_width;
+                        clearzone[3][clearcount] = etorp_height;
+                        clearcount++;
+                    }
+                    else
+                    {
+                        W_WriteBitmap (dx - (mtorp_width / 2),
+                                       dy - (mtorp_height / 2), mtorp, torpColor (k));
+                        /*W_WriteBitmapDB (localSDB, dx - (mtorp_width / 2),
+                                         dy - (mtorp_height / 2), mtorp, torpColor (k));*/
+        
+                        clearzone[0][clearcount] = dx - (mtorp_width / 2);
+                        clearzone[1][clearcount] = dy - (mtorp_height / 2);
+                        clearzone[2][clearcount] = mtorp_width;
+                        clearzone[3][clearcount] = mtorp_height;
+                        clearcount++;
+                    }
+                }
             }
-
-            W_WriteBitmap (dx - (BMP_TORP_WIDTH / 2),
-                           dy - (BMP_TORP_HEIGHT / 2),
-                           torpIcon[torpTeam][k->t_fuse], torpColor (k));
-            /*W_WriteBitmapDB (localSDB, dx - (BMP_TORP_WIDTH / 2),
-                             dy - (BMP_TORP_HEIGHT / 2),
-                             torpIcon[torpTeam][k->t_fuse], torpColor (k));*/
-
-            clearzone[0][clearcount] = dx - (BMP_TORP_WIDTH / 2);
-            clearzone[1][clearcount] = dy - (BMP_TORP_HEIGHT / 2);
-            clearzone[2][clearcount] = BMP_TORP_WIDTH;
-            clearzone[3][clearcount] = BMP_TORP_HEIGHT;
-            clearcount++;
         }
-#endif
     }
 }
-}
 
 
 void
@@ -1703,6 +1732,7 @@
     register struct plasmatorp *pt;
     register int dx, dy;
     const int view = SCALE * WINSIDE / 2;
+    int ptorpTeam;
 
     /* MAXPLASMA is small so work through all the plasmas rather than
        look at the number of outstanding plasma torps for each player. */
@@ -1817,125 +1847,142 @@
             }
 #endif
 
-#ifdef COLORIZEWEAPON
-            switch (players[pt->pt_owner].p_team)
+            if (colorWeapons)
             {
-            case FED:
-                ptorpTeam = 0;
-                break;
-            case ORI:
-                ptorpTeam = 1;
-                break;
-            case KLI:
-                ptorpTeam = 2;
-                break;
-            case ROM:
-                ptorpTeam = 3;
-                break;
-            default:
-                ptorpTeam = 4;
+                if (pt->pt_owner == me->p_no)
+                    ptorpTeam = 0;
+                else
+                {
+                    switch (players[pt->pt_owner].p_team)
+                    {
+                    case FED:
+                        ptorpTeam = 1;
+                        break;
+                    case IND:
+                        ptorpTeam = 2;
+                        break;
+                    case KLI:
+                        ptorpTeam = 3;
+                        break;
+                    case ORI:
+                        ptorpTeam = 4;
+                        break;
+                    case ROM:
+                        ptorpTeam = 5;
+                        break;
+                    default:
+                        ptorpTeam = 0;
+                    }
+                }
+    
+                W_WriteBitmap (dx - (BMP_CPLASMATORPDET_WIDTH / 2),
+                               dy - (BMP_CPLASMATORPDET_HEIGHT / 2),
+                               plcloudC[ptorpTeam][pt->pt_fuse],
+                               plasmatorpColor (pt));
+                clearzone[0][clearcount] = dx - (BMP_CPLASMATORPDET_WIDTH / 2);
+                clearzone[1][clearcount] = dy - (BMP_CPLASMATORPDET_HEIGHT / 2);
+                clearzone[2][clearcount] = BMP_CPLASMATORPDET_WIDTH;
+                clearzone[3][clearcount] = BMP_CPLASMATORPDET_HEIGHT;
+                clearcount++;
+            }
+            else
+            {
+                W_WriteBitmap (dx - (BMP_PLASMATORPDET_WIDTH / 2),
+                               dy - (BMP_PLASMATORPDET_HEIGHT / 2),
+                               plasmacloud[pt->pt_fuse], plasmatorpColor (pt));
+                clearzone[0][clearcount] = dx - (BMP_PLASMATORPDET_WIDTH / 2);
+                clearzone[1][clearcount] = dy - (BMP_PLASMATORPDET_HEIGHT / 2);
+                clearzone[2][clearcount] = BMP_PLASMATORPDET_WIDTH;
+                clearzone[3][clearcount] = BMP_PLASMATORPDET_HEIGHT;
+                clearcount++;
             }
-
-            W_WriteBitmap (dx - (BMP_PLASMATORPDET_WIDTH / 2),
-                           dy - (BMP_PLASMATORPDET_HEIGHT / 2),
-                           plasmacloud[ptorpTeam][pt->pt_fuse],
-                           plasmatorpColor (pt));
-            /*W_WriteBitmapDB (localSDB, dx - (BMP_PLASMATORPDET_WIDTH / 2),
-                             dy - (BMP_PLASMATORPDET_HEIGHT / 2),
-                             plasmacloud[ptorpTeam][pt->pt_fuse],
-                             plasmatorpColor (pt));*/
-            clearzone[0][clearcount] = dx - (BMP_PLASMATORPDET_WIDTH / 2);
-            clearzone[1][clearcount] = dy - (BMP_PLASMATORPDET_HEIGHT / 2);
-            clearzone[2][clearcount] = BMP_PLASMATORPDET_WIDTH;
-            clearzone[3][clearcount] = BMP_PLASMATORPDET_HEIGHT;
-            clearcount++;
-#else
-            W_WriteBitmap (dx - (BMP_PLASMATORPDET_WIDTH / 2),
-                           dy - (BMP_PLASMATORPDET_HEIGHT / 2),
-                           plasmacloud[pt->pt_fuse], plasmatorpColor (pt));
-            /*W_WriteBitmapDB (localSDB, dx - (BMP_PLASMATORPDET_WIDTH / 2),
-                             dy - (BMP_PLASMATORPDET_HEIGHT / 2),
-                             plasmacloud[pt->pt_fuse], plasmatorpColor (pt));*/
-            clearzone[0][clearcount] = dx - (BMP_PLASMATORPDET_WIDTH / 2);
-            clearzone[1][clearcount] = dy - (BMP_PLASMATORPDET_HEIGHT / 2);
-            clearzone[2][clearcount] = BMP_PLASMATORPDET_WIDTH;
-            clearzone[3][clearcount] = BMP_PLASMATORPDET_HEIGHT;
-            clearcount++;
-#endif /* COLORIZEWEAPON */
-        }
-
-#ifndef COLORIZEWEAPON
-        /* needmore: if(pt->pt_war & me->p_team) */
-        else if (pt->pt_owner != me->p_no && ((pt->pt_war & me->p_team) ||
-                                              (players[pt->pt_owner].
-                                               p_team & (me->p_hostile | me->
-                                                         p_swar))))
-        {
-            W_WriteBitmap (dx - (eplasmatorp_width / 2),
-                           dy - (eplasmatorp_height / 2),
-                           eplasmatorp, plasmatorpColor (pt));
-            /*W_WriteBitmapDB (localSDB, dx - (eplasmatorp_width / 2),
-                             dy - (eplasmatorp_height / 2),
-                             eplasmatorp, plasmatorpColor (pt));*/
-            clearzone[0][clearcount] = dx - (eplasmatorp_width / 2);
-            clearzone[1][clearcount] = dy - (eplasmatorp_height / 2);
-            clearzone[2][clearcount] = eplasmatorp_width;
-            clearzone[3][clearcount] = eplasmatorp_height;
-            clearcount++;
         }
         else
         {
-            W_WriteBitmap (dx - (mplasmatorp_width / 2),
-                           dy - (mplasmatorp_height / 2),
-                           mplasmatorp, plasmatorpColor (pt));
-            /*W_WriteBitmapDB (localSDB, dx - (mplasmatorp_width / 2),
-                             dy - (mplasmatorp_height / 2),
-                             mplasmatorp, plasmatorpColor (pt));*/
-            clearzone[0][clearcount] = dx - (mplasmatorp_width / 2);
-            clearzone[1][clearcount] = dy - (mplasmatorp_height / 2);
-            clearzone[2][clearcount] = mplasmatorp_width;
-            clearzone[3][clearcount] = mplasmatorp_height;
-            clearcount++;
-        }
-#else /*COLORIZEWEAPON */
-
-        {
-            if ((pt->pt_fuse++ >= BMP_TORP_FRAMES - 1) || (pt->pt_fuse < 0))
-                pt->pt_fuse = 0;
-            switch (players[pt->pt_owner].p_team)
+            if (colorWeapons)
             {
-            case FED:
-                ptorpTeam = 0;
-                break;
-            case ORI:
-                ptorpTeam = 1;
-                break;
-            case KLI:
-                ptorpTeam = 2;
-                break;
-            case ROM:
-                ptorpTeam = 3;
-                break;
-            default:
-                ptorpTeam = 4;
+                if ((pt->pt_fuse++ >= BMP_TORP_FRAMES - 1) || (pt->pt_fuse < 0))
+                    pt->pt_fuse = 0;
+        
+                if (pt->pt_owner == me->p_no)
+                    ptorpTeam = 0;
+                else
+                {
+                    switch (players[pt->pt_owner].p_team)
+                    {
+                    case FED:
+                        ptorpTeam = 1;
+                        break;
+                    case IND:
+                        ptorpTeam = 2;
+                        break;
+                    case KLI:
+                        ptorpTeam = 3;
+                        break;
+                    case ORI:
+                        ptorpTeam = 4;
+                        break;
+                    case ROM:
+                        ptorpTeam = 5;
+                        break;
+                    default:
+                        ptorpTeam = 0;
+                    }
+                }
+                if (pt->pt_owner != me->p_no && ((pt->pt_war & me->p_team) ||
+                                                      (players[pt->pt_owner].
+                                                       p_team & (me->p_hostile | me->
+                                                                 p_swar))))
+                {
+                    W_WriteBitmap (dx - (BMP_CPLASMATORP_WIDTH / 2),
+                                   dy - (BMP_CPLASMATORP_HEIGHT / 2),
+                                   plasmaC[ptorpTeam][pt->pt_fuse],
+                                   plasmatorpColor (pt));
+                }
+                else
+                {
+                    W_WriteBitmap (dx - (BMP_CPLASMATORP_WIDTH / 2),
+                                   dy - (BMP_CPLASMATORP_HEIGHT / 2),
+                                   mplasmaC[ptorpTeam][pt->pt_fuse],
+                                   plasmatorpColor (pt));
+                }
+                clearzone[0][clearcount] = dx - (BMP_CPLASMATORP_WIDTH / 2);
+                clearzone[1][clearcount] = dy - (BMP_CPLASMATORP_HEIGHT / 2);
+                clearzone[2][clearcount] = BMP_CPLASMATORP_WIDTH;
+                clearzone[3][clearcount] = BMP_CPLASMATORP_HEIGHT;
+                clearcount++;
+             }
+             else
+             {   
+                /* needmore: if(pt->pt_war & me->p_team) */
+                if (pt->pt_owner != me->p_no && ((pt->pt_war & me->p_team) ||
+                                                      (players[pt->pt_owner].
+                                                       p_team & (me->p_hostile | me->
+                                                                 p_swar))))
+                {
+                    W_WriteBitmap (dx - (eplasmatorp_width / 2),
+                                   dy - (eplasmatorp_height / 2),
+                                   eplasmatorp, plasmatorpColor (pt));
+                    clearzone[0][clearcount] = dx - (eplasmatorp_width / 2);
+                    clearzone[1][clearcount] = dy - (eplasmatorp_height / 2);
+                    clearzone[2][clearcount] = eplasmatorp_width;
+                    clearzone[3][clearcount] = eplasmatorp_height;
+                    clearcount++;
+                }
+                else
+                {
+                    W_WriteBitmap (dx - (mplasmatorp_width / 2),
+                                   dy - (mplasmatorp_height / 2),
+                                   mplasmatorp, plasmatorpColor (pt));
+        
+                    clearzone[0][clearcount] = dx - (mplasmatorp_width / 2);
+                    clearzone[1][clearcount] = dy - (mplasmatorp_height / 2);
+                    clearzone[2][clearcount] = mplasmatorp_width;
+                    clearzone[3][clearcount] = mplasmatorp_height;
+                    clearcount++;
+                }
             }
-
-            W_WriteBitmap (dx - (BMP_PLASMATORP_WIDTH / 2),
-                           dy - (BMP_PLASMATORP_HEIGHT / 2),
-                           plasmatorpIcon[ptorpTeam][pt->pt_fuse],
-                           plasmatorpColor (pt));
-            /*W_WriteBitmapDB (localSDB, dx - (BMP_PLASMATORP_WIDTH / 2),
-                             dy - (BMP_PLASMATORP_HEIGHT / 2),
-                             plasmatorpIcon[ptorpTeam][pt->pt_fuse],
-                             plasmatorpColor (pt));*/
-
-            clearzone[0][clearcount] = dx - (BMP_PLASMATORP_WIDTH / 2);
-            clearzone[1][clearcount] = dy - (BMP_PLASMATORP_HEIGHT / 2);
-            clearzone[2][clearcount] = BMP_PLASMATORP_WIDTH;
-            clearzone[3][clearcount] = BMP_PLASMATORP_HEIGHT;
-            clearcount++;
         }
-#endif /* COLORIZEWEAPON */
     }
 }
 

Index: defaults.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/defaults.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- defaults.c	27 Apr 2006 22:38:42 -0000	1.11
+++ defaults.c	29 Apr 2006 19:22:38 -0000	1.12
@@ -96,6 +96,12 @@
         }
     },
 #endif
+    {"colorWeapons", &colorWeapons, RC_BOOL,
+        {
+            "Use colored bitmaps for torps and plasmas",
+            NULL
+        }
+    },
     {"continueTractor", &continueTractor, RC_BOOL,
         {
             "Show tractor/pressor after lock",
@@ -1454,6 +1460,7 @@
     keepPeace = booleanDefault ("keepPeace", keepPeace);
     colorClient = intDefault ("colorClient", colorClient);
     dynamicBitmaps = booleanDefault ("dynamicBitmaps", dynamicBitmaps);
+    colorWeapons = booleanDefault ("colorWeapons", colorWeapons);
     continueTractor = booleanDefault ("continueTractor", continueTractor);
     showTractorPressor = booleanDefault ("showTractorPressor", showTractorPressor);
     showAllTractorPressor = booleanDefault ("showAllTractorPressor", showAllTractorPressor);

Index: data.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/data.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- data.c	27 Apr 2006 22:38:42 -0000	1.13
+++ data.c	29 Apr 2006 19:22:38 -0000	1.14
@@ -47,6 +47,7 @@
 
 int colorClient = 1;            /* Use new colorized bitmaps SRS 11/12/99 */
 int dynamicBitmaps = 1;         /* in game switching of ship bitmaps, default to on */
+int colorWeapons = 1;           /* Use color bitmaps for torps and plasmas */
 int newDashboard = 2;           /* use new graphic
                                  * dashboard, 6/2/93 LAB */
 int old_db = 0;                 /* should be same as
@@ -56,7 +57,8 @@
                                  * system support */
 int niftyNewMessages = 1;
 unsigned int oldalert = 0;
-int remap[16] = { 0, 1, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0 };
+int remap[32] = { 0, 1, 2, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+                  5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 int messpend = 0;
 #ifdef XTRA_MESSAGE_UI
 int messageHUD = 0;             /* Show message being typed on the local display           */
@@ -243,17 +245,24 @@
 W_Icon expview[BMP_SHIPEXPL_FRAMES];
 W_Icon base_sbexpview;
 W_Icon sbexpview[BMP_SBEXPL_FRAMES];
-#ifdef COLORIZE
-W_Icon cloud[5][BMP_TORPDET_FRAMES];
-W_Icon plasmacloud[5][BMP_TORPDET_FRAMES];
-W_Icon torpIcon[5][BMP_TORP_FRAMES];
-W_Icon plasmatorpIcon[5][BMP_TORP_FRAMES];
-#else
+
+W_Icon torp_cloud_bitmaps;
+W_Icon cloudC[NUM_CTORP_TYPES][BMP_TORPDET_FRAMES];
+W_Icon plasma_cloud_bitmaps;
+W_Icon plcloudC[NUM_CTORP_TYPES][BMP_TORPDET_FRAMES];
+W_Icon mtorp_bitmaps;
+W_Icon mtorpC[NUM_CTORP_TYPES][BMP_TORP_FRAMES];
+W_Icon torp_bitmaps;
+W_Icon torpC[NUM_CTORP_TYPES][BMP_TORP_FRAMES];
+W_Icon mplasma_bitmaps;
+W_Icon mplasmaC[NUM_CTORP_TYPES][BMP_TORP_FRAMES];
+W_Icon plasma_bitmaps;
+W_Icon plasmaC[NUM_CTORP_TYPES][BMP_TORP_FRAMES];
+
 W_Icon cloud[BMP_TORPDET_FRAMES];
 W_Icon plasmacloud[BMP_TORPDET_FRAMES];
 W_Icon etorp, mtorp;
 W_Icon eplasmatorp, mplasmatorp;
-#endif
 
 #ifdef VSHIELD_BITMAPS
 W_Icon base_vshield;

Index: option.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/option.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- option.c	27 Apr 2006 22:52:12 -0000	1.9
+++ option.c	29 Apr 2006 19:22:38 -0000	1.10
@@ -238,6 +238,7 @@
     {0, "Ship Menu", &MenuPage, 0, 0, 0, NULL, &Menus_Range},
     {1, "Page %d (click to change)", &MenuPage, 0, 0, 0, NULL, &Menus_Range},
     {1, "", &colorClient, 0, 0, 0, bitmaptypemess, &bitmap_range},
+    {1, "use color weapon bitmaps", &colorWeapons, 0, 0, 0, NULL, NULL},
 #ifdef VSHIELD_BITMAPS
     {1, "vary shields bitmap", &varyShields, 0, 0, 0, NULL, NULL},
 #endif