diff --git a/game.py b/game.py index c3768cd..903b136 100644 --- a/game.py +++ b/game.py @@ -39,17 +39,20 @@ class Game(gameUtils.Game): self.gunLoad = pygame.mixer.Sound("./assets/gun-load.mp3") self.gunCyclinder = pygame.mixer.Sound("./assets/gun-cylinder-stop.mp3") - self.gun = pygame.load_animation('./assets/gun-spin.webp') + #self.gun = pygame.load_animation('./assets/gun-spin.webp') self.gunFlash = pygame.image.load("./assets/muzzleflash.png") + self.gun = self.createAnimObj('gun', './assets/gun-base.png') + self.gun.addAnimation(gameUtils.AnimationHandler('spin', './assets/gun-spin.webp', 60)) + self.shockScale = 0 #controls shock level sent to PDO (on a scale of 0 to 1) #gun variables self.startSpin = False self.spinInc = 0 #render variables - self.gunw=self.gun[0][0].size[0] #calculates width of gun anim - self.gunh=self.gun[0][0].size[1] #calculates height of gun anim + self.gunw=self.gun.size[0] #calculates width of gun anim + self.gunh=self.gun.size[1] #calculates height of gun anim #NOTE: Brosef, istg you better not make the gun webm # change sizes mid file, or so help me @@ -86,28 +89,24 @@ class Game(gameUtils.Game): elif event.key == pygame.K_3: self.playSound(self.gunSpin) elif event.key == pygame.K_SPACE: - self.startSpin = True + self.gun.playAnim('spin') + elif event.type == gameUtils.AnimStart: + if event.objectID == self.gun.objectID and event.animationID == 'spin': + self.playSound(self.gunSpin) + elif event.type == gameUtils.AnimFinish: + if event.objectID == self.gun.objectID and event.animationID == 'spin': + self.shockScale += self.fire() #check if the user gets shot + self.shockScale = min(self.shockScale, 1) #keeps shockScale in bounds def update(self): """ Ran once per frame, put your drawing code and any game logic that should be ran once per frame in here. """ - - #gun code WOO - if self.startSpin == True:#check if space was pressed or if the gun is already spinning - if self.spinInc == 0: - self.playSound(self.gunSpin) - self.spinInc += 1 #next gun frame - if self.spinInc == len(self.gun): #if we've reached the end - self.spinInc = 0 #reset frame count - self.startSpin = False #what did i say bitch? stop spinning - self.shockScale += self.fire() #check if the user gets shot - self.shockScale = min(self.shockScale, 1) #keeps shockScale in bounds #screen code self.surf.fill("black") - self.surf.blit(pygame.transform.scale_by(self.gun[self.spinInc][0],self.gunScale),(self.gunMidx,self.gunMidy))#draw the gun + self.surf.blit(pygame.transform.scale_by(self.gun.getFrame(),self.gunScale),(self.gunMidx,self.gunMidy))#draw the gun #screen.blit(pygame.transform.scale_by(MainSurface,1),(0,yOffset))#renders the main surface to the screen, while also scaling it for the required display resolution # TODO: