]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/turrets/sv_turrets.qh
Turrets: read cvars and define associated fields using TR_PROPS_COMMON
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / turrets / sv_turrets.qh
index 8bba1c4a4a6e39ff3fcd11596b3224ec5aace3a9..8273e54dd1ba31b289a6a39240f8148147f66362 100644 (file)
@@ -1,9 +1,24 @@
-#ifndef SV_TURRETS_H
-#define SV_TURRETS_H
+#pragma once
+
+#include <server/miscfunctions.qh>
+
+entity turret_projectile(entity actor, Sound _snd, float _size, float _health, float _death, float _proj_type, float _cull, float _cli_anim);
+void turret_projectile_explode(entity this);
+float turret_validate_target(entity e_turret, entity e_target, float validate_flags);
+bool turret_firecheck(entity this);
+entity turret_select_target(entity this);
 
 // turret fields
+
+#define X(class, prefix, fld, type) .type fld;
+TR_PROPS_COMMON(X, , )
+#undef X
+/*
+.float shot_volly; // smaller than 1 = shoot # times at target
+.float shot_volly_refire; // refire after completed volly
+*/
+
 .float ticrate; // interal ai think rate
-.vector aim_idle; // where to aim while idle
 .entity tur_head; // top part of the turret
 .entity tur_defend; // defend this entity
 .vector tur_shotorg; // shot origin
 .float tur_dist_impact_to_aimpos; // distance impact<->aim
 .float volly_counter; // decrement counter from .shot_volly to 0
 
-.float shot_refire; // attack refire
-.float shot_speed; // projectile speed
-.float shot_spread; // inaccuracy
-.float shot_dmg; // core damage of projectile
-.float shot_radius; // projectile damage radius
-.float shot_force; // projectile damage force
-.float shot_volly; // smaller than 1 = shoot # times at target
-.float shot_volly_refire; // refire after completed volly
-
-.float target_range;
-.float target_range_min;
-.float target_range_optimal;
-
-.float target_select_rangebias;
-.float target_select_samebias;
-.float target_select_anglebias;
-.float target_select_missilebias;
-.float target_select_playerbias;
 .float target_select_time; // last time turret had a valid target
 .float target_validate_time; // throttle re-validation of current target
 
-.float aim_firetolerance_dist;
-.float aim_speed;
-.float aim_maxpitch;
-.float aim_maxrotate;
 
 .float ammo; // current ammo
-.float ammo_recharge; // recharge rate
-.float ammo_max; // maximum ammo
-
 .vector idle_aim;
 
 /// Map time control over pain inflicted
 .float turret_scale_respawn;
 
 // tracking type
-.float track_type;
 const float TFL_TRACKTYPE_STEPMOTOR = 1; // hard angle increments, ugly for fast turning with best accuracy
 const float TFL_TRACKTYPE_FLUIDPRECISE = 2; // smooth absolute movement, looks OK with fair accuracy
 const float TFL_TRACKTYPE_FLUIDINERTIA = 3; // simulated inertia ("wobbly" mode), worst accuracy, depends on below flags
-.float track_accel_pitch;
-.float track_accel_rotate;
-.float track_blendrate;
 
-void() turret_respawn;
+void turret_respawn(entity this);
 
 /// updates aim org, shot org, shot dir and enemy org for selected turret
 void turret_do_updates(entity e_turret);
 .vector tur_shotdir_updated;
 
-.float() turret_firecheckfunc; // TODO: deprecate!
+.float(entity this) turret_firecheckfunc; // TODO: deprecate!
+
+void turrets_setframe(entity this, float _frame, float client_only);
 
-void turrets_setframe(float _frame, float client_only);
+bool turret_initialize(entity this, Turret tur);
 
-float turret_initialize(float tur_id);
+// returns true when box overlaps with a given location
+bool turret_closetotarget(entity this, vector targ);
 
 /// Function to use for target evaluation. usualy turret_targetscore_generic
 .float(entity _turret, entity _target) turret_score_target;
 
-.float(entity e_target,entity e_sender) turret_addtarget;
+.bool(entity this, entity e_target,entity e_sender) turret_addtarget;
 
 .entity pathcurrent;
 
+.entity pathgoal;
+
 float turret_count;
 
 // debugging
@@ -113,5 +104,3 @@ vector tvt_tadv; // turret angle diff vector, updated by a successful call to tu
 float tvt_thadf; // turret head angle diff float, updated by a successful call to turret_validate_target
 float tvt_tadf; // turret angle diff float, updated by a successful call to turret_validate_target
 float tvt_dist; // turret distance, updated by a successful call to turret_validate_target
-
-#endif