Browse Source

added toggle strafe controls

Samir Naik 21 years ago
parent
commit
69fdd9b8a3
1 changed files with 14 additions and 2 deletions
  1. 14 2
      direct/src/controls/BattleWalker.py

+ 14 - 2
direct/src/controls/BattleWalker.py

@@ -2,6 +2,12 @@
 from direct.showbase.ShowBaseGlobal import *
 from direct.showbase.ShowBaseGlobal import *
 import GravityWalker
 import GravityWalker
 
 
+BattleStrafe = 0
+
+def ToggleStrafe():
+    global BattleStrafe
+    BattleStrafe = not BattleStrafe
+
 class BattleWalker(GravityWalker.GravityWalker):
 class BattleWalker(GravityWalker.GravityWalker):
     def __init__(self):
     def __init__(self):
         GravityWalker.GravityWalker.__init__(self)
         GravityWalker.GravityWalker.__init__(self)
@@ -19,9 +25,9 @@ class BattleWalker(GravityWalker.GravityWalker):
         # If targetNp is not available, revert back to GravityWalker.handleAvatarControls.
         # If targetNp is not available, revert back to GravityWalker.handleAvatarControls.
         # This situation occurs when the target dies, but we aren't switched out of
         # This situation occurs when the target dies, but we aren't switched out of
         # battle walker control mode.
         # battle walker control mode.
-
+        
         targetNp = self.avatarNodePath.currentTarget
         targetNp = self.avatarNodePath.currentTarget
-        if targetNp == None or targetNp.isEmpty():
+        if not BattleStrafe or targetNp == None or targetNp.isEmpty():
             return GravityWalker.GravityWalker.handleAvatarControls(self, task)
             return GravityWalker.GravityWalker.handleAvatarControls(self, task)
         
         
         # get the button states:
         # get the button states:
@@ -97,6 +103,12 @@ class BattleWalker(GravityWalker.GravityWalker):
             slideDistance = dt * self.slideSpeed
             slideDistance = dt * self.slideSpeed
             rotation = dt * self.rotationSpeed
             rotation = dt * self.rotationSpeed
 
 
+            # Prevent avatar from getting too close to target
+            d = self.avatarNodePath.getPos(targetNp)
+            if (d[0]*d[0]+d[1]*d[1] < .1):
+                print "toooo close"
+                distance = 0
+
             # Take a step in the direction of our previous heading.
             # Take a step in the direction of our previous heading.
             self.vel=Vec3(Vec3.forward() * distance + 
             self.vel=Vec3(Vec3.forward() * distance + 
                           Vec3.right() * slideDistance)
                           Vec3.right() * slideDistance)