X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Futil.qh;h=efe6d30ec2070e78590f9889cc06e29ca2123716;hb=ba0988ca930f50286f8cf3b6c114ebc6584964af;hp=820f4f5db3fe626400502f4dd78656c402a4aa42;hpb=5d84c659e4c2c51c996b5330fa19c8a24887e42d;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/util.qh b/qcsrc/common/util.qh index 820f4f5db..efe6d30ec 100644 --- a/qcsrc/common/util.qh +++ b/qcsrc/common/util.qh @@ -1,12 +1,46 @@ -#define WANT_CONST -// commonly used, but better make them macros -#define TRUE 1 -#define FALSE 0 - -// a dummy macro that prevents the "hanging ;" warning -#define ENDS_WITH_CURLY_BRACE +#ifndef COMMON_UTIL_H +#define COMMON_UTIL_H + +#if defined(CSQC) + #include "util-pre.qh" + #include "../client/sys-pre.qh" + #include "../dpdefs/csprogsdefs.qc" + #include "../client/sys-post.qh" + #include "../client/Defs.qc" + #include "../dpdefs/keycodes.qc" + #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" +#elif defined(MENUQC) + #include "util-pre.qh" + #include "../menu/sys-pre.qh" + #include "../dpdefs/menudefs.qc" + #include "../dpdefs/keycodes.qc" + #include "../menu/sys-post.qh" + #include "../menu/config.qh" + #include "../warpzonelib/mathlib.qh" +#elif defined(SVQC) + #include "util-pre.qh" + #include "../server/sys-pre.qh" + #include "../dpdefs/progsdefs.qc" + #include "../dpdefs/dpextensions.qc" + #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" +#endif -#ifdef GMQCC +#ifdef QCC_SUPPORT_ACCUMULATE # define ACCUMULATE_FUNCTION(func,otherfunc) \ [[accumulate]] void func() { otherfunc(); } # define CALL_ACCUMULATED_FUNCTION(func) \ @@ -79,7 +113,7 @@ float median(float a, float b, float c); // works for up to 10 decimals! string ftos_decimals(float number, float decimals); -float fexists(string f); +bool fexists(string f); vector colormapPaletteColor(float c, float isPants); @@ -87,29 +121,25 @@ vector colormapPaletteColor(float c, float isPants); string fstrunzone(string s); // database (NOTE: keys are case sensitive) -void db_save(float db, string filename); -void db_dump(float db, string pFilename); -float db_create(); -float db_load(string filename); -void db_close(float db); -string db_get(float db, string key); -void db_put(float db, string key, string value); +void db_save(int db, string filename); +void db_dump(int db, string pFilename); +int db_create(); +int db_load(string filename); +void db_close(int db); +string db_get(int db, string key); +void db_put(int db, string key, string value); // stringbuffer loading/saving -float buf_load(string filename); -void buf_save(float buf, string filename); - -// modulo function -#ifndef MENUQC -float mod(float a, float b) { return a - (floor(a / b) * b); } -#endif +int buf_load(string filename); +void buf_save(int buf, string filename); #define TIME_TO_NTHS(t,n) floor((t) * (n) + 0.4) +string format_time(float seconds); string mmsss(float t); string mmssss(float t); -#define TIME_DECIMALS 2 -#define TIME_FACTOR 100 +const float TIME_DECIMALS = 2; +const float TIME_FACTOR = 100; #define TIME_ENCODED_TOSTRING(n) mmssss(n) #define RACE_RECORD "/race100record/" #define CTS_RECORD "/cts100record/" @@ -209,8 +239,6 @@ vector solve_quadratic(float a, float b, float c); vector solve_shotdirection(vector myorg, vector myvel, vector eorg, vector evel, float spd, float newton_style); vector get_shotvelocity(vector myvel, vector mydir, float spd, float newton_style, float mi, float ma); -void check_unacceptable_compiler_bugs(); - float compressShotOrigin(vector v); vector decompressShotOrigin(float f); @@ -236,7 +264,7 @@ string getcurrentmod(); #ifndef MENUQC #ifdef CSQC -float ReadInt24_t(); +int ReadInt24_t(); vector ReadInt48_t(); vector ReadInt72_t(); #else @@ -247,12 +275,12 @@ void WriteInt72_t(float dest, vector val); #endif // the NULL function -#ifdef GMQCC +#ifdef QCC_SUPPORT_NIL #define func_null nil #define string_null nil #else var void func_null(void); -var string string_null; +string string_null; #endif float float2range11(float f); float float2range01(float f); @@ -273,9 +301,10 @@ float get_model_parameters_species; string get_model_parameters_sex; float get_model_parameters_weight; float get_model_parameters_age; +string get_model_parameters_description; string get_model_parameters_bone_upperbody; string get_model_parameters_bone_weapon; -#define MAX_AIM_BONES 4 +const int MAX_AIM_BONES = 4; string get_model_parameters_bone_aim[MAX_AIM_BONES]; float get_model_parameters_bone_aimweight[MAX_AIM_BONES]; float get_model_parameters_fixbone; @@ -305,9 +334,9 @@ const float XENCODE_LEN = 5; string xencode(float f); float xdecode(string s); -#ifndef COMPAT_XON010_CHANNELS +// Play all sounds via sound7, for access to the extra channels. +// Otherwise, channels 8 to 15 would be blocked for a weird QW feature. #define sound(e,c,s,v,a) sound7(e,c,s,v,a,0,0) -#endif float lowestbit(float f); @@ -364,6 +393,11 @@ typedef entity(entity cur, entity near, entity pass) findNextEntityNearFunction_ typedef float(entity a, entity b, entity pass) isConnectedFunction_t; void FindConnectedComponent(entity e, .entity fld, findNextEntityNearFunction_t nxt, isConnectedFunction_t iscon, entity pass); +#ifdef SVQC +vector combine_to_vector(float x, float y, float z); +vector get_corner_position(entity box, float corner); +#endif + // expand multiple arguments into one argument by stripping parenthesis #define XPD(...) __VA_ARGS__ @@ -373,22 +407,22 @@ void FindConnectedComponent(entity e, .entity fld, findNextEntityNearFunction_t #define fprintf(file, ...) fputs(file, sprintf(__VA_ARGS__)) #define bprintf(...) bprint(sprintf(__VA_ARGS__)) -#ifndef MENUQC +//#ifndef MENUQC void backtrace(string msg); -#endif +//#endif // color code replace, place inside of sprintf and parse the string... defaults described as constants // foreground/normal colors -var string autocvar_hud_colorset_foreground_1 = "2"; // F1 - Green // primary priority (important names, etc) -var string autocvar_hud_colorset_foreground_2 = "3"; // F2 - Yellow // secondary priority (items, locations, numbers, etc) -var string autocvar_hud_colorset_foreground_3 = "4"; // F3 - Blue // tertiary priority or relatively inconsequential text -var string autocvar_hud_colorset_foreground_4 = "1"; // F4 - Red // notice/attention grabbing texting +string autocvar_hud_colorset_foreground_1 = "2"; // F1 - Green // primary priority (important names, etc) +string autocvar_hud_colorset_foreground_2 = "3"; // F2 - Yellow // secondary priority (items, locations, numbers, etc) +string autocvar_hud_colorset_foreground_3 = "4"; // F3 - Blue // tertiary priority or relatively inconsequential text +string autocvar_hud_colorset_foreground_4 = "1"; // F4 - Red // notice/attention grabbing texting // "kill" colors -var string autocvar_hud_colorset_kill_1 = "1"; // K1 - Red // "bad" or "dangerous" text (death messages against you, kill notifications, etc) -var string autocvar_hud_colorset_kill_2 = "3"; // K2 - Yellow // similar to above, but less important... OR, a highlight out of above message type -var string autocvar_hud_colorset_kill_3 = "4"; // K3 - Blue // "good" or "beneficial" text (you fragging someone, etc) +string autocvar_hud_colorset_kill_1 = "1"; // K1 - Red // "bad" or "dangerous" text (death messages against you, kill notifications, etc) +string autocvar_hud_colorset_kill_2 = "3"; // K2 - Yellow // similar to above, but less important... OR, a highlight out of above message type +string autocvar_hud_colorset_kill_3 = "4"; // K3 - Blue // "good" or "beneficial" text (you fragging someone, etc) // background color -var string autocvar_hud_colorset_background = "7"; // BG - White // neutral/unimportant text +string autocvar_hud_colorset_background = "7"; // BG - White // neutral/unimportant text string CCR(string input); @@ -428,16 +462,26 @@ void dedicated_print(string input); #endif #ifndef MENUQC -#define CNT_NORMAL 1 -#define CNT_GAMESTART 2 -#define CNT_IDLE 3 -#define CNT_KILL 4 -#define CNT_RESPAWN 5 -#define CNT_ROUNDSTART 6 +const float CNT_NORMAL = 1; +const float CNT_GAMESTART = 2; +const float CNT_IDLE = 3; +const float CNT_KILL = 4; +const float CNT_RESPAWN = 5; +const float CNT_ROUNDSTART = 6; float Announcer_PickNumber(float type, float num); #endif #ifndef MENUQC -float Mod_Q1BSP_SuperContentsFromNativeContents(float nativecontents); -float Mod_Q1BSP_NativeContentsFromSuperContents(float supercontents); +int Mod_Q1BSP_SuperContentsFromNativeContents(int nativecontents); +int Mod_Q1BSP_NativeContentsFromSuperContents(int supercontents); #endif + +// Quadratic splines (bezier) +vector bezier_quadratic_getpoint(vector a, vector p, vector b, float t); +vector bezier_quadratic_getderivative(vector a, vector p, vector b, float t); + +#define APPEND_TO_STRING(list,sep,add) ((list) = (((list) != "") ? strcat(list, sep, add) : (add))) + +// Returns the correct difference between two always increasing numbers +#define COMPARE_INCREASING(to,from) (to < from ? from + to + 2 : to - from) +#endif \ No newline at end of file