Browse Source

- More change for Ship Speed System

Jason Yeung 16 years ago
parent
commit
f82f695e2e
1 changed files with 23 additions and 14 deletions
  1. 23 14
      direct/src/controls/ShipPilot.py

+ 23 - 14
direct/src/controls/ShipPilot.py

@@ -27,8 +27,8 @@ class ShipPilot(PhysicsWalker):
     wantDebugIndicator = base.config.GetBool(
     wantDebugIndicator = base.config.GetBool(
         'want-avatar-physics-indicator', 0)
         'want-avatar-physics-indicator', 0)
     
     
-    MAX_STRAIGHT_SAIL_BONUS = 1.5     # 1.25 Old
-    STRAIGHT_SAIL_BONUS_TIME = 16.0
+    MAX_STRAIGHT_SAIL_BONUS = 2.1     # 1.25 Old
+    STRAIGHT_SAIL_BONUS_TIME = 18.0
     TURNING_BONUS_REDUCTION = 3.0
     TURNING_BONUS_REDUCTION = 3.0
     
     
     # special methods
     # special methods
@@ -382,9 +382,12 @@ class ShipPilot(PhysicsWalker):
         if reverse:
         if reverse:
             # Reverse kills Travel Speed totally
             # Reverse kills Travel Speed totally
             self.straightHeading = 0
             self.straightHeading = 0
-        elif self.ship.threatCounter:
+        elif (self.__speed < (self.ship.acceleration + self.ship.speedboost) * self.ship.speednerf) and forward:
+            # If not at MinSpeed, Accelerate regardless
+            self.straightHeading += dt * 1.5
+        elif self.ship.threatCounter:            
             # If ship is recently damaged, do not increase Travel Speed
             # If ship is recently damaged, do not increase Travel Speed
-            pass
+            self.straightHeading = min(1.0 / self.MAX_STRAIGHT_SAIL_BONUS * self.STRAIGHT_SAIL_BONUS_TIME * self.ship.speednerf, self.straightHeading)           
         elif turnLeft or turnRight or not forward:
         elif turnLeft or turnRight or not forward:
             # Reset Straight Sailing Bonus
             # Reset Straight Sailing Bonus
             self.straightHeading -= dt * self.TURNING_BONUS_REDUCTION
             self.straightHeading -= dt * self.TURNING_BONUS_REDUCTION
@@ -395,12 +398,9 @@ class ShipPilot(PhysicsWalker):
         
         
         # Straight Sailing Acceleration Bonus
         # Straight Sailing Acceleration Bonus
         straightSailBonus = 0.0
         straightSailBonus = 0.0
-        #if self.straightHeading > self.STRAIGHT_SAIL_BONUS_TIME * 0.333:
-        #    straightSailBonus = (self.straightHeading - (self.STRAIGHT_SAIL_BONUS_TIME * 0.333)) / self.STRAIGHT_SAIL_BONUS_TIME * 0.666
         straightSailBonus = self.straightHeading / self.STRAIGHT_SAIL_BONUS_TIME
         straightSailBonus = self.straightHeading / self.STRAIGHT_SAIL_BONUS_TIME
         straightSailBonus = min(self.MAX_STRAIGHT_SAIL_BONUS, straightSailBonus * self.MAX_STRAIGHT_SAIL_BONUS)
         straightSailBonus = min(self.MAX_STRAIGHT_SAIL_BONUS, straightSailBonus * self.MAX_STRAIGHT_SAIL_BONUS)
-        straightSailBonus += 1.0
-
+        
         self.__speed=(forward and self.ship.acceleration) or \
         self.__speed=(forward and self.ship.acceleration) or \
                       (reverse and -self.ship.reverseAcceleration)
                       (reverse and -self.ship.reverseAcceleration)
         
         
@@ -416,11 +416,11 @@ class ShipPilot(PhysicsWalker):
                 (turnRight and -self.ship.turnRate))
                 (turnRight and -self.ship.turnRate))
         
         
         # Add in Straight Sailing Multiplier
         # Add in Straight Sailing Multiplier
-        self.__speed *= straightSailBonus
+        self.__speed *= straightSailBonus 
         self.__speed += self.ship.speedboost
         self.__speed += self.ship.speedboost
-        # self.__speed *= straightSailBonus
         self.__slideSpeed *= straightSailBonus
         self.__slideSpeed *= straightSailBonus
         maxSpeed = self.ship.maxSpeed
         maxSpeed = self.ship.maxSpeed
+        self.__speed *= self.ship.speednerf
         
         
         # Enable debug turbo modec
         # Enable debug turbo modec
         debugRunning = inputState.isSet("debugRunning")
         debugRunning = inputState.isSet("debugRunning")
@@ -446,16 +446,16 @@ class ShipPilot(PhysicsWalker):
         if self.currentTurning < 0.001 and self.currentTurning > -0.001:
         if self.currentTurning < 0.001 and self.currentTurning > -0.001:
             self.currentTurning = 0.0
             self.currentTurning = 0.0
         self.__rotationSpeed = self.currentTurning
         self.__rotationSpeed = self.currentTurning
-                
+        
         #print "########################"
         #print "########################"
         #print self.__speed
         #print self.__speed
+        #print self.ship.baseAcceleration
         #print self.ship.acceleration
         #print self.ship.acceleration
         #print self.ship.speedboost
         #print self.ship.speedboost
         #print straightSailBonus
         #print straightSailBonus
-                
+        
         # Broadcast Event to Handlers (ShipStatusMeter)
         # Broadcast Event to Handlers (ShipStatusMeter)
-        # messenger.send("setShipSpeed-%s" % (self.ship.getDoId()), [self.__speed, self.ship.acceleration * (1+self.MAX_STRAIGHT_SAIL_BONUS) * (1+self.MAX_STRAIGHT_SAIL_BONUS)])
-        messenger.send("setShipSpeed-%s" % (self.ship.getDoId()), [self.__speed, self.ship.acceleration * (1+self.MAX_STRAIGHT_SAIL_BONUS) + self.ship.speedboost])
+        messenger.send("setShipSpeed-%s" % (self.ship.getDoId()), [self.__speed, self.getMaxSpeed()])
         
         
         if self.wantDebugIndicator:
         if self.wantDebugIndicator:
             self.displayDebugInfo()
             self.displayDebugInfo()
@@ -606,6 +606,9 @@ class ShipPilot(PhysicsWalker):
 
 
         return Task.cont
         return Task.cont
 
 
+    def getMaxSpeed(self):
+        return self.ship.acceleration * self.MAX_STRAIGHT_SAIL_BONUS + self.ship.speedboost
+
     def getVelocity(self):
     def getVelocity(self):
         return self.__vel
         return self.__vel
 
 
@@ -651,6 +654,12 @@ class ShipPilot(PhysicsWalker):
             self.ignore("control-f3") #*#
             self.ignore("control-f3") #*#
             self.ignore("f3")
             self.ignore("f3")
 
 
+        self.__speed = 0;
+        
+        # Broadcast Event to Handlers (ShipStatusMeter)
+        if self.ship:
+            messenger.send("setShipSpeed-%s" % (self.ship.getDoId()), [self.__speed, self.getMaxSpeed()])
+
     if __debug__:
     if __debug__:
         def setupAvatarPhysicsIndicator(self):
         def setupAvatarPhysicsIndicator(self):
             if self.wantDebugIndicator:
             if self.wantDebugIndicator: