]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/vehicles/all.qc
Simplify headers
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / vehicles / all.qc
1 #ifndef VEHICLES_ALL_C
2 #define VEHICLES_ALL_C
3
4 #include "all.qh"
5
6 #if defined(SVQC)
7         #include "sv_vehicles.qc"
8 #elif defined(CSQC)
9         #include "cl_vehicles.qc"
10 #endif
11
12 #define IMPLEMENTATION
13 #include "all.inc"
14 #undef IMPLEMENTATION
15
16 // VEHICLE PLUGIN SYSTEM
17 entity vehicle_info[VEH_MAXCOUNT];
18 entity dummy_vehicle_info;
19
20 void vehicles_common_initialize()
21 {
22 #ifdef CSQC
23         precache_model("models/vehicles/bomblet.md3");
24         precache_model("models/vehicles/clusterbomb.md3");
25         precache_model("models/vehicles/clusterbomb_fragment.md3");
26         precache_model("models/vehicles/rocket01.md3");
27         precache_model("models/vehicles/rocket02.md3");
28
29         precache_sound ("vehicles/alarm.wav");
30         precache_sound ("vehicles/alarm_shield.wav");
31 #endif // CSQC
32 #ifdef SVQC
33         precache_sound("onslaught/ons_hit2.wav");
34         precache_sound("onslaught/electricity_explode.wav");
35
36         addstat(STAT_HUD, AS_INT, hud);
37         addstat(STAT_VEHICLESTAT_HEALTH,  AS_INT, vehicle_health);
38         addstat(STAT_VEHICLESTAT_SHIELD,  AS_INT, vehicle_shield);
39         addstat(STAT_VEHICLESTAT_ENERGY,  AS_INT, vehicle_energy);
40
41         addstat(STAT_VEHICLESTAT_W2MODE, AS_INT, vehicle_weapon2mode);
42
43         addstat(STAT_VEHICLESTAT_AMMO1,   AS_INT, vehicle_ammo1);
44         addstat(STAT_VEHICLESTAT_RELOAD1, AS_INT, vehicle_reload1);
45
46         addstat(STAT_VEHICLESTAT_AMMO2,   AS_INT, vehicle_ammo2);
47         addstat(STAT_VEHICLESTAT_RELOAD2, AS_INT, vehicle_reload2);
48 #endif // SVQC
49 }
50
51 void register_vehicle(float id, float(float) func, float vehicleflags, vector min_s, vector max_s, string modelname, string headmodelname, string hudmodelname, string headtag, string hudtag, string viewtag, string shortname, string vname)
52 {
53         entity e;
54         vehicle_info[id - 1] = e = spawn();
55         e.classname = "vehicle_info";
56         e.vehicleid = id;
57         e.netname = shortname;
58         e.vehicle_name = vname;
59         e.vehicle_func = func;
60         e.mdl = modelname;
61         e.spawnflags = vehicleflags;
62         e.mins = min_s;
63         e.maxs = max_s;
64         e.model = modelname;
65         e.head_model = headmodelname;
66         e.hud_model = hudmodelname;
67         e.tag_head = headtag;
68         e.tag_hud = hudtag;
69         e.tag_view = viewtag;
70
71         #ifndef MENUQC
72         vehicles_common_initialize();
73         #endif
74 }
75 float v_null(float dummy) { return 0; }
76 void register_vehicles_done()
77 {
78         dummy_vehicle_info = spawn();
79         dummy_vehicle_info.classname = "vehicle_info";
80         dummy_vehicle_info.vehicleid = 0; // you can recognize dummies by this
81         dummy_vehicle_info.netname = "";
82         dummy_vehicle_info.vehicle_name = "Vehicle";
83         dummy_vehicle_info.vehicle_func = v_null;
84         dummy_vehicle_info.mdl = "";
85         dummy_vehicle_info.mins = '-0 -0 -0';
86         dummy_vehicle_info.maxs = '0 0 0';
87         dummy_vehicle_info.model = "";
88         dummy_vehicle_info.head_model = "";
89         dummy_vehicle_info.hud_model = "";
90 }
91 entity get_vehicleinfo(float id)
92 {
93         entity m;
94         if(id < VEH_FIRST || id > VEH_LAST)
95                 return dummy_vehicle_info;
96         m = vehicle_info[id - 1];
97         if(m)
98                 return m;
99         return dummy_vehicle_info;
100 }
101
102 #endif