]> de.git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/client/miscfunctions.qc
Make particles depend on player scale even more
[voretournament/voretournament.git] / data / qcsrc / client / miscfunctions.qc
index 226a964c94698e1d8691ef389f2ee7deb6b602c1..687f8a2ce31f6320a61405553de94acaab653313 100644 (file)
@@ -180,6 +180,12 @@ void Announcer_Precache () {
 \r
        precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/lastsecond.wav"));\r
        precache_sound (strcat("announcer/", cvar_string("cl_announcer"), "/narrowly.wav"));\r
+\r
+       precache_sound (strcat("helper/", cvar_string("cl_helper_voice"), "/health.wav"));\r
+       precache_sound (strcat("helper/", cvar_string("cl_helper_voice"), "/armor.wav"));\r
+       precache_sound (strcat("helper/", cvar_string("cl_helper_voice"), "/ammo.wav"));\r
+       precache_sound (strcat("helper/", cvar_string("cl_helper_voice"), "/speed.wav"));\r
+       precache_sound (strcat("helper/", cvar_string("cl_helper_voice"), "/stomachload.wav"));\r
 }\r
 \r
 void AuditLists()\r
@@ -390,6 +396,33 @@ string ColorTranslateRGB(string s)
                return s;\r
 }\r
 \r
+string Team_ColorCode(float teamid)\r
+{\r
+    if (teamid == COLOR_TEAM1)\r
+        return "^1";\r
+    else if (teamid == COLOR_TEAM2)\r
+        return "^4";\r
+    else if (teamid == COLOR_TEAM3)\r
+        return "^3";\r
+    else if (teamid == COLOR_TEAM4)\r
+        return "^6";\r
+    else\r
+        return "^7";\r
+}\r
+\r
+// decolorizes and team colors the player name when needed\r
+string playername(string thename, float teamid)\r
+{\r
+    string t;\r
+    if (teamplay)\r
+    {\r
+        t = Team_ColorCode(teamid);\r
+        return strcat(t, strdecolorize(thename));\r
+    }\r
+    else\r
+        return strdecolorize(thename);\r
+}\r
+\r
 float cvar_or(string cv, float v)\r
 {\r
        string s;\r
@@ -541,3 +574,170 @@ void PolyDrawModel(entity e)
                }\r
        }\r
 }\r
+\r
+void DrawCircleClippedPic(vector centre, float radius, string pic, float f, vector rgb, float a, float drawflag)\r
+{\r
+       float x, y, q, d;\r
+       vector ringsize, v, t;\r
+       ringsize = radius * '1 1 0';\r
+\r
+       x = cos(f * 2 * M_PI);\r
+       y = sin(f * 2 * M_PI);\r
+       q = fabs(x) + fabs(y);\r
+       x /= q;\r
+       y /= q;\r
+\r
+       if(f >= 1)\r
+       {\r
+               // draw full rectangle\r
+               R_BeginPolygon(pic, drawflag);\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_x += 0.5 * ringsize_x;        t += '0.5 0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_y += 0.5 * ringsize_y;        t += '0.5 -0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_x -= 0.5 * ringsize_x;        t -= '0.5 0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_y -= 0.5 * ringsize_y;        t -= '0.5 -0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+               R_EndPolygon();\r
+\r
+               d = q - 1;\r
+               if(d > 0)\r
+               {\r
+                       R_BeginPolygon(pic, drawflag);\r
+                               v = centre;                     t = '0.5 0.5 0';\r
+                               R_PolygonVertex(v, t, rgb, a);\r
+\r
+                               v = centre;                     t = '0.5 0.5 0';\r
+                               v_x += 0.5 * ringsize_x;        t += '0.5 0.5 0';\r
+                               R_PolygonVertex(v, t, rgb, a);\r
+               }\r
+       }\r
+       else if(f > 0.75)\r
+       {\r
+               // draw upper and first triangle\r
+               R_BeginPolygon(pic, drawflag);\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_x += 0.5 * ringsize_x;        t += '0.5 0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_y += 0.5 * ringsize_y;        t += '0.5 -0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_x -= 0.5 * ringsize_x;        t -= '0.5 0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+               R_EndPolygon();\r
+               R_BeginPolygon(pic, drawflag);\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_x -= 0.5 * ringsize_x;        t -= '0.5 0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_y -= 0.5 * ringsize_y;        t -= '0.5 -0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+               d = q - 0.75;\r
+               if(d <= 0)\r
+                       R_EndPolygon();\r
+       }\r
+       else if(f > 0.5)\r
+       {\r
+               // draw upper triangle\r
+               R_BeginPolygon(pic, drawflag);\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_x += 0.5 * ringsize_x;        t += '0.5 0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_y += 0.5 * ringsize_y;        t += '0.5 -0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_x -= 0.5 * ringsize_x;        t -= '0.5 0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+               R_EndPolygon();\r
+\r
+               d = q - 0.5;\r
+               if(d > 0)\r
+               {\r
+                       R_BeginPolygon(pic, drawflag);\r
+                               v = centre;                     t = '0.5 0.5 0';\r
+                               R_PolygonVertex(v, t, rgb, a);\r
+\r
+                               v = centre;                     t = '0.5 0.5 0';\r
+                               v_x -= 0.5 * ringsize_x;        t -= '0.5 0.5 0';\r
+                               R_PolygonVertex(v, t, rgb, a);\r
+               }\r
+       }\r
+       else if(f > 0.25)\r
+       {\r
+               // draw first triangle\r
+               R_BeginPolygon(pic, drawflag);\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_x += 0.5 * ringsize_x;        t += '0.5 0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_y += 0.5 * ringsize_y;        t += '0.5 -0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+\r
+               d = q - 0.25;\r
+               if(d <= 0)\r
+                       R_EndPolygon();\r
+       }\r
+       else\r
+       {\r
+               d = q;\r
+               if(d > 0)\r
+               {\r
+                       R_BeginPolygon(pic, drawflag);\r
+                               v = centre;                     t = '0.5 0.5 0';\r
+                               R_PolygonVertex(v, t, rgb, a);\r
+\r
+                               v = centre;                     t = '0.5 0.5 0';\r
+                               v_x += 0.5 * ringsize_x;        t += '0.5 0.5 0';\r
+                               R_PolygonVertex(v, t, rgb, a);\r
+               }\r
+       }\r
+\r
+       if(d > 0)\r
+       {\r
+                       v = centre;                     t = '0.5 0.5 0';\r
+                       v_x += x * 0.5 * ringsize_x;    t += x * '0.5 0.5 0';\r
+                       v_y += y * 0.5 * ringsize_y;    t += y * '0.5 -0.5 0';\r
+                       R_PolygonVertex(v, t, rgb, a);\r
+               R_EndPolygon();\r
+       }\r
+}\r
+\r
+const vector GETPLAYERORIGIN_ERROR = '1123581321 2357111317 3141592653'; // way out of bounds for anything on the map\r
+vector getplayerorigin(float pl)\r
+{\r
+       string s;\r
+       entity e;\r
+\r
+       s = getplayerkey(pl, "TEMPHACK_origin");\r
+       if(s != "")\r
+               return stov(s);\r
+\r
+       e = entcs_receiver[pl];\r
+       if(e)\r
+               return e.origin;\r
+\r
+       return GETPLAYERORIGIN_ERROR;\r
+}\r