7 #define REPLICATE_INIT(type, name) type name
9 #define REPLICATE_INIT(type, name) .type name
23 #define REPLICATE(...) EVAL_REPLICATE(OVERLOAD(REPLICATE, __VA_ARGS__))
24 #define EVAL_REPLICATE(...) __VA_ARGS__
36 #define REPLICATE_APPLYCHANGE(var, ApplyChange_code) \
37 void ReplicateVars_ApplyChange(entity this, entity store, string thisname, int i) \
39 if (thisname == var) \
40 LAMBDA(ApplyChange_code) \
60 #define REPLICATE_3(fld, type, var) REPLICATE_4(fld, type, var, )
61 #define REPLICATE_4(fld, type, var, func) REPLICATE_##type(fld, var, func)
63 #define REPLICATE_string(fld, var, func) \
64 REPLICATE_7(fld, string, var, , \
69 string s = func(this, strcat(field)); \
74 #define REPLICATE_vector(fld, var, func) REPLICATE_7(fld, vector, var, func, field = stov(it), , )
75 #define REPLICATE_float(fld, var, func) REPLICATE_7(fld, float, var, func, field = stof(it), , )
76 #define REPLICATE_bool(fld, var, func) REPLICATE_7(fld, bool, var, func, field = boolean(stoi(it)), , )
77 #define REPLICATE_int(fld, var, func) REPLICATE_7(fld, int, var, func, field = stoi(it), , )
79 #define REPLICATE_7(fld, type, var, func, create, destroy, after) \
80 void ReplicateVars(entity this, entity store, string thisname, int i) \
82 type field = store.fld; \
87 string it = func(argv(i + 1)); \
88 bool current = (thisname == var); \
95 stuffcmd(this, strcat("cl_cmd sendcvar ", var, "\n")); \
102 #define REPLICATE_vector(fld, var, func) REPLICATE_7(fld, vector, var, func, fld != stov(cvar_string(var)), fld = stov(cvar_string(var)), )
103 #define REPLICATE_string(fld, var, func) REPLICATE_7(fld, float, var, func, fld != cvar_string(var), strcpy(fld, cvar_string(var)), strfree(fld))
104 #define REPLICATE_float(fld, var, func) REPLICATE_7(fld, float, var, func, fld != cvar(var), fld = cvar(var), )
105 #define REPLICATE_bool(fld, var, func) REPLICATE_7(fld, bool, var, func, fld != cvar(var), fld = cvar(var), )
106 #define REPLICATE_int(fld, var, func) REPLICATE_7(fld, int, var, func, fld != cvar(var), fld = cvar(var), )
113 #define REPLICATE_7(fld, type, var, func, check, update, destroy) \
114 void ReplicateVars(int mode) \
116 if (mode == REPLICATEVARS_DESTROY) \
118 else if (mode == REPLICATEVARS_SEND_ALL || (check)) \
120 ReplicateVars_Send(var); \
125 #define REPLICATE_SIMPLE(field, cvarname) MACRO_BEGIN \
126 float thecvar = cvar(cvarname); \
127 if (field != thecvar) \
129 ReplicateVars_Send(cvarname); \
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
const int REPLICATEVARS_DESTROY
destroy data associated with cvars (shutdown)
const int REPLICATEVARS_CHECK
check if any cvar has changed and sync it with the server
void ReplicateVars_Start()
void ReplicateVars_Send(string cvarname)
ACCUMULATE void ReplicateVars_ApplyChange(entity this, entity store, string thisname, int i)
noref float ReplicateVars_time
ACCUMULATE void ReplicateVars(entity this, entity store, string thisname, int i)
const int REPLICATEVARS_SEND_ALL
sync all cvars with the server (init)
strcat(_("^F4Countdown stopped!"), "\n^BG", _("Teams are too unbalanced."))