예제 #1
0
	def respectGroundRule(self, function):
		from link_scripts.StarterState import start_fallState

		if (self.tester.detectGround()):
			return True
		else:
			if (function != None):
				function(self)
			# go t ofall
			start_fallState(self)
			return False
예제 #2
0
    def respectGroundRule(self, function, goToFall=True):
        from link_scripts.StarterState import start_fallState

        if (self.tester.detectGround()):
            return True
        else:
            if (function != None):
                function(self)
            # go tofall
            if (goToFall):
                start_fallState(self)
            return False
예제 #3
0
def walkState(self):
	# get forward force
	forward_force = self.getForwardForce()
	speedAnim = 1.0#abs(self.gamepad.getJoyAxis1Value())

	if (self.tester.detectLadderBottom()):
		start_ladderFromTop(self)
		return

	# If detect enemy damage
	if (self.tester.detectEnemyDamage()):
		start_hitState(self)
		return

	# If detect water
	if (self.tester.detectWater()):
		# stop orientation
		self.orientManager.stopOrientation(self)
		# start swim state
		start_swimState(self)
	# else we can move or wait
	elif ( self.respectGroundRule(end_walkState(self)) ):
		if (self.tester.switchLevel()):
			# cancel state
			return
		# if arrow key is pressed
		if (forward_force != 0.0):
			# use walk movement
			if walkForce(self, forward_force):
				# stop orientation
				self.orientManager.stopOrientation(self)
				# go to idle state
				self.switchState(PlayerState.RUN_STATE)
			else:
				# play walk animation
				self.rig.playWalk(speedAnim)
				# play step sound
				self.audio.playStepSound(self.rig.getActionFrame(1), [4, 13])
				# active orientation movement
				self.orientManager.orient_player(self)
		else:
			# stop orientation
			self.orientManager.stopOrientation(self)
			# go to idle state
			self.switchState(PlayerState.IDLE_STATE)
	# go to fall
	else:
		# go to fall state
		start_fallState(self)
예제 #4
0
def walkState(self):
    # get forward force
    forward_force = self.getForwardForce()
    speedAnim = 1.0  #abs(self.gamepad.getJoyAxis1Value())

    if (self.tester.detectLadderBottom()):
        start_ladderFromTop(self)
        return

    # If detect enemy damage
    if (self.tester.detectEnemyDamage()):
        start_hitState(self)
        return

    # If detect water
    if (self.tester.detectWater()):
        # stop orientation
        self.orientManager.stopOrientation(self)
        # start swim state
        start_swimState(self)
    # else we can move or wait
    elif (self.respectGroundRule(end_walkState(self))):
        if (self.tester.switchLevel()):
            # cancel state
            return
        # if arrow key is pressed
        if (forward_force != 0.0):
            # use walk movement
            if walkForce(self, forward_force):
                # stop orientation
                self.orientManager.stopOrientation(self)
                # go to idle state
                self.switchState(PlayerState.RUN_STATE)
            else:
                # play walk animation
                self.rig.playWalk(speedAnim)
                # play step sound
                self.audio.playStepSound(self.rig.getActionFrame(1), [4, 13])
                # active orientation movement
                self.orientManager.orient_player(self)
        else:
            # stop orientation
            self.orientManager.stopOrientation(self)
            # go to idle state
            self.switchState(PlayerState.IDLE_STATE)
    # go to fall
    else:
        # go to fall state
        start_fallState(self)
예제 #5
0
def specialAttack1State(self):
    frame = self.rig.getActionFrame(5)
    if (frame >= 13):
        start_fallState(self)
    else:
        # Movement
        if (frame <= 8):
            if (self.getDistanceTo(self.targetManager.targetObject) > 2.0):
                self.linearVelocity[0] = 0
                self.linearVelocity[1] = 5
        else:
            self.stopMovement()
        # Sound
        self.audio.playAttack1Sound(frame, 1, 2)
        # Attack power
        if (frame >= 0 and frame <= 8):
            setDamage(5)
        else:
            setDamage(0)
예제 #6
0
def forwardSwimState(self):
	"""
	Forward swim state
	If detect ground specially g ot idle STATE
	"""
	# get forward force
	forward_force = self.getForwardForce() * 0.6

	# past player to water
	toWaterPos(self)

	# if detect the grounded
	if ( self.tester.detectGroundFromWater() ):
		# go to ground
		swimToGround(self)
		return

	# If always in water
	if (self.tester.detectWater()):
		# if move go to forward swim state
		if (forward_force != 0):
		   # forward movement
		   forwardForce(self, forward_force)
		   # play animation
		   self.rig.playSwimForward()
		   # active orientation movement
		   self.orientManager.orient_player(self)
		# else don"t move, go to wait swim state
		else:
			# stop orientation
			self.orientManager.stopOrientation(self)
			# go to wait swim
			self.switchState(PlayerState.WAIT_SWIM_STATE)
	# else out of water go to fall
	else:
		# stop orientation
		self.orientManager.stopOrientation(self)
		# stop movement
		self.stopMovement()
		# deactivate water
		self.onWater = False
		# go to fall
		start_fallState(self)
예제 #7
0
def specialAttack1State(self):
    frame = self.rig.getActionFrame(5)
    if frame >= 13:
        start_fallState(self)
    else:
        # Movement
        if frame <= 8:
            if self.getDistanceTo(self.targetManager.targetObject) > 2.0:
                self.linearVelocity[0] = 0
                self.linearVelocity[1] = 5
        else:
            self.stopMovement()
            # Sound
        self.audio.playAttack1Sound(frame, 1, 2)
        # Attack power
        if frame >= 0 and frame <= 8:
            setDamage(5)
        else:
            setDamage(0)