-#ifndef COMMON_UTIL_H
-#define COMMON_UTIL_H
+#pragma once
+
+#ifdef GAMEQC
-#ifndef MENUQC
vector real_origin(entity ent);
#endif
+IntrusiveList g_saved_cvars;
+STATIC_INIT(g_saved_cvars) { g_saved_cvars = IL_NEW(); }
+
// this returns a tempstring containing a copy of s with additional \n newlines added, it also replaces \n in the text with a real newline
// NOTE: s IS allowed to be a tempstring
string wordwrap(string s, float l);
-#ifndef MENUQC
-#ifndef CSQC
-void wordwrap_sprint(string s, float l);
-#endif
+#ifdef SVQC
+void wordwrap_sprint(entity to, string s, float l);
#endif
void wordwrap_cb(string s, float l, void(string) callback);
string ScoreString(float vflags, float value);
-void compressShortVector_init();
vector decompressShortVector(float data);
float compressShortVector(vector vec);
-#ifndef MENUQC
+#ifdef GAMEQC
float CheckWireframeBox(entity forent, vector v0, vector dvx, vector dvy, vector dvz);
#endif
float cvar_settemp(string pKey, string pValue);
float cvar_settemp_restore();
-#ifndef MENUQC
+#ifdef GAMEQC
// modes: 0 = trust q3map2 (_mini images)
// 1 = trust tracebox (_radar images)
// in both modes, mapinfo's "size" overrides
float almost_in_bounds(float a, float b, float c);
float power2of(float e);
-float log2of(float x);
+float log2of(float e);
vector rgb_to_hsl(vector rgb);
vector hsl_to_rgb(vector hsl);
string getWrappedLine(float w, vector size, textLengthUpToWidth_widthFunction_t tw);
string getWrappedLineLen(float w, textLengthUpToLength_lenFunction_t tw);
-float isGametypeInFilter(float gt, float tp, float ts, string pattern);
+float isGametypeInFilter(entity gt, float tp, float ts, string pattern);
string swapwords(string str, float i, float j);
string shufflewords(string str);
string records_reply[10];
#endif
-#ifndef MENUQC
+#ifdef GAMEQC
vector healtharmor_maxdamage(float h, float a, float armorblock, int deathtype); // returns vector: maxdamage, armorideal, 1 if fully armored
vector healtharmor_applydamage(float a, float armorblock, int deathtype, float damage); // returns vector: take, save, 0
#endif
string getcurrentmod();
-#ifndef MENUQC
+#ifdef GAMEQC
#ifdef CSQC
int ReadInt24_t();
#else
string get_model_parameters_sex;
float get_model_parameters_weight;
float get_model_parameters_age;
+bool get_model_parameters_hidden;
string get_model_parameters_description;
string get_model_parameters_bone_upperbody;
string get_model_parameters_bone_weapon;
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
-#ifndef MENUQC
+#ifdef GAMEQC
vector NearestPointOnBox(entity box, vector org);
#endif
string xencode(float f);
float xdecode(string s);
-#ifndef MENUQC
+#ifdef GAMEQC
string strtolower(string s);
#endif
// generic shutdown handler
void Shutdown();
-#ifndef MENUQC
+#ifdef GAMEQC
.float skeleton_bones;
void Skeleton_SetBones(entity e);
// loops through the tags of model v using counter tagnum
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);
+float cubic_speedfunc(float startspeedfactor, float endspeedfactor, float spd);
// checks whether f'(x) = 0 anywhere from 0 to 1
// because if this is the case, the function is not usable for platforms
string CCR(string input);
-#ifndef MENUQC
+#ifdef GAMEQC
#ifdef CSQC
#define GENTLE (autocvar_cl_gentle || autocvar_cl_gentle_messages)
#else
#define normal_or_gentle(normal, gentle) (GENTLE ? ((gentle != "") ? gentle : normal) : normal)
#endif
-#ifndef MENUQC
+#ifdef GAMEQC
vector animfixfps(entity e, vector a, vector b);
#endif
-#ifndef MENUQC
+#ifdef GAMEQC
const float CNT_NORMAL = 1;
const float CNT_GAMESTART = 2;
const float CNT_IDLE = 3;
entity Announcer_PickNumber(float type, float num);
#endif
-#ifndef MENUQC
+#ifdef GAMEQC
int Mod_Q1BSP_SuperContentsFromNativeContents(int nativecontents);
int Mod_Q1BSP_NativeContentsFromSuperContents(int supercontents);
#endif
// Returns the correct difference between two always increasing numbers
#define COMPARE_INCREASING(to,from) (to < from ? from + to + 2 : to - from)
-#endif