]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/hud.qc
Merge remote branch 'origin/master' into samual/balance
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hud.qc
index cdfce5f4805e3c953fb6a80d9d68fc4ddaffd031..7acfacb8c428b99d8246db0b10b8f9a3c2db8335 100644 (file)
@@ -1805,52 +1805,51 @@ void HUD_KillNotify(string s1, string s2, string s3, float type, float msg) // s
                        HUD_KillNotify_Push(s1, "", 0, DEATH_GENERIC);
                        if(alsoprint)
                        {
-                           if(gentle)
-                    print (sprintf(_("^1%s^1 ran into a turret\n"), s1));
-                else
-                {                                
-                    switch(type)
-                    {
-                        case DEATH_TURRET_EWHEEL:
-                            print (sprintf(_("^1%s^1 was laserd down by a eWheel turret \n"), s1));
-                            break;
-                        case DEATH_TURRET_FLAC:
-                            print (sprintf(_("^1%s^1 got caught in the flac \n"), s1));
-                            break;
-                        case DEATH_TURRET_MACHINEGUN:
-                            print (sprintf(_("^1%s^1 was riddeld full of riddled by a machinegun turret \n"), s1));
-                            break;
-                        case DEATH_TURRET_WALKER_GUN:
-                            print (sprintf(_("^1%s^1 got served a led enrichment by a walker turret \n"), s1));
-                            break;
-                        case DEATH_TURRET_WALKER_MEELE:
-                            print (sprintf(_("^1%s^1 was impaled by a walker turret \n"), s1));
-                            break;
-                        case DEATH_TURRET_WALKER_ROCKET:
-                            print (sprintf(_("^1%s^1 was rocketed to hell by a walker turret \n"), s1));
-                            break;
-                        case DEATH_TURRET_HELLION:
-                            print (sprintf(_("^1%s^1 was blasted away hellion turret \n"), s1));
-                            break;
-                        case DEATH_TURRET_HK:
-                            print (sprintf(_("^1%s^1 could not hide from the hunter turret \n"), s1));
-                            break;
-                        case DEATH_TURRET_MLRS:
-                            print (sprintf(_("^1%s^1 got turned into smoldering gibs by a mlrs turret \n"), s1));
-                            break;
-                        case DEATH_TURRET_PLASMA:
-                            print (sprintf(_("^1%s^1 got served some superheated plasma from a plasma turret \n"), s1));
-                            break;
-                        case DEATH_TURRET_PHASER:
-                            print (sprintf(_("^1%s^1 was phased out \n"), s1));
-                            break;
-                        case DEATH_TURRET_TESLA:                               
-                            print (sprintf(_("^1%s^1 was electrocuted by a tesla turret \n"), s1));
-                            break;
-                    }
-                }
+                               if(gentle)
+                                       print (sprintf(_("^1%s^1 ran into a turret\n"), s1));
+                               else
+                               {
+                                       switch(type)
+                                       {
+                                               case DEATH_TURRET_EWHEEL:
+                                                       print (sprintf(_("^1%s^1 was laserd down by a eWheel turret \n"), s1));
+                                                       break;
+                                               case DEATH_TURRET_FLAC:
+                                                       print (sprintf(_("^1%s^1 got caught in the flac \n"), s1));
+                                                       break;
+                                               case DEATH_TURRET_MACHINEGUN:
+                                                       print (sprintf(_("^1%s^1 was riddeld full of riddled by a machinegun turret \n"), s1));
+                                                       break;
+                                               case DEATH_TURRET_WALKER_GUN:
+                                                       print (sprintf(_("^1%s^1 got served a led enrichment by a walker turret \n"), s1));
+                                                       break;
+                                               case DEATH_TURRET_WALKER_MEELE:
+                                                       print (sprintf(_("^1%s^1 was impaled by a walker turret \n"), s1));
+                                                       break;
+                                               case DEATH_TURRET_WALKER_ROCKET:
+                                                       print (sprintf(_("^1%s^1 was rocketed to hell by a walker turret \n"), s1));
+                                                       break;
+                                               case DEATH_TURRET_HELLION:
+                                                       print (sprintf(_("^1%s^1 was blasted away hellion turret \n"), s1));
+                                                       break;
+                                               case DEATH_TURRET_HK:
+                                                       print (sprintf(_("^1%s^1 could not hide from the hunter turret \n"), s1));
+                                                       break;
+                                               case DEATH_TURRET_MLRS:
+                                                       print (sprintf(_("^1%s^1 got turned into smoldering gibs by a mlrs turret \n"), s1));
+                                                       break;
+                                               case DEATH_TURRET_PLASMA:
+                                                       print (sprintf(_("^1%s^1 got served some superheated plasma from a plasma turret \n"), s1));
+                                                       break;
+                                               case DEATH_TURRET_PHASER:
+                                                       print (sprintf(_("^1%s^1 was phased out \n"), s1));
+                                                       break;
+                                               case DEATH_TURRET_TESLA:                        
+                                                       print (sprintf(_("^1%s^1 was electrocuted by a tesla turret \n"), s1));
+                                                       break;
+                                       }
+                               }
                        }
-                               
                } else if (type == DEATH_CUSTOM) {
                        HUD_KillNotify_Push(s1, "", 0, DEATH_CUSTOM);
                        if(alsoprint)
@@ -4359,7 +4358,7 @@ void HUD_Physics(void)
                speed_baralign = (autocvar_hud_panel_physics_baralign == 2);
                acceleration_baralign = (autocvar_hud_panel_physics_baralign == 3);
        }
-       if (autocvar_hud_panel_physics_acceleration_progressbar_mode == 0)
+       if (autocvar_hud_panel_physics_acceleration_mode == 0)
                acceleration_baralign = 3; //override hud_panel_physics_baralign value for acceleration
 
        //draw speed
@@ -4482,7 +4481,6 @@ float centerprint_msgID[CENTERPRINT_MAX_MSGS];
 float centerprint_time[CENTERPRINT_MAX_MSGS];
 float centerprint_expire_time[CENTERPRINT_MAX_MSGS];
 float centerprint_countdown_num[CENTERPRINT_MAX_MSGS];
-float centerprint_fadetime;
 float centerprint_showing;
 
 void centerprint_generic(float new_id, string strMessage, float duration, float countdown_num)
@@ -4515,8 +4513,6 @@ void centerprint_generic(float new_id, string strMessage, float duration, float
        if (!centerprint_showing)
                centerprint_showing = TRUE;
 
-       centerprint_fadetime = bound(0, autocvar_hud_panel_centerprint_fadetime, 1);
-
        for (i=0, j=cpm_index; i<CENTERPRINT_MAX_MSGS; ++i, ++j)
        {
                if (j == CENTERPRINT_MAX_MSGS)
@@ -4526,9 +4522,9 @@ void centerprint_generic(float new_id, string strMessage, float duration, float
                        if (strMessage == "" && centerprint_messages[j] != "" && centerprint_countdown_num[j] == 0)
                        {
                                // fade out the current msg (duration and countdown_num are ignored)
-                               centerprint_time[j] = centerprint_fadetime;
-                               if (centerprint_expire_time[j] > time + centerprint_fadetime || centerprint_expire_time[j] < time)
-                                       centerprint_expire_time[j] = time + centerprint_fadetime;
+                               centerprint_time[j] = min(5, autocvar_hud_panel_centerprint_fade_out);
+                               if (centerprint_expire_time[j] > time + min(5, autocvar_hud_panel_centerprint_fade_out) || centerprint_expire_time[j] < time)
+                                       centerprint_expire_time[j] = time + min(5, autocvar_hud_panel_centerprint_fade_out);
                                return;
                        }
                        break; // found a msg with the same id, at position j
@@ -4619,9 +4615,14 @@ void HUD_CenterPrint (void)
                if (scoreboard_bottom >= 0.96 * vid_conheight)
                        return;
                vector target_pos;
+               
                target_pos = eY * scoreboard_bottom + eX * 0.5 * (vid_conwidth - panel_size_x);
-               panel_pos = panel_pos + (target_pos - panel_pos) * sqrt(scoreboard_fade_alpha);
-               panel_size_y = min(panel_size_y, vid_conheight - scoreboard_bottom);
+               
+               if(target_pos_y > panel_pos_y)
+               {
+                       panel_pos = panel_pos + (target_pos - panel_pos) * sqrt(scoreboard_fade_alpha);
+                       panel_size_y = min(panel_size_y, vid_conheight - scoreboard_bottom);
+               }
        }
 
        HUD_Panel_DrawBg(1);
@@ -4671,27 +4672,32 @@ void HUD_CenterPrint (void)
                        else
                                continue;
                }
-               if (centerprint_time[j] < 0 || centerprint_expire_time[j] - centerprint_fadetime > time)
-               {
-                       a = bound(0, (time - (centerprint_expire_time[j] - centerprint_time[j])) / centerprint_fadetime, 1);
-               }
+               
+               // fade the centerprint in/out 
+               if (centerprint_time[j] < 0 || centerprint_expire_time[j] - autocvar_hud_panel_centerprint_fade_out > time)
+                       a = bound(0, (time - (centerprint_expire_time[j] - centerprint_time[j])) / max(0.0001, autocvar_hud_panel_centerprint_fade_in), 1);
                else if (centerprint_expire_time[j] > time)
-               {
-                       a = (centerprint_expire_time[j] - time) / centerprint_fadetime;
-               }
+                       a = (centerprint_expire_time[j] - time) / max(0.0001, autocvar_hud_panel_centerprint_fade_out);
                
-               a = a * bound(0.5, (1 - (i / 2)), 1); // pass one: all messages after the first have half alpha
-               a = a * bound(0.5, (1 - (i / 10)), 1); // pass two: after that, gradually lower alpha even more for each message
+               // set the size from fading in/out before subsequent fading
+               sz = autocvar_hud_panel_centerprint_fade_minfontsize + a * (1 - autocvar_hud_panel_centerprint_fade_minfontsize); 
                
-               sz = 0.75 + a * (1 - 0.75); // set the sizing based on alpha
+               // also fade it based on positioning
+               if(autocvar_hud_panel_centerprint_fade_subsequent)
+               {
+                       a = a * bound(autocvar_hud_panel_centerprint_fade_subsequent_passone_minalpha, (1 - (i / max(1, autocvar_hud_panel_centerprint_fade_subsequent_passone))), 1); // pass one: all messages after the first have half alpha
+                       a = a * bound(autocvar_hud_panel_centerprint_fade_subsequent_passtwo_minalpha, (1 - (i / max(1, autocvar_hud_panel_centerprint_fade_subsequent_passtwo))), 1); // pass two: after that, gradually lower alpha even more for each message
+               }
                
-               //print(strcat("alpha for centerprint ", ftos(i), ": ", ftos(a), ".\n"));
-
+               // finally set the size based on the new alpha from subsequent fading
+               sz = sz * (autocvar_hud_panel_centerprint_fade_subsequent_minfontsize + a * (1 - autocvar_hud_panel_centerprint_fade_subsequent_minfontsize)); 
                drawfontscale = sz * '1 1 0';
+               
                if (centerprint_countdown_num[j])
                        n = tokenizebyseparator(sprintf(centerprint_messages[j], centerprint_countdown_num[j]), "\n");
                else
                        n = tokenizebyseparator(centerprint_messages[j], "\n");
+
                if (autocvar_hud_panel_centerprint_flip)
                {
                        // check if the message can be entirely shown
@@ -4705,12 +4711,6 @@ void HUD_CenterPrint (void)
                                                pos_y -= fontsize_y;
                                        else
                                                pos_y -= fontsize_y * CENTERPRINT_SPACING/2;
-                                       // NOTE: uncommented so as to not reject messages whenever they are "too large" -- This just continues drawing it anyway.
-                                       //if (pos_y < panel_pos_y) // check if the next line can be shown
-                                       //{
-                                       //      drawfontscale = '1 1 0';
-                                       //      return;
-                                       //}
                                }
                        }
                        current_msg_pos_y = pos_y; // save starting pos (first line) of the current message
@@ -4732,12 +4732,6 @@ void HUD_CenterPrint (void)
                                }
                                else
                                        pos_y += fontsize_y * CENTERPRINT_SPACING/2;
-                               // NOTE: uncommented so as to not reject messages whenever they are "too large" -- This just continues drawing it anyway.
-                               //if (!autocvar_hud_panel_centerprint_flip && pos_y > panel_pos_y + panel_size_y - fontsize_y) // check if the next line can be shown
-                               //{
-                               //      drawfontscale = '1 1 0';
-                               //      return;
-                               //}
                        }
                }
                msg_size = pos_y - msg_size;
@@ -4746,12 +4740,24 @@ void HUD_CenterPrint (void)
                        pos_y = current_msg_pos_y - CENTERPRINT_SPACING * fontsize_y;
                        if (a < 1 && centerprint_msgID[j] == 0) // messages with id can be replaced just after they are faded out, so never move over them the next messages
                                pos_y += (msg_size + CENTERPRINT_SPACING * fontsize_y) * (1 - sqrt(sz));
+                               
+                       if (pos_y < panel_pos_y) // check if the next message can be shown
+                       {
+                               drawfontscale = '1 1 0';
+                               return;
+                       }
                }
                else
                {
                        pos_y += CENTERPRINT_SPACING * fontsize_y;
                        if (a < 1 && centerprint_msgID[j] == 0) // messages with id can be replaced just after they are faded out, so never move over them the next messages
                                pos_y -= (msg_size + CENTERPRINT_SPACING * fontsize_y) * (1 - sqrt(sz));
+                               
+                       if(pos_y > panel_pos_y + panel_size_y - fontsize_y) // check if the next message can be shown
+                       {
+                               drawfontscale = '1 1 0';
+                               return;
+                       }
                }
        }
        drawfontscale = '1 1 0';