]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/util.qh
sv_maxidle: remove disabled announcer countdown
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / util.qh
index 6e9b31a74f394a3ca38cab1e74ebf807078bc3c3..63fd27839d15ee0617d873c3f55f6758408173f1 100644 (file)
@@ -1,12 +1,29 @@
 #pragma once
 
+#ifdef SVQC
+float tracebox_inverted (vector v1, vector mi, vector ma, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity); // returns the number of traces done, for benchmarking
+
+void traceline_inverted (vector v1, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity);
+#endif
+
 #ifdef GAMEQC
+/*
+==================
+findbetterlocation
+
+Returns a point at least 12 units away from walls
+(useful for explosion animations, although the blast is performed where it really happened)
+Ripped from DPMod
+==================
+*/
+vector findbetterlocation (vector org, float mindist);
+
 vector real_origin(entity ent);
 #endif
 
 #ifdef SVQC
-// temporary array used to dump weapon and turret settings
-const int MAX_CONFIG_SETTINGS = 256;
+// temporary array used to dump settings for each weapon / turret
+const int MAX_CONFIG_SETTINGS = 70;
 string config_queue[MAX_CONFIG_SETTINGS];
 #endif
 
@@ -33,9 +50,7 @@ string draw_UseSkinFor(string pic);
 // for each element, funcPre is called first, then funcPre and funcPost for all its children, and funcPost last
 void depthfirst(entity start, .entity up, .entity downleft, .entity right, void(entity, entity) funcPre, void(entity, entity) funcPost, entity pass);
 
-// adding just 0.4 for race times so it rounds down in the .5 case (matching the timer display)
-// FIXME it doesn't round properly
-#define TIME_TO_NTHS(t,n) floor((t) * (n) + 0.4)
+#define TIME_TO_NTHS(t,n) floor((t) * (n) + 0.5)
 
 const int TIME_DECIMALS = 2;
 const float TIME_FACTOR = 100;
@@ -116,6 +131,8 @@ string getcurrentmod();
 
 float matchacl(string acl, string str); // matches str against ACL acl (with entries +foo*, +foo, +*foo, +*foo*, and same with - for forbidding)
 
+void write_String_To_File(int fh, string str, bool alsoprint);
+
 string get_model_datafilename(string mod, float skn, string fil); // skin -1 will return wildcard, mod string_null will also put wildcard there
 string get_model_parameters_modelname;
 float get_model_parameters_modelskin;
@@ -135,6 +152,9 @@ float get_model_parameters_fixbone;
 string get_model_parameters_desc;
 float get_model_parameters(string mod, float skn); // call with string_null to clear; skin -1 means mod is the filename of the txt file and is to be split
 
+ERASEABLE
+string translate_key(string key);
+
 // x-encoding (encoding as zero length invisible string)
 // encodes approx. 14 bits into 5 bytes of color code string
 const float XENCODE_MAX = 21295; // 2*22*22*22-1
@@ -173,11 +193,14 @@ void FindConnectedComponent(entity e, .entity fld, findNextEntityNearFunction_t
 
 #ifdef GAMEQC
        #ifdef CSQC
+               bool autocvar_cl_gentle;
+               int autocvar_cl_gentle_messages;
                #define GENTLE (autocvar_cl_gentle || autocvar_cl_gentle_messages)
        #else
+               int autocvar_sv_gentle;
                #define GENTLE autocvar_sv_gentle
        #endif
-       #define normal_or_gentle(normal, gentle) (GENTLE ? ((gentle != "") ? gentle : normal) : normal)
+       #define normal_or_gentle(normal, gentle) ((GENTLE && (gentle != "")) ? gentle : normal)
 #endif
 
 #ifdef GAMEQC
@@ -187,7 +210,7 @@ vector animfixfps(entity e, vector a, vector b);
 #ifdef GAMEQC
 const int CNT_NORMAL = 1;
 const int CNT_GAMESTART = 2;
-const int CNT_IDLE = 3;
+//const int CNT_IDLE = 3;
 const int CNT_KILL = 4;
 const int CNT_RESPAWN = 5;
 const int CNT_ROUNDSTART = 6;
@@ -203,3 +226,31 @@ int Mod_Q1BSP_NativeContentsFromSuperContents(int supercontents);
 
 // Returns the correct difference between two always increasing numbers
 #define COMPARE_INCREASING(to,from) (to < from ? from + to + 2 : to - from)
+
+#ifdef SVQC
+void attach_sameorigin(entity e, entity to, string tag);
+void detach_sameorigin(entity e);
+void follow_sameorigin(entity e, entity to);
+
+void SetMovetypeFollow(entity ent, entity e);
+void UnsetMovetypeFollow(entity ent);
+int LostMovetypeFollow(entity ent);
+#endif
+
+#ifdef GAMEQC
+string playername(string thename, int teamid, bool team_colorize);
+
+float trace_hits_box_1d(float end, float thmi, float thma);
+
+float trace_hits_box(vector start, vector end, vector thmi, vector thma);
+
+float tracebox_hits_box(vector start, vector mi, vector ma, vector end, vector thmi, vector thma);
+
+float tracebox_hits_box(vector start, vector mi, vector ma, vector end, vector thmi, vector thma);
+#endif
+
+float cvar_or(string cv, float v);
+
+float blink_synced(float base, float range, float freq, float start_time, int start_blink);
+
+float blink(float base, float range, float freq);