X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Futil.qh;h=8abd36ece058ad5aab4e9a8499141a462722833b;hb=cfdec7de4f6fff90a2142be820eaeb43a5f7f572;hp=6d4eb61130b13fd26a75948fb28ff8b2c75d8721;hpb=4b15b999e2716d2ddc35075f75910b330a6cbf5c;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/util.qh b/qcsrc/common/util.qh index 6d4eb6113..8abd36ece 100644 --- a/qcsrc/common/util.qh +++ b/qcsrc/common/util.qh @@ -1,6 +1,11 @@ // a dummy macro that prevents the "hanging ;" warning #define ENDS_WITH_CURLY_BRACE +// TODO make ascii art pic of xzibit +// YO DAWG! +// I HERD YO LIEK MACROS +// SO I PUT A MACRO DEFINITION IN YO MACRO DEFINITION +// SO YO CAN EXPAND MACROS WHILE YO EXPAND MACROS #define ACCUMULATE_FUNCTION(func,otherfunc) \ #ifdef func \ void __merge__##otherfunc() { func(); otherfunc(); } \ @@ -20,9 +25,10 @@ void wordwrap_sprint(string s, float l); #endif void wordwrap_cb(string s, float l, void(string) callback) -float GameCommand_Generic(string cmd); -// returns TRUE if handled, FALSE otherwise -// tokenizes its input! +#ifndef SVQC +string draw_currentSkin; +string draw_UseSkinFor(string pic); +#endif // iterative depth-first search, with fields that go "up", "down left" and "right" in a tree // for each element, funcPre is called first, then funcPre and funcPost for all its children, and funcPost last @@ -73,6 +79,7 @@ string mmssss(float t); string ScoreString(float vflags, float value); +float dotproduct(vector a, vector b); vector cross(vector a, vector b); void compressShortVector_init(); @@ -89,8 +96,8 @@ string swapInPriorityList(string order, float i, float j); float cvar_value_issafe(string s); -void cvar_settemp(string pKey, string pValue); -void cvar_settemp_restore(); +float cvar_settemp(string pKey, string pValue); +float cvar_settemp_restore(); #ifndef MENUQC // modes: 0 = trust q3map2 (_mini images) @@ -162,13 +169,18 @@ vector solve_quadratic(float a, float b, float c); // z = 1 if a real solution exists, 0 if not // if no real solution exists, x contains the real part and y the imaginary part of the complex solutions x+iy and x-iy +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); +#ifdef SVQC string rankings_reply, ladder_reply, lsmaps_reply, lsnewmaps_reply, maplist_reply; // cached replies string records_reply[10]; +#endif float RandomSelection_totalweight; float RandomSelection_best_priority; @@ -277,5 +289,51 @@ float lowestbit(float f); entity ReadCSQCEntity() #endif +#ifndef MENUQC +string strtolower(string s); +#endif + +string MakeConsoleSafe(string input); + +#ifndef MENUQC +float InterpretBoolean(string input); +#endif + // generic shutdown handler void Shutdown(); + +#ifndef MENUQC +.float skeleton_bones; +void Skeleton_SetBones(entity e); +// loops through the tags of model v using counter tagnum +#define FOR_EACH_TAG(v) float tagnum; Skeleton_SetBones(v); for(tagnum = 0; tagnum < v.skeleton_bones; tagnum++, gettaginfo(v, tagnum)) +#endif +#ifdef SVQC +void WriteApproxPastTime(float dst, float t); +#endif +#ifdef CSQC +float ReadApproxPastTime(); +#endif + +// execute-stuff-next-frame subsystem +void execute_next_frame(); +void queue_to_execute_next_frame(string s); + +// for marking written-to values as unused where it's a good idea to do this +noref float unused_float; + +// a function f with: +// f(0) = 0 +// f(1) = 1 +// f'(0) = startspeedfactor +// f'(1) = endspeedfactor +float cubic_speedfunc(float startspeedfactor, float endspeedfactor, float x); + +// checks whether f'(x) = 0 anywhere from 0 to 1 +// because if this is the case, the function is not usable for platforms +// as it may exceed 0..1 bounds, or go in reverse +float cubic_speedfunc_is_sane(float startspeedfactor, float endspeedfactor); + +#ifndef MENUQC +vector W_CalculateSpread(vector forward, float spread, float spreadfactor, float spreadstyle) +#endif