X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fvehicle.qh;h=5b30b845e1a8d67b18d08fddc4970900e01c276c;hp=7df34206fcd2c5b0462bdefe4fbef2f53d3ff2fb;hb=e0012447bfce1b551df3dc01b043655aa93dafad;hpb=c67e77ba36fb8dd44b39722e41943b6671b549ff diff --git a/qcsrc/common/vehicles/vehicle.qh b/qcsrc/common/vehicles/vehicle.qh index 7df34206fc..5b30b845e1 100644 --- a/qcsrc/common/vehicles/vehicle.qh +++ b/qcsrc/common/vehicles/vehicle.qh @@ -1,40 +1,79 @@ -#ifndef VEHICLE_H -#define VEHICLE_H - -int v_null(int) { return 0; } +#pragma once CLASS(Vehicle, Object) - ATTRIB(Vehicle, vehicleid, int, 0) + ATTRIB(Vehicle, vehicleid, int, 0); /** hud icon */ - ATTRIB(Vehicle, m_icon, string, string_null) + ATTRIB(Vehicle, m_icon, string); /** short name */ - ATTRIB(Vehicle, netname, string, "") + ATTRIB(Vehicle, netname, string, ""); /** human readable name */ - ATTRIB(Vehicle, vehicle_name, string, "Vehicle") - /** */ - ATTRIB(Vehicle, vehicle_func, int(int), v_null) + ATTRIB(Vehicle, vehicle_name, string, "Vehicle"); /** full name of model */ - ATTRIB(Vehicle, model, string, "") + ATTRIB(Vehicle, model, string, ""); /** currently a copy of the model */ - ATTRIB(Vehicle, mdl, string, "") + ATTRIB(Vehicle, mdl, string, ""); /** full name of tur_head model */ - ATTRIB(Vehicle, head_model, string, "") + ATTRIB(Vehicle, head_model, string, ""); /** cockpit model */ - ATTRIB(Vehicle, hud_model, string, "") + ATTRIB(Vehicle, hud_model, string, ""); /** tur_head model tag */ - ATTRIB(Vehicle, tag_head, string, string_null) + ATTRIB(Vehicle, tag_head, string); /** hud model tag */ - ATTRIB(Vehicle, tag_hud, string, string_null) + ATTRIB(Vehicle, tag_hud, string); /** cockpit model tag */ - ATTRIB(Vehicle, tag_view, string, string_null) + ATTRIB(Vehicle, tag_view, string); /** player physics mod */ - ATTRIB(Vehicle, PlayerPhysplug, int(), func_null) + ATTRIB(Vehicle, PlayerPhysplug, bool(entity,float)); /** */ - ATTRIB(Vehicle, spawnflags, int, 0) + ATTRIB(Vehicle, spawnflags, int, 0); /** vehicle hitbox size */ - ATTRIB(Vehicle, mins, vector, '-0 -0 -0') + ATTRIB(Vehicle, m_mins, vector, '-0 -0 -0'); /** vehicle hitbox size */ - ATTRIB(Vehicle, maxs, vector, '0 0 0') + ATTRIB(Vehicle, m_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 a player enters this vehicle while occupied */ + METHOD(Vehicle, vr_gunner_enter, void(Vehicle this, entity instance, entity actor)) { } + /** (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)) { } + /** (SERVER) called when a vehicle's colors are being reset, so modules can be updated */ + METHOD(Vehicle, vr_setcolors, 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) -#endif +// vehicle spawn flags (need them here for common registrations) +const int VHF_ISVEHICLE = BIT(1); /// Indicates vehicle +const int VHF_HASSHIELD = BIT(2); /// Vehicle has shileding +const int VHF_SHIELDREGEN = BIT(3); /// Vehicles shield regenerates +const int VHF_HEALTHREGEN = BIT(4); /// Vehicles health regenerates +const int VHF_ENERGYREGEN = BIT(5); /// Vehicles energy regenerates +const int VHF_DEATHEJECT = BIT(6); /// Vehicle ejects pilot upon fatal damage +const int VHF_MOVE_GROUND = BIT(7); /// Vehicle moves on gound +const int VHF_MOVE_HOVER = BIT(8); /// Vehicle hover close to gound +const int VHF_MOVE_FLY = BIT(9); /// Vehicle is airborn +const int VHF_DMGSHAKE = BIT(10); /// Add random velocity each frame if health < 50% +const int VHF_DMGROLL = BIT(11); /// Add random angles each frame if health < 50% +const int VHF_DMGHEADROLL = BIT(12); /// Add random head angles each frame if health < 50% +const int VHF_MULTISLOT = BIT(13); /// Vehicle has multiple player slots +const int VHF_PLAYERSLOT = BIT(14); /// This ent is a player slot on a multi-person vehicle + +// fields: +.entity tur_head;