X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Futil.qc;h=baf60b5d88156d8f03f91b1e03701eed049a1424;hb=2547fdbb338d37427cc482fbfad58f524835dbec;hp=83ea8e3e5827fedbc29f9f7534aec14f8865ca80;hpb=0a5f730751cf4a7f6ce555ef920fe9fdcd8e59ac;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/util.qc b/qcsrc/common/util.qc index 83ea8e3e5..baf60b5d8 100644 --- a/qcsrc/common/util.qc +++ b/qcsrc/common/util.qc @@ -360,7 +360,10 @@ float buf_load(string pFilename) return -1; fh = fopen(pFilename, FILE_READ); if(fh < 0) - return buf; + { + buf_del(buf); + return -1; + } i = 0; while((l = fgets(fh))) { @@ -1364,18 +1367,22 @@ string textShortenToLength(string theText, float maxWidth, textLengthUpToLength_ return strcat(substring(theText, 0, textLengthUpToLength(theText, maxWidth - tw("..."), tw)), "..."); } -float isGametypeInFilter(float gt, float tp, string pattern) +float isGametypeInFilter(float gt, float tp, float ts, string pattern) { - string subpattern, subpattern2, subpattern3; + string subpattern, subpattern2, subpattern3, subpattern4; subpattern = strcat(",", GametypeNameFromType(gt), ","); if(tp) subpattern2 = ",teams,"; else subpattern2 = ",noteams,"; + if(ts) + subpattern3 = ",teamspawns,"; + else + subpattern3 = ",noteamspawns,"; if(gt == GAME_RACE || gt == GAME_CTS) - subpattern3 = ",race,"; + subpattern4 = ",race,"; else - subpattern3 = string_null; + subpattern4 = string_null; if(substring(pattern, 0, 1) == "-") { @@ -1384,7 +1391,9 @@ float isGametypeInFilter(float gt, float tp, string pattern) return 0; if(strstrofs(strcat(",", pattern, ","), subpattern2, 0) >= 0) return 0; - if(subpattern3 && strstrofs(strcat(",", pattern, ","), subpattern3, 0) >= 0) + if(strstrofs(strcat(",", pattern, ","), subpattern3, 0) >= 0) + return 0; + if(subpattern4 && strstrofs(strcat(",", pattern, ","), subpattern4, 0) >= 0) return 0; } else @@ -1393,7 +1402,8 @@ float isGametypeInFilter(float gt, float tp, string pattern) pattern = substring(pattern, 1, strlen(pattern) - 1); if(strstrofs(strcat(",", pattern, ","), subpattern, 0) < 0) if(strstrofs(strcat(",", pattern, ","), subpattern2, 0) < 0) - if((!subpattern3) || strstrofs(strcat(",", pattern, ","), subpattern3, 0) < 0) + if(strstrofs(strcat(",", pattern, ","), subpattern3, 0) < 0) + if((!subpattern4) || strstrofs(strcat(",", pattern, ","), subpattern4, 0) < 0) return 0; } return 1; @@ -1514,12 +1524,6 @@ vector solve_quadratic(float a, float b, float c) // ax^2 + bx + c = 0 return v; } - -float _unacceptable_compiler_bug_1_a(float b, float c) { return b == c; } -float _unacceptable_compiler_bug_1_b() { return 1; } -float _unacceptable_compiler_bug_1_c(float d) { return 2 * d; } -float _unacceptable_compiler_bug_1_d() { return 1; } - void check_unacceptable_compiler_bugs() { if(cvar("_allow_unacceptable_compiler_bugs")) @@ -1837,7 +1841,13 @@ float get_model_parameters(string m, float sk) fn = get_model_datafilename(m, sk, "txt"); fh = fopen(fn, FILE_READ); if(fh < 0) - return 0; + { + sk = 0; + fn = get_model_datafilename(m, sk, "txt"); + fh = fopen(fn, FILE_READ); + if(fh < 0) + return 0; + } get_model_parameters_modelname = m; get_model_parameters_modelskin = sk; @@ -1973,3 +1983,27 @@ float u8_strsize(string s) } return l; } + +// translation helpers +string language_filename(string s) +{ + string fn; + float fh; + fn = prvm_language; + if(fn == "" || fn == "dump") + return s; + fn = strcat(s, ".", fn); + if((fh = fopen(fn, FILE_READ)) >= 0) + { + fclose(fh); + return fn; + } + return s; +} +string CTX(string s) +{ + float p = strstrofs(s, "^", 0); + if(p < 0) + return s; + return substring(s, p+1, -1); +}