]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - view.c
*** empty log message ***
[xonotic/darkplaces.git] / view.c
diff --git a/view.c b/view.c
index edb23b986c18ba4a6387dc6877dd17542ad09696..cca802147246dbe6142b54d779f39a6215849745 100644 (file)
--- a/view.c
+++ b/view.c
@@ -204,7 +204,7 @@ V_ParseDamage
 */
 void V_ParseDamage (void)
 {
-       int i, armor, blood;
+       int armor, blood;
        vec3_t from;
        //vec3_t forward, right;
        vec3_t localfrom;
@@ -214,8 +214,7 @@ void V_ParseDamage (void)
 
        armor = MSG_ReadByte ();
        blood = MSG_ReadByte ();
-       for (i=0 ; i<3 ; i++)
-               from[i] = MSG_ReadCoord ();
+       MSG_ReadVector(from);
 
        count = blood*0.5 + armor*0.5;
        if (count < 10)
@@ -379,7 +378,7 @@ void V_CalcRefdef (void)
                        {
                                // first person view from entity
                                // angles
-                               if (cl.stats[STAT_HEALTH] <= 0)
+                               if (cl.stats[STAT_HEALTH] <= 0 && gamemode != GAME_FNIGGIUM)
                                        viewangles[ROLL] = 80;  // dead view angle
                                VectorAdd(viewangles, cl.punchangle, viewangles);
                                viewangles[ROLL] += V_CalcRoll(cl.viewangles, cl.velocity);
@@ -443,17 +442,17 @@ void V_CalcViewBlend(void)
        r_refdef.viewblend[1] = 0;
        r_refdef.viewblend[2] = 0;
        r_refdef.viewblend[3] = 0;
-       if (cls.state == ca_connected && cls.signon == SIGNONS)
+       if (cls.state == ca_connected && cls.signon == SIGNONS && gl_polyblend.value > 0)
        {
                // set contents color
                switch (CL_PointQ1Contents(r_vieworigin))
                {
                case CONTENTS_EMPTY:
                case CONTENTS_SOLID:
-                       cl.cshifts[CSHIFT_CONTENTS].destcolor[0] = v_cshift.destcolor[0];
-                       cl.cshifts[CSHIFT_CONTENTS].destcolor[1] = v_cshift.destcolor[1];
-                       cl.cshifts[CSHIFT_CONTENTS].destcolor[2] = v_cshift.destcolor[2];
-                       cl.cshifts[CSHIFT_CONTENTS].percent = v_cshift.percent;
+                       cl.cshifts[CSHIFT_CONTENTS].destcolor[0] = 0;
+                       cl.cshifts[CSHIFT_CONTENTS].destcolor[1] = 0;
+                       cl.cshifts[CSHIFT_CONTENTS].destcolor[2] = 0;
+                       cl.cshifts[CSHIFT_CONTENTS].percent = 0;
                        break;
                case CONTENTS_LAVA:
                        cl.cshifts[CSHIFT_CONTENTS].destcolor[0] = 255;
@@ -474,36 +473,44 @@ void V_CalcViewBlend(void)
                        cl.cshifts[CSHIFT_CONTENTS].percent = 128 >> 1;
                }
 
-               if (cl.items & IT_QUAD)
-               {
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 0;
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 0;
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 255;
-                       cl.cshifts[CSHIFT_POWERUP].percent = 30;
-               }
-               else if (cl.items & IT_SUIT)
+               if (gamemode != GAME_TRANSFUSION)
                {
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 0;
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 255;
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 0;
-                       cl.cshifts[CSHIFT_POWERUP].percent = 20;
-               }
-               else if (cl.items & IT_INVISIBILITY)
-               {
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 100;
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 100;
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 100;
-                       cl.cshifts[CSHIFT_POWERUP].percent = 100;
-               }
-               else if (cl.items & IT_INVULNERABILITY)
-               {
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 255;
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 255;
-                       cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 0;
-                       cl.cshifts[CSHIFT_POWERUP].percent = 30;
+                       if (cl.items & IT_QUAD)
+                       {
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 0;
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 0;
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 255;
+                               cl.cshifts[CSHIFT_POWERUP].percent = 30;
+                       }
+                       else if (cl.items & IT_SUIT)
+                       {
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 0;
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 255;
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 0;
+                               cl.cshifts[CSHIFT_POWERUP].percent = 20;
+                       }
+                       else if (cl.items & IT_INVISIBILITY)
+                       {
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 100;
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 100;
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 100;
+                               cl.cshifts[CSHIFT_POWERUP].percent = 100;
+                       }
+                       else if (cl.items & IT_INVULNERABILITY)
+                       {
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[0] = 255;
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[1] = 255;
+                               cl.cshifts[CSHIFT_POWERUP].destcolor[2] = 0;
+                               cl.cshifts[CSHIFT_POWERUP].percent = 30;
+                       }
+                       else
+                               cl.cshifts[CSHIFT_POWERUP].percent = 0;
                }
-               else
-                       cl.cshifts[CSHIFT_POWERUP].percent = 0;
+
+               cl.cshifts[CSHIFT_VCSHIFT].destcolor[0] = v_cshift.destcolor[0];
+               cl.cshifts[CSHIFT_VCSHIFT].destcolor[1] = v_cshift.destcolor[1];
+               cl.cshifts[CSHIFT_VCSHIFT].destcolor[2] = v_cshift.destcolor[2];
+               cl.cshifts[CSHIFT_VCSHIFT].percent = v_cshift.percent;
 
                // LordHavoc: fixed V_CalcBlend
                for (j = 0;j < NUM_CSHIFTS;j++)
@@ -512,7 +519,7 @@ void V_CalcViewBlend(void)
                        if (a2 > 0)
                        {
                                VectorLerp(r_refdef.viewblend, a2, cl.cshifts[j].destcolor, r_refdef.viewblend);
-                               r_refdef.viewblend[3] = 1 - (1 - r_refdef.viewblend[3]) * (1 - a2); // correct alpha multiply...  took a while to find it on the web
+                               r_refdef.viewblend[3] = (1 - (1 - r_refdef.viewblend[3]) * (1 - a2)); // correct alpha multiply...  took a while to find it on the web
                        }
                }
                // saturate color (to avoid blending in black)
@@ -525,7 +532,7 @@ void V_CalcViewBlend(void)
                r_refdef.viewblend[0] = bound(0.0f, r_refdef.viewblend[0] * (1.0f/255.0f), 1.0f);
                r_refdef.viewblend[1] = bound(0.0f, r_refdef.viewblend[1] * (1.0f/255.0f), 1.0f);
                r_refdef.viewblend[2] = bound(0.0f, r_refdef.viewblend[2] * (1.0f/255.0f), 1.0f);
-               r_refdef.viewblend[3] = bound(0.0f, r_refdef.viewblend[3]                , 1.0f);
+               r_refdef.viewblend[3] = bound(0.0f, r_refdef.viewblend[3] * gl_polyblend.value, 1.0f);
        }
 }