]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
pre-merge
authorJakob MG <jakob_mg@hotmail.com>
Sun, 19 Jun 2011 22:03:44 +0000 (00:03 +0200)
committerJakob MG <jakob_mg@hotmail.com>
Sun, 19 Jun 2011 22:03:44 +0000 (00:03 +0200)
qcsrc/client/damage.qc
qcsrc/client/tturrets.qc
qcsrc/server/tturrets/system/system_main.qc
qcsrc/server/tturrets/units/unit_ewheel.qc

index f6e35ea6a3345bc337d7f8a7e358102120f27af1..7c750db748a6af063584789d734bd2cb4c4511a0 100644 (file)
@@ -70,7 +70,6 @@ void Ent_DamageInfo(float isNew)
 
        self = oldself;
        
-       // TODO spawn particle effects and sounds based on w_deathtype
        if(DEATH_ISTURRET(w_deathtype))
        {           
            traceline(w_org - normalize(force) * 16, w_org + normalize(force) * 16, MOVE_NOMONSTERS, world);
@@ -137,6 +136,7 @@ void Ent_DamageInfo(float isNew)
         }        
        }
        
+       // TODO spawn particle effects and sounds based on w_deathtype
        if(!DEATH_ISSPECIAL(w_deathtype))
        {
                float hitwep;
index 2f09a2601a2f9cd2f0adac9274aebd8dc8cd3273..0202fe82aeea255806ef0aebf76edcb44b14ae05 100644 (file)
@@ -155,7 +155,7 @@ void turret_draw()
 }
 
 
-void turret_moving_draw()
+void turret_walker_draw()
 {        
     float dt;
             
@@ -168,13 +168,38 @@ void turret_moving_draw()
     movelib_groundalign4point(300, 100, 0.25);
     
     setorigin(self, self.origin + self.velocity * dt);
-    if(self.turret_type == TID_WALKER)
-        setorigin(self.tur_head, gettaginfo(self, gettagindex(self, "tag_head")));
-    else
-        setorigin(self.tur_head, self.origin);
+    setorigin(self.tur_head, gettaginfo(self, gettagindex(self, "tag_head")));
+    
+    self.tur_head.angles += dt * self.tur_head.move_avelocity;
+    
+    self.angles_y = self.move_angles_y;
+    
+    if (self.health < 127)
+    if(random() < 0.25)
+        te_spark(self.origin + '0 0 40', randomvec() * 256 + '0 0 256', 16);    
+}
+
+void turret_ewheel_draw()
+{        
+    float dt;
+            
+    dt = time - self.move_time;
+    self.move_time = time;
+    if(dt <= 0)
+        return;
+    
+    fixedmakevectors(self.angles);
+    movelib_groundalign4point(300, 100, 0.25);
+    
+    setorigin(self, self.origin + self.velocity * dt);
+    setorigin(self.tur_head, self.origin);
     
     self.tur_head.angles += dt * self.tur_head.move_avelocity;
     
+    // Simulate banking
+    self.angles_z -= self.angles_z * dt * 2;
+    self.angles_z = bound(-45, self.angles_z  + ((self.move_angles_y - self.angles_y * -25) * dt), 45);
+    
     self.angles_y = self.move_angles_y;
     
     if (self.health < 127)
@@ -218,8 +243,16 @@ void turret_construct()
         self.movetype           = MOVETYPE_BOUNCE;
         self.move_movetype      = MOVETYPE_BOUNCE;
         self.move_origin        = self.origin;                
-        self.move_time          = time;        
-        self.draw               = turret_moving_draw;
+        self.move_time          = time;
+        switch(self.turret_type)
+        {
+            case TID_EWHEEL:
+                self.draw               = turret_ewheel_draw;
+                break;
+            case TID_WALKER:
+                self.draw               = turret_walker_draw;
+        }
+        
     }
 }
 
index 8662d51ed48adb93f7f76498e461209fa9aea916..73125cfe4aa18b228270aabbceb6d7014b4b1b11 100644 (file)
@@ -284,7 +284,9 @@ void turret_stdproc_track()
     self.tur_head.angles_y = anglemods(self.tur_head.angles_y);
 
     // Find the diffrence between where we currently aim and where we want to aim
-    move_angle = target_angle - (self.angles + self.tur_head.angles);
+    //move_angle = target_angle - (self.angles + self.tur_head.angles);
+    move_angle = AnglesTransform_ToAngles(AnglesTransform_LeftDivide(AnglesTransform_FromAngles(self.angles), AnglesTransform_FromAngles(target_angle))) - self.tur_head.angles;
     move_angle = shortangle_vxy(move_angle,(self.angles + self.tur_head.angles));
 
     switch(self.track_type)
index 5e737c4ef81feb55eff1b4dfc16ab05f8558cc82..fb5007c5799f7270b7ca1b84761956b1a9406665 100644 (file)
@@ -4,19 +4,6 @@
 #define ewheel_amin_bck_slow 3
 #define ewheel_amin_bck_fast 4
 
-float ewheel_speed_fast;
-float ewheel_speed_slow;
-float ewheel_speed_slower;
-float ewheel_speed_stop;
-
-void turret_ewheel_loadcvars()
-{
-    ewheel_speed_fast   = autocvar_g_turrets_unit_ewheel_speed_fast;
-    ewheel_speed_slow   = autocvar_g_turrets_unit_ewheel_speed_slow;
-    ewheel_speed_slower = autocvar_g_turrets_unit_ewheel_speed_slower;
-    ewheel_speed_stop   = autocvar_g_turrets_unit_ewheel_speed_stop;
-}
-
 void turret_ewheel_projectile_explode()
 {
 #ifdef TURRET_DEBUG
@@ -107,7 +94,7 @@ void ewheel_move_path()
         self.moveto = self.pathcurrent.origin;
         self.steerto = steerlib_attract2(self.moveto, 0.5, 500, 0.95);
 
-        movelib_move_simple(v_forward, ewheel_speed_fast, 0.4);
+        movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_fast, 0.4);
 
         return;
     }
@@ -129,29 +116,29 @@ void  ewheel_move_enemy()
         if ( self.tur_head.spawnshieldtime < 1 )
         {
             newframe = ewheel_amin_fwd_fast;
-            movelib_move_simple(v_forward, ewheel_speed_fast, 0.4);
+            movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_fast, 0.4);
         }
         else if (self.tur_head.spawnshieldtime < 2)
         {
 
             newframe = ewheel_amin_fwd_slow;
-            movelib_move_simple(v_forward, ewheel_speed_slow, 0.4);
+            movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_slow, 0.4);
        }
         else
         {
             newframe = ewheel_amin_fwd_slow;
-            movelib_move_simple(v_forward, ewheel_speed_slower, 0.4);
+            movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_slower, 0.4);
         }
     }
     else if (self.tur_dist_enemy < self.target_range_optimal * 0.5)
     {
         newframe = ewheel_amin_bck_slow;
-        movelib_move_simple(v_forward * -1, ewheel_speed_slow, 0.4);
+        movelib_move_simple(v_forward * -1, autocvar_g_turrets_unit_ewheel_speed_slow, 0.4);
     }
     else
     {
         newframe = ewheel_amin_stop;
-        movelib_beak_simple(ewheel_speed_stop);
+        movelib_beak_simple(autocvar_g_turrets_unit_ewheel_speed_stop);
     }
     
     if(self.frame != newframe)
@@ -173,43 +160,30 @@ void ewheel_move_idle()
 
     self.frame = 0;
     if (vlen(self.velocity))
-        movelib_beak_simple(ewheel_speed_stop);
+        movelib_beak_simple(autocvar_g_turrets_unit_ewheel_speed_stop);
 }
 
 void ewheel_postthink()
 {
     float vz;
-    vector wish_angle,real_angle;
-
-    /*
-    if(self.enemy)
-        dprint("enemy!\n");
-    else
-        dprint("nothign =(!\n");
-    */
+    vector wish_angle, real_angle;
 
     vz = self.velocity_z;
 
     self.angles_x = anglemods(self.angles_x);
     self.angles_y = anglemods(self.angles_y);
 
-    //self.angles_x *= -1;
     fixedmakevectors(self.angles);
-    //self.angles_x *= -1;
 
     wish_angle = normalize(self.steerto);
     wish_angle = vectoangles(wish_angle);
     real_angle = wish_angle - self.angles;
-    real_angle = shortangle_vxy(real_angle,self.tur_head.angles);
+    real_angle = shortangle_vxy(real_angle, self.tur_head.angles);
 
     self.tur_head.spawnshieldtime = fabs(real_angle_y);
-    real_angle_y  = bound(-self.tur_head.aim_speed,real_angle_y,self.tur_head.aim_speed);
+    real_angle_y  = bound(-self.tur_head.aim_speed, real_angle_y, self.tur_head.aim_speed);
     self.angles_y = (self.angles_y + real_angle_y);
 
-    // Simulate banking
-    self.angles_z -= self.angles_z * frametime * 2;
-    self.angles_z = bound(-45,self.angles_z  + ((real_angle_y * -25) * frametime),45);
-
     if(self.enemy)
         ewheel_move_enemy();
     else if(self.pathcurrent)
@@ -229,7 +203,7 @@ void ewheel_respawnhook()
     entity e;
 
     // Respawn is called & first spawn to, to set team. need to make sure we do not move the initial spawn.
-    if(self.movetype  != MOVETYPE_WALK)
+    if(self.movetype != MOVETYPE_WALK)
                return;
                
     self.velocity = '0 0 0';
@@ -260,8 +234,6 @@ void ewheel_diehook()
 {
     self.velocity = '0 0 0';
 
-    //turret_trowgib2(self.origin, self.velocity + '0 0 400', '-0.6 -0.2 -02', self, 3 + time + random() * 2);
-
     if (self.pathcurrent)
         pathlib_deletepath(self.pathcurrent.owner);
 
@@ -272,7 +244,8 @@ void turret_ewheel_dinit()
 {
     entity e;
 
-    if (self.netname == "")      self.netname     = "eWheel Turret";
+    if (self.netname == "")      
+        self.netname     = "eWheel Turret";
 
     if (self.target != "")
     {
@@ -352,12 +325,6 @@ void spawnfunc_turret_ewheel()
     precache_model ("models/turrets/ewheel-base2.md3");
     precache_model ("models/turrets/ewheel-gun1.md3");
 
-    precache_model ("models/pathlib/goodsquare.md3");
-    precache_model ("models/pathlib/badsquare.md3");
-    precache_model ("models/pathlib/square.md3");
-
-    turret_ewheel_loadcvars();
-
     self.think = turret_ewheel_dinit;
     self.nextthink = time + 0.5;
 }