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