#ifndef VEHICLE_H
#define VEHICLE_H
-int v_null(int) { return 0; }
-
CLASS(Vehicle, Object)
ATTRIB(Vehicle, vehicleid, int, 0)
/** hud icon */
ATTRIB(Vehicle, netname, string, "")
/** human readable name */
ATTRIB(Vehicle, vehicle_name, string, "Vehicle")
- /** */
- ATTRIB(Vehicle, vehicle_func, int(int), v_null)
/** full name of model */
ATTRIB(Vehicle, model, string, "")
/** currently a copy of the model */
/** cockpit model tag */
ATTRIB(Vehicle, tag_view, string, string_null)
/** player physics mod */
- ATTRIB(Vehicle, PlayerPhysplug, int(), func_null)
+ ATTRIB(Vehicle, PlayerPhysplug, bool(entity), func_null)
/** */
ATTRIB(Vehicle, spawnflags, int, 0)
/** vehicle hitbox size */
ATTRIB(Vehicle, mins, vector, '-0 -0 -0')
/** vehicle hitbox size */
ATTRIB(Vehicle, maxs, vector, '0 0 0')
+ /** vehicle 3rd person view offset */
+ ATTRIB(Vehicle, view_ofs, vector, '0 0 0')
+ /** vehicle 3rd person view distance */
+ ATTRIB(Vehicle, height, float, 0)
+
+ /** (BOTH) setup vehicle data */
+ METHOD(Vehicle, vr_setup, void(Vehicle this, entity instance)) { }
+ /** (SERVER) logic to run every frame */
+ METHOD(Vehicle, vr_think, void(Vehicle this, entity instance)) { }
+ /** (SERVER) called when vehicle dies */
+ METHOD(Vehicle, vr_death, void(Vehicle this, entity instance)) { }
+ /** (BOTH) precaches models/sounds used by this vehicle */
+ METHOD(Vehicle, vr_precache, void(Vehicle this)) { }
+ /** (SERVER) called when a player enters this vehicle */
+ METHOD(Vehicle, vr_enter, void(Vehicle this, entity instance)) { }
+ /** (SERVER) called when the vehicle re-spawns */
+ METHOD(Vehicle, vr_spawn, void(Vehicle this, entity instance)) { }
+ /** (SERVER) called when a vehicle hits something */
+ METHOD(Vehicle, vr_impact, void(Vehicle this, entity instance)) { }
+ /** (CLIENT) logic to run every frame */
+ METHOD(Vehicle, vr_hud, void(Vehicle this)) { }
+ /** (CLIENT) logic to run every frame */
+ METHOD(Vehicle, vr_crosshair, void(Vehicle thisveh, entity player)) { }
ENDCLASS(Vehicle)
+// vehicle spawn flags (need them here for common registrations)
+const int VHF_ISVEHICLE = 2; /// Indicates vehicle
+const int VHF_HASSHIELD = 4; /// Vehicle has shileding
+const int VHF_SHIELDREGEN = 8; /// Vehicles shield regenerates
+const int VHF_HEALTHREGEN = 16; /// Vehicles health regenerates
+const int VHF_ENERGYREGEN = 32; /// Vehicles energy regenerates
+const int VHF_DEATHEJECT = 64; /// Vehicle ejects pilot upon fatal damage
+const int VHF_MOVE_GROUND = 128; /// Vehicle moves on gound
+const int VHF_MOVE_HOVER = 256; /// Vehicle hover close to gound
+const int VHF_MOVE_FLY = 512; /// Vehicle is airborn
+const int VHF_DMGSHAKE = 1024; /// Add random velocity each frame if health < 50%
+const int VHF_DMGROLL = 2048; /// Add random angles each frame if health < 50%
+const int VHF_DMGHEADROLL = 4096; /// Add random head angles each frame if health < 50%
+const int VHF_MULTISLOT = 8192; /// Vehicle has multiple player slots
+const int VHF_PLAYERSLOT = 16384; /// This ent is a player slot on a multi-person vehicle
+
+// fields:
+.entity tur_head;
+
#endif