X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Futil.qc;h=667e150cd1e71cf0051ebe707b93f55ad5ad65f3;hp=10b76ba95639657d39e8c9f338c45a6866a52200;hb=546e752299244ed921ca175c78a28318c60165af;hpb=97486958efa65ad2295e08228de9349e13b4bdea diff --git a/qcsrc/common/util.qc b/qcsrc/common/util.qc index 10b76ba956..667e150cd1 100644 --- a/qcsrc/common/util.qc +++ b/qcsrc/common/util.qc @@ -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