X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fcounting.qh;h=c5c95671cf9ae2ec4600bf0fe304a496d46ff296;hb=35e8f712933b0ebf9b163b7289cf975825b33803;hp=a74f74e980f467acfe601edf823aab0c60b3ee80;hpb=489318817dc508e24f479090ddcf53ace10adbf0;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/counting.qh b/qcsrc/common/counting.qh index a74f74e98..c5c95671c 100644 --- a/qcsrc/common/counting.qh +++ b/qcsrc/common/counting.qh @@ -1,3 +1,62 @@ +#ifndef COUNTING_H +#define COUNTING_H + +#if defined(CSQC) + #include "util-pre.qh" + #include "../client/sys-pre.qh" + #include "../dpdefs/csprogsdefs.qh" + #include "../client/sys-post.qh" + #include "../client/defs.qh" + #include "../dpdefs/keycodes.qh" + #include "constants.qh" + #include "stats.qh" + #include "../warpzonelib/anglestransform.qh" + #include "../warpzonelib/mathlib.qh" + #include "../warpzonelib/common.qh" + #include "../warpzonelib/client.qh" + #include "playerstats.qh" + #include "teams.qh" + #include "util.qh" + #include "nades.qh" + #include "buffs.qh" + #include "test.qh" +#elif defined(MENUQC) + #include "util-pre.qh" + #include "../menu/sys-pre.qh" + #include "../dpdefs/menudefs.qh" + #include "../dpdefs/keycodes.qh" + #include "../menu/sys-post.qh" + #include "../menu/config.qh" + #include "../warpzonelib/mathlib.qh" + #include "util.qh" + #include "test.qh" + #include "../menu/oo/base.qh" + #include "playerstats.qh" + #include "teams.qh" + #include "constants.qh" + #include "mapinfo.qh" + #include "campaign_common.qh" + #include "weapons/weapons.qh" +#elif defined(SVQC) + #include "util-pre.qh" + #include "../server/sys-pre.qh" + #include "../dpdefs/progsdefs.qh" + #include "../dpdefs/dpextensions.qh" + #include "../server/sys-post.qh" + #include "../warpzonelib/anglestransform.qh" + #include "../warpzonelib/mathlib.qh" + #include "../warpzonelib/common.qh" + #include "../warpzonelib/util_server.qh" + #include "../warpzonelib/server.qh" + #include "constants.qh" + #include "stats.qh" + #include "teams.qh" + #include "util.qh" + #include "nades.qh" + #include "buffs.qh" + #include "test.qh" +#endif + // =============================================== // Time processing and counting functions/macros // =============================================== @@ -50,8 +109,8 @@ ZCTX(_("CI_SEC^%d seconds")), /* second */ \ ZCTX(_("CI_THI^%d seconds")), /* third */ \ ZCTX(_("CI_MUL^%d seconds"))) /* multi */ - -string count_ordinal(float interval) + +string count_ordinal(int interval) { // 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... @@ -60,10 +119,10 @@ string count_ordinal(float interval) // 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(floor((mod(interval, 100))/10) * 10 != 10) // examples: 12th, 111th, 213th will not execute this block + if(floor((interval % 100)/10) * 10 != 10) // examples: 12th, 111th, 213th will not execute this block { // otherwise, check normally for 1st,2nd,3rd insertions - switch(mod(interval, 10)) + switch(interval % 10) { case 1: return sprintf(_("%dst"), interval); case 2: return sprintf(_("%dnd"), interval); @@ -72,7 +131,7 @@ string count_ordinal(float interval) } } else { return sprintf(_("%dth"), interval); } - + return ""; } @@ -88,7 +147,7 @@ string count_fill(float interval, string zeroth, string first, string second, st // 1 second // 2 seconds // 3 seconds - // etc... minutes, hours, days, etc. + // etc... minutes, hours, days, etc. switch(floor(interval)) { @@ -111,28 +170,28 @@ string process_time(float outputtype, 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); tmp_days = floor(tmp_hours / 24); - + if(tmp_days) { tmp_hours -= (tmp_days * 24); tmp_weeks = floor(tmp_days / 7); - + if(tmp_weeks) { tmp_days -= (tmp_weeks * 7); @@ -192,8 +251,27 @@ string process_time(float outputtype, float seconds) ((output != "") ? sprintf(", %s", output) : "")); } + return output; + } + case 3: + { + string output = ""; + + output = count_hours(tmp_hours); + + if(tmp_weeks) { tmp_days += (tmp_weeks * 7); } + if(tmp_years) { tmp_days += (tmp_years * 365); } + if(tmp_days) + { + output = sprintf( + "%s%s", + count_days(tmp_days), + ((output != "") ? sprintf(", %s", output) : "")); + } + return output; } } return ""; } +#endif \ No newline at end of file