]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/hud/panel/radar.qc
Merge branch 'master' into terencehill/lms_updates
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hud / panel / radar.qc
index b87ab97762f1cf15cf103bf9e8bc2c382d60a400..f4bae2024cca45fc9b95fe7b14c8ae09fd127408 100644 (file)
@@ -62,8 +62,7 @@ void HUD_Radar_Hide_Maximized()
 float HUD_Radar_InputEvent(int bInputType, float nPrimary, float nSecondary)
 {
        TC(int, bInputType);
-       if(!hud_panel_radar_maximized || !hud_panel_radar_mouse ||
-               autocvar__hud_configure || mv_active)
+       if(!hud_panel_radar_maximized || !hud_panel_radar_mouse || autocvar__hud_configure || mv_active)
                return false;
 
        if(bInputType == 3)
@@ -73,21 +72,27 @@ float HUD_Radar_InputEvent(int bInputType, float nPrimary, float nSecondary)
                return true;
        }
 
+       if (bInputType == 2)
+               return false;
+
+       // at this point bInputType can only be 0 or 1 (key pressed or released)
+       bool key_pressed = (bInputType == 0);
+
        if(nPrimary == K_MOUSE1)
        {
-               if(bInputType == 0) // key pressed
+               if(key_pressed)
                        mouseClicked |= S_MOUSE1;
-               else if(bInputType == 1) // key released
+               else
                        mouseClicked -= (mouseClicked & S_MOUSE1);
        }
        else if(nPrimary == K_MOUSE2)
        {
-               if(bInputType == 0) // key pressed
+               if(key_pressed)
                        mouseClicked |= S_MOUSE2;
-               else if(bInputType == 1) // key released
+               else
                        mouseClicked -= (mouseClicked & S_MOUSE2);
        }
-       else if ( nPrimary == K_ESCAPE && bInputType == 0 )
+       else if (nPrimary == K_ESCAPE && key_pressed)
        {
                HUD_Radar_Hide_Maximized();
        }
@@ -106,21 +111,18 @@ float HUD_Radar_InputEvent(int bInputType, float nPrimary, float nSecondary)
                if ( STAT(HEALTH) <= 0 )
                {
                        // Show scoreboard
-                       if ( bInputType < 2 )
+                       con_keys = findkeysforcommand("+showscores", 0);
+                       keys = tokenize(con_keys);
+                       for (i = 0; i < keys; ++i)
                        {
-                               con_keys = findkeysforcommand("+showscores", 0);
-                               keys = tokenize(con_keys);
-                               for (i = 0; i < keys; ++i)
+                               if ( nPrimary == stof(argv(i)) )
                                {
-                                       if ( nPrimary == stof(argv(i)) )
-                                       {
-                                               hud_panel_radar_temp_hidden = bInputType == 0;
-                                               return false;
-                                       }
+                                       hud_panel_radar_temp_hidden = key_pressed;
+                                       return false;
                                }
                        }
                }
-               else if ( bInputType == 0 )
+               else if (key_pressed)
                        HUD_Radar_Hide_Maximized();
 
                return false;
@@ -173,6 +175,24 @@ void HUD_Radar_Mouse()
        }
 }
 
+float HUD_Radar_GetZoomFactor(int zoommode)
+{
+       switch(zoommode)
+       {
+               case 1: return 1 - current_zoomfraction;
+               case 2: return 0;
+               case 3: return 1;
+       }
+       return current_zoomfraction;
+}
+
+float HUD_Radar_GetAngle(int rotation)
+{
+       if (rotation)
+               return 90 * rotation;
+       return view_angles.y - 90;
+}
+
 void HUD_Radar()
 {
        if (!autocvar__hud_configure)
@@ -198,7 +218,7 @@ void HUD_Radar()
 
        HUD_Panel_LoadCvars();
 
-       float f = 0;
+       float zoom_factor = 0;
 
        if (hud_panel_radar_maximized && !autocvar__hud_configure)
        {
@@ -216,61 +236,14 @@ void HUD_Radar()
                        radar_panel_modified = true;
                strcpy(panel.current_panel_bg, panel_bg);
 
-               switch(hud_panel_radar_maximized_zoommode)
-               {
-                       default:
-                       case 0:
-                               f = current_zoomfraction;
-                               break;
-                       case 1:
-                               f = 1 - current_zoomfraction;
-                               break;
-                       case 2:
-                               f = 0;
-                               break;
-                       case 3:
-                               f = 1;
-                               break;
-               }
-
-               switch(hud_panel_radar_maximized_rotation)
-               {
-                       case 0:
-                               teamradar_angle = view_angles.y - 90;
-                               break;
-                       default:
-                               teamradar_angle = 90 * hud_panel_radar_maximized_rotation;
-                               break;
-               }
+               zoom_factor = HUD_Radar_GetZoomFactor(hud_panel_radar_maximized_zoommode);
+               teamradar_angle = HUD_Radar_GetAngle(hud_panel_radar_maximized_rotation);
        }
+
        if (!hud_panel_radar_maximized && !autocvar__hud_configure)
        {
-               switch(hud_panel_radar_zoommode)
-               {
-                       default:
-                       case 0:
-                               f = current_zoomfraction;
-                               break;
-                       case 1:
-                               f = 1 - current_zoomfraction;
-                               break;
-                       case 2:
-                               f = 0;
-                               break;
-                       case 3:
-                               f = 1;
-                               break;
-               }
-
-               switch(hud_panel_radar_rotation)
-               {
-                       case 0:
-                               teamradar_angle = view_angles.y - 90;
-                               break;
-                       default:
-                               teamradar_angle = 90 * hud_panel_radar_rotation;
-                               break;
-               }
+               zoom_factor = HUD_Radar_GetZoomFactor(hud_panel_radar_zoommode);
+               teamradar_angle = HUD_Radar_GetAngle(hud_panel_radar_rotation);
        }
 
        vector pos, mySize;
@@ -332,19 +305,10 @@ void HUD_Radar()
        if(bigsize > normalsize)
                normalsize = bigsize;
 
-       teamradar_size =
-                 f * bigsize
-               + (1 - f) * normalsize;
-       teamradar_origin3d_in_texcoord = teamradar_3dcoord_to_texcoord(
-                 f * mi_center
-               + (1 - f) * view_origin);
-
-       drawsetcliparea(
-               pos.x,
-               pos.y,
-               mySize.x,
-               mySize.y
-       );
+       teamradar_size = zoom_factor * bigsize + (1 - zoom_factor) * normalsize;
+       teamradar_origin3d_in_texcoord = teamradar_3dcoord_to_texcoord(zoom_factor * mi_center + (1 - zoom_factor) * view_origin);
+
+       drawsetcliparea(pos.x, pos.y, mySize.x, mySize.y);
 
        draw_teamradar_background(hud_panel_radar_foreground_alpha);