]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/turrets/all.qh
Turrets: prepare for upgrade
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / turrets / all.qh
1 #ifndef TURRETS_ALL_H
2 #define TURRETS_ALL_H
3
4 #include "turret.qh"
5
6 void register_turret(Turret e, bool(Turret, int) func, float turretflags, vector min_s, vector max_s, string modelname, string headmodelname, string shortname, string mname);
7
8 const int TUR_MAXCOUNT = 24;
9 entity turret_info[TUR_MAXCOUNT], turret_info_first, turret_info_last;
10 float TUR_COUNT;
11
12 #define _REGISTER_TURRET(id, func, turretflags, min_s, max_s, modelname, headmodelname, shortname, mname) \
13         bool func(Turret, int); \
14         REGISTER(RegisterTurrets, TUR, turret_info, TUR_COUNT, id, m_id, NEW(Turret)) { \
15                 register_turret(this, func,turretflags,min_s,max_s,modelname,headmodelname,shortname,mname); \
16         }
17 void RegisterTurrets();
18 REGISTER_REGISTRY(RegisterTurrets)
19
20 #define REGISTER_TURRET(...) EVAL(OVERLOAD(REGISTER_TURRET, __VA_ARGS__))
21
22 #define REGISTER_TURRET_2(id, inst) REGISTER(RegisterTurrets, TUR, turret_info, TUR_COUNT, id, m_id, inst)
23
24 #ifdef MENUQC
25 #define REGISTER_TURRET_9(id,func,turretflags,min_s,max_s,modelname,headmodelname,shortname,mname) \
26         _REGISTER_TURRET(id,t_new,turretflags,min_s,max_s,modelname,headmodelname,shortname,mname)
27 #else
28 #define REGISTER_TURRET_9(id,func,turretflags,min_s,max_s,modelname,headmodelname,shortname,mname) \
29         _REGISTER_TURRET(id,func,turretflags,min_s,max_s,modelname,headmodelname,shortname,mname)
30 #endif
31
32 void register_turret(Turret e, bool(Turret, int) func, float turretflags, vector min_s, vector max_s, string modelname, string headmodelname, string shortname, string mname)
33 {
34         e.classname = "turret_info";
35
36         e.turret_func = func;
37         e.spawnflags = turretflags;
38         e.mins = min_s;
39         e.maxs = max_s;
40         e.mdl = modelname;
41         e.model = strzone(strcat("models/turrets/", modelname));
42         e.head_model = strzone(strcat("models/turrets/", headmodelname));
43         e.netname = shortname;
44         e.turret_name = mname;
45 }
46
47 entity get_turretinfo(int id);
48
49 REGISTER_TURRET(Null,
50         t_new,
51         0,
52         '-0 -0 -0',
53         '0 0 0',
54         "",
55         "",
56         "",
57         "Turret"
58 );
59
60 #include "all.inc"
61
62 #endif