]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/util.qc
Update announcer countdown system with different types, update debugprint
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / util.qc
index 10b76ba95639657d39e8c9f338c45a6866a52200..667e150cd1e71cf0051ebe707b93f55ad5ad65f3 100644 (file)
@@ -2504,32 +2504,6 @@ void FindConnectedComponent(entity e, .entity fld, findNextEntityNearFunction_t
                queue_start.FindConnectedComponent_processing = 0;
 }
 
-float Count_Proper_Strings(string improper, string...count)
-{
-       float i, total = 0;
-       string tmp;
-       
-       for(i = 0; i < count; ++i)
-       {
-               tmp = ...(i, string);
-               if((tmp) && (tmp != improper)) { ++total; }
-       }
-       
-       return total;
-}
-
-float Count_Proper_Floats(float improper, float...count)
-{
-       float i, total = 0;
-       
-       for(i = 0; i < count; ++i)
-       {
-               if(...(i, float) != improper) { ++total; }
-       }
-       
-       return total;
-}
-
 // todo: this sucks, lets find a better way to do backtraces?
 #ifndef MENUQC
 void backtrace(string msg)
@@ -2606,111 +2580,121 @@ vector animfixfps(entity e, vector a, vector b)
 }
 #endif
 
-string count_ordinal(float interval)
+#ifdef SVQC
+void dedicated_print(string input) // print(), but only print if the server is not local
 {
-       // This function is designed primarily for the English language, it's impossible
-       // to accomodate all languages unless we do a specific function for each one...
-       // and since that's not technically feasible/practical, this is all we've got folks.
-
-       // Basically, it just allows you to represent a number or count in different ways
-       // depending on the number... like, with count_ordinal you can provide integers
-       // and retrieve 1st, 2nd, 3rd, nth ordinal numbers in a clean and simple way.
+       if(server_is_dedicated) { print(input); }
+}
+#endif
 
-       switch(mod(floor(interval), 100))
+#ifndef MENUQC
+float Announcer_PickNumber(float type, float num)
+{
+       switch(type)
        {
-               // if the first two numbers are 11,12,13, use nth for output
-               case 11:
-               case 12:
-               case 13:
-                       { return sprintf(_("%dth"), interval); }
-               
-               default:
+               case CNT_GAMESTART:
                {
-                       // otherwise, check normally for 1st,2nd,3rd insertions
-                       switch(mod(interval, 10))
+                       switch(num)
                        {
-                               case 1: return sprintf(_("%dst"), interval);
-                               case 2: return sprintf(_("%dnd"), interval);
-                               case 3: return sprintf(_("%drd"), interval);
+                               case 10: return ANNCE_NUM_GAMESTART_10;
+                               case 9:  return ANNCE_NUM_GAMESTART_9; 
+                               case 8:  return ANNCE_NUM_GAMESTART_8; 
+                               case 7:  return ANNCE_NUM_GAMESTART_7; 
+                               case 6:  return ANNCE_NUM_GAMESTART_6; 
+                               case 5:  return ANNCE_NUM_GAMESTART_5; 
+                               case 4:  return ANNCE_NUM_GAMESTART_4; 
+                               case 3:  return ANNCE_NUM_GAMESTART_3; 
+                               case 2:  return ANNCE_NUM_GAMESTART_2; 
+                               case 1:  return ANNCE_NUM_GAMESTART_1; 
                        }
-                       return sprintf(_("%dth"), interval);
+                       break;
                }
-       }
-       return "";
-}
-
-string count_fill(float interval, string zeroth, string first, string second, string third, string multi)
-{
-       // This function is designed primarily for the English language, it's impossible
-       // to accomodate all languages unless we do a specific function for each one...
-       // and since that's not technically feasible/practical, this is all we've got folks.
-
-       // Here you can insert specific strings based on the interval number, so you could do
-       // i.e. count_seconds which outputs like this:
-       //   0 seconds
-       //   1 second
-       //   2 seconds
-       //   3 seconds
-       //   etc... minutes, hours, days, etc. 
-
-       switch(floor(interval))
-       {
-               case 0: return sprintf(zeroth, interval);
-               case 1:
+               case CNT_IDLE:
                {
-                       if(interval == 1) // EXACTLY value of 1
-                               return sprintf(first, interval);
-                       else
-                               return sprintf(multi, interval);
+                       switch(num)
+                       {
+                               case 10: return ANNCE_NUM_IDLE_10;
+                               case 9:  return ANNCE_NUM_IDLE_9; 
+                               case 8:  return ANNCE_NUM_IDLE_8; 
+                               case 7:  return ANNCE_NUM_IDLE_7; 
+                               case 6:  return ANNCE_NUM_IDLE_6; 
+                               case 5:  return ANNCE_NUM_IDLE_5; 
+                               case 4:  return ANNCE_NUM_IDLE_4; 
+                               case 3:  return ANNCE_NUM_IDLE_3; 
+                               case 2:  return ANNCE_NUM_IDLE_2; 
+                               case 1:  return ANNCE_NUM_IDLE_1; 
+                       }
+                       break;
+               }
+               case CNT_KILL:
+               {
+                       switch(num)
+                       {
+                               case 10: return ANNCE_NUM_KILL_10;
+                               case 9:  return ANNCE_NUM_KILL_9; 
+                               case 8:  return ANNCE_NUM_KILL_8; 
+                               case 7:  return ANNCE_NUM_KILL_7; 
+                               case 6:  return ANNCE_NUM_KILL_6; 
+                               case 5:  return ANNCE_NUM_KILL_5; 
+                               case 4:  return ANNCE_NUM_KILL_4; 
+                               case 3:  return ANNCE_NUM_KILL_3; 
+                               case 2:  return ANNCE_NUM_KILL_2; 
+                               case 1:  return ANNCE_NUM_KILL_1; 
+                       }
+                       break;
+               }
+               case CNT_RESPAWN:
+               {
+                       switch(num)
+                       {
+                               case 10: return ANNCE_NUM_RESPAWN_10;
+                               case 9:  return ANNCE_NUM_RESPAWN_9; 
+                               case 8:  return ANNCE_NUM_RESPAWN_8; 
+                               case 7:  return ANNCE_NUM_RESPAWN_7; 
+                               case 6:  return ANNCE_NUM_RESPAWN_6; 
+                               case 5:  return ANNCE_NUM_RESPAWN_5; 
+                               case 4:  return ANNCE_NUM_RESPAWN_4; 
+                               case 3:  return ANNCE_NUM_RESPAWN_3; 
+                               case 2:  return ANNCE_NUM_RESPAWN_2; 
+                               case 1:  return ANNCE_NUM_RESPAWN_1; 
+                       }
+                       break;
+               }
+               case CNT_ROUNDSTART:
+               {
+                       switch(num)
+                       {
+                               case 10: return ANNCE_NUM_ROUNDSTART_10;
+                               case 9:  return ANNCE_NUM_ROUNDSTART_9; 
+                               case 8:  return ANNCE_NUM_ROUNDSTART_8; 
+                               case 7:  return ANNCE_NUM_ROUNDSTART_7; 
+                               case 6:  return ANNCE_NUM_ROUNDSTART_6; 
+                               case 5:  return ANNCE_NUM_ROUNDSTART_5; 
+                               case 4:  return ANNCE_NUM_ROUNDSTART_4; 
+                               case 3:  return ANNCE_NUM_ROUNDSTART_3; 
+                               case 2:  return ANNCE_NUM_ROUNDSTART_2; 
+                               case 1:  return ANNCE_NUM_ROUNDSTART_1; 
+                       }
+                       break;
+               }
+               default:
+               {
+                       switch(num)
+                       {
+                               case 10: return ANNCE_NUM_10;
+                               case 9:  return ANNCE_NUM_9; 
+                               case 8:  return ANNCE_NUM_8; 
+                               case 7:  return ANNCE_NUM_7; 
+                               case 6:  return ANNCE_NUM_6; 
+                               case 5:  return ANNCE_NUM_5; 
+                               case 4:  return ANNCE_NUM_4; 
+                               case 3:  return ANNCE_NUM_3; 
+                               case 2:  return ANNCE_NUM_2; 
+                               case 1:  return ANNCE_NUM_1; 
+                       }
+                       break;
                }
-               case 2: return sprintf(second, interval);
-               case 3: return sprintf(third, interval);
-               default: return sprintf(multi, interval);
        }
-       return "";
-}
-
-string process_time(string fields, float seconds)
-{
-       float tmp_hours = 0, tmp_minutes = 0, tmp_seconds = 0;
-       float tmp_years = 0, tmp_weeks = 0, tmp_days = 0;
-       
-       tmp_seconds = floor(seconds);
-
-       if(tmp_seconds)
-               { tmp_minutes = floor(tmp_seconds / 60); }
-       
-       if(tmp_minutes)
-               { tmp_seconds -= (tmp_minutes * 60);
-               tmp_hours = floor(tmp_minutes / 60); }
-
-       if(tmp_hours)
-               { tmp_minutes -= (tmp_hours * 60); }
-
-               if(tmp_hours)
-                       { tmp_days = floor(tmp_hours / 24); }
-                       
-               if(tmp_days)
-                       { tmp_hours -= (tmp_days * 60);
-                       tmp_weeks = floor(tmp_days / 7); }
-
-               if(tmp_weeks)
-                       { tmp_days -= (tmp_weeks * 60);
-                       tmp_years = floor(tmp_weeks / 52); }
-
-       //fields = strreplace("
-       /*switch(output)
-       {
-               case 1: return sprintf("%02d:%02d:%02d", tmp_hours, tmp_minutes, tmp_seconds);
-               //todo
-               default: return "";
-       }*/
-       return "";
-}
-
-#ifdef SVQC
-void dedicated_print(string input) // print(), but only print if the server is not local
-{
-       if(server_is_dedicated) { print(input); }
+       return NOTIF_ABORT; // abort sending if none of these numbers were right
 }
 #endif