]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/turrets/turrets.qc
Merge branch 'master' into Mario/turrets
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / turrets / turrets.qc
1 #include "all.qh"
2
3 // TURRET PLUGIN SYSTEM
4 entity turret_info[TUR_MAXCOUNT];
5 entity dummy_turret_info;
6
7 void turrets_common_precache()
8 {
9         precache_sound ("weapons/rocket_impact.wav");
10         precache_model ("models/turrets/base-gib1.md3");
11         precache_model ("models/turrets/base-gib2.md3");
12         precache_model ("models/turrets/base-gib3.md3");
13         precache_model ("models/turrets/base-gib4.md3");
14         precache_model ("models/turrets/head-gib1.md3");
15         precache_model ("models/turrets/head-gib2.md3");
16         precache_model ("models/turrets/head-gib3.md3");
17         precache_model ("models/turrets/head-gib4.md3");
18         precache_model ("models/turrets/terrainbase.md3");
19         precache_model ("models/turrets/base.md3");
20         precache_model ("models/turrets/rocket.md3");
21         
22         precache_model ("models/turrets/c512.md3");
23         precache_model ("models/marker.md3");
24         
25 #ifdef TURRET_DEBUG
26         precache_model ("models/turrets/c512.md3");
27         precache_model ("models/pathlib/goodsquare.md3");
28         precache_model ("models/pathlib/badsquare.md3");
29         precache_model ("models/pathlib/square.md3");
30         precache_model ("models/pathlib/edge.md3");
31 #endif
32 }
33
34 void register_turret(float id, float(float) func, float turretflags, vector min_s, vector max_s, string modelname, string headmodelname, string shortname, string mname)
35 {
36         entity e;
37         turret_info[id - 1] = e = spawn();
38         e.classname = "turret_info";
39         e.turretid = id;
40         e.netname = shortname;
41         e.turret_name = mname;
42         e.turret_func = func;
43         e.mdl = modelname;
44         e.cvar_basename = shortname;
45         e.spawnflags = turretflags;
46         e.mins = min_s;
47         e.maxs = max_s;
48         e.model = strzone(strcat("models/turrets/", modelname));
49         e.head_model = strzone(strcat("models/turrets/", headmodelname));
50         
51         #ifndef MENUQC
52         turrets_common_precache();
53         func(TR_PRECACHE);
54         #endif
55 }
56 float t_null(float dummy) { return 0; }
57 void register_turrets_done()
58 {
59         dummy_turret_info = spawn();
60         dummy_turret_info.classname = "turret_info";
61         dummy_turret_info.turretid = 0; // you can recognize dummies by this
62         dummy_turret_info.netname = "";
63         dummy_turret_info.turret_name = "Turret";
64         dummy_turret_info.turret_func = t_null;
65         dummy_turret_info.mdl = "";
66         dummy_turret_info.mins = '-0 -0 -0';
67         dummy_turret_info.maxs = '0 0 0';
68         dummy_turret_info.model = "";
69 }
70 entity get_turretinfo(float id)
71 {
72         entity m;
73         if(id < TUR_FIRST || id > TUR_LAST)
74                 return dummy_turret_info;
75         m = turret_info[id - 1];
76         if(m)
77                 return m;
78         return dummy_turret_info;
79 }