Esempio n. 1
0
class Laser:
    anim_frame = NORMAL

    is_check = False
    is_bad = True
    is_solid = False
    is_switch = False

    def __init__(self, x: int, y: int, game_ref: 'Game', cam_ref: 'Camera',
                 spd: int) -> None:
        self.x = x
        self.y = y
        self.update = self.idle
        self.cam_ref = cam_ref
        self.max_timer = spd * FREQ
        self.timer = self.max_timer
        self.shot = Shot(self.x, self.y)
        game_ref.game_objects["shot"].append(self.shot)

    def draw(self, cam: 'Camera'):
        pyxel.blt(self.x - cam.x, self.y - cam.y, 0, self.anim_frame * 8, ROW,
                  8, 8, 0)

    def idle(self):
        self.timer -= 1
        if self.timer <= 0 and not self.shot.is_alive:
            self.anim_frame = SHOOTING
            self.timer = 5
            self.update = self.shooting
            self.shot.fire()

            if is_on_screen(self.x, self.y, self.cam_ref):
                pyxel.play(0, 21)

    def shooting(self):
        self.shot.update()
        self.timer -= 1
        if self.timer <= 0:
            self.timer = self.max_timer
            self.update = self.idle
            self.anim_frame = NORMAL