def updateControls(self, td):
        if inputs.getFirePress():
            self.anim_state = ANIM_SHOOT
            if self.facing == LEFT:
                self.obj_mgr.create("PlayerLaser", None, self.x - 47, self.y + 6, direction=self.facing)
                self.sprite.play("shoot_l")
            else:
                self.obj_mgr.create("PlayerLaser", None, self.x + 47, self.y + 6, direction=self.facing)
                self.sprite.play("shoot_r")

        if self.solidcollider.on_ground:
            self.physics.applyForce(inputs.getHorizontal() * self.run_accel * td, 0)

            if inputs.getJumpPress():
                self.physics.jump(self.jump_speed)
                self.jump_timer = self.max_jump_timer+td

            if inputs.getInteractPress():
                for obj in self.collider.iter_collide(self.obj_mgr.interactive):
                    if obj.call("interact", self) == True:
                        break

        else:
            if inputs.getHorizontal() < 0.0 and self.physics.vx > -self.max_air_speed or inputs.getHorizontal() > 0.0 and self.physics.vx < self.max_air_speed:
                self.physics.applyForce(inputs.getHorizontal() * self.air_accel * td, 0)

            self.jump_timer -= td
            if inputs.getJump() and self.jump_timer >= 0.0:
                self.physics.applyForce(0, self.jump_thrust * td)
    def updateAnim(self, td):
        if self.anim_state == ANIM_HURT or self.anim_state == ANIM_SHOOT or self.anim_state == ANIM_SPAWN:
            if not self.sprite.cursor.playing:
                self.state = STATE_ALIVE
                self.anim_state = ANIM_STAND
                if self.facing == LEFT:
                    self.sprite.play("stand_l")
                else:
                    self.sprite.play("stand_r")

        elif self.anim_state != ANIM_DIE:
            if self.solidcollider.on_ground and not self.physics.jumping:
                if self.anim_state == ANIM_STAND:
                    if inputs.getHorizontal() < -0.01:
                        self.anim_state = ANIM_RUN
                        self.facing = LEFT
                        self.sprite.play("run_l")

                    if inputs.getHorizontal() > 0.01:
                        self.anim_state = ANIM_RUN
                        self.facing = RIGHT
                        self.sprite.play("run_r")

                elif self.anim_state == ANIM_RUN:
                    if abs(inputs.getHorizontal()) <= 0.01:
                        self.anim_state = ANIM_STAND
                        if self.facing == LEFT:
                            self.sprite.play("stand_l")
                        else:
                            self.sprite.play("stand_r")

                    if self.facing == RIGHT and inputs.getHorizontal() < -0.01:
                        self.facing = LEFT
                        self.sprite.play("run_l")

                    if self.facing == LEFT and inputs.getHorizontal() > 0.01:
                        self.facing = RIGHT
                        self.sprite.play("run_r")

                elif self.anim_state == ANIM_JUMP:
                    if self.solidcollider.on_ground:
                        self.anim_state = ANIM_STAND
                        if self.facing == LEFT:
                            self.sprite.play("stand_l")
                        else:
                            self.sprite.play("stand_r")
                else:
                    pass

            elif self.anim_state == ANIM_WAIT:
                pass
            else:
                if self.anim_state != ANIM_JUMP:
                    self.anim_state = ANIM_JUMP
                    if self.facing == LEFT:
                        self.sprite.play("jump_l")
                    else:
                        self.sprite.play("jump_r")

        self.sprite.updateAnim(td)
    def update(self, td):
        if self.mapcollide.on_ground:
            self.physics.applyForce(inputs.getHorizontal() * 0.004 * td, 0)
            if self.running == False:
                if inputs.getHorizontal() < -0.01:
                    self.running = True
                    self.dir = 0
                    self.sprite.play("run_l")
                if inputs.getHorizontal() > 0.01:
                    self.running = True
                    self.dir = 1
                    self.sprite.play("run_r")
            else:
                if abs(inputs.getHorizontal()) < 0.01:
                    self.running = False
                    if self.dir == 0:
                        self.sprite.play("stand_l")
                    else:
                        self.sprite.play("stand_r")
            if inputs.getJumpPress():
                self.physics.jump(-0.45)
                self.running = False

        self.sprite.updateAnim(td)
        self.physics.update(td)
    def updateControls(self, td):
        if inputs.getFirePress():
            self.anim_state = ANIM_SHOOT
            if self.facing == LEFT:
                self.obj_mgr.create("PlayerLaser", None, self.x - 10, self.y + 4, direction=self.facing)
                self.sprite.play("shoot_l")
            else:
                self.obj_mgr.create("PlayerLaser", None, self.x + 10, self.y + 4, direction=self.facing)
                self.sprite.play("shoot_r")

        if self.mapcollide.on_ground:
            self.physics.applyForce(inputs.getHorizontal() * self.run_accel * td, 0)

            if inputs.getJumpPress():
                self.physics.jump(self.jump_speed)
                self.jump_timer = self.max_jump_timer+td

        else:
            if inputs.getHorizontal() < 0.0 and self.physics.vx > -self.max_air_speed or inputs.getHorizontal() > 0.0 and self.physics.vx < self.max_air_speed:
                self.physics.applyForce(inputs.getHorizontal() * self.air_accel * td, 0)

            self.jump_timer -= td
            if inputs.getJump() and self.jump_timer >= 0.0:
                self.physics.applyForce(0, self.jump_thrust * td)