50 lines
2.2 KiB
Python
50 lines
2.2 KiB
Python
|
import pygame
|
||
|
from utils.settings import *
|
||
|
from random import randint
|
||
|
|
||
|
class MagicPlayer:
|
||
|
def __init__(self, animation_player):
|
||
|
self.animation_player = animation_player
|
||
|
|
||
|
# Sound Setup
|
||
|
self.sounds = {
|
||
|
'heal': pygame.mixer.Sound('../Graphics/audio/heal.wav'),
|
||
|
'flame': pygame.mixer.Sound('../Graphics/audio/flame.wav')
|
||
|
}
|
||
|
|
||
|
def heal(self, player, strength, cost, groups):
|
||
|
if player.energy >= cost:
|
||
|
self.sounds['heal'].play()
|
||
|
player.health += strength
|
||
|
player.energy -= cost
|
||
|
if player.health >= player.stats['health']:
|
||
|
player.health = player.stats['health']
|
||
|
self.animation_player.generate_particles('aura', player.rect.center, groups)
|
||
|
self.animation_player.generate_particles('heal', player.rect.center + pygame.math.Vector2(0, -50), groups)
|
||
|
|
||
|
def flame(self, player, cost, groups):
|
||
|
if player.energy >= cost:
|
||
|
player.energy -= cost
|
||
|
self.sounds['flame'].play()
|
||
|
|
||
|
if player.status.split('_')[0] == 'right':
|
||
|
direction = pygame.math.Vector2(1,0)
|
||
|
elif player.status.split('_')[0] == 'left':
|
||
|
direction = pygame.math.Vector2(-1,0)
|
||
|
elif player.status.split('_')[0] == 'up':
|
||
|
direction = pygame.math.Vector2(0,-1)
|
||
|
else:
|
||
|
direction = pygame.math.Vector2(0,1)
|
||
|
|
||
|
for i in range(1, 6):
|
||
|
if direction.x:
|
||
|
offset_x = direction.x * i * TILESIZE
|
||
|
x = player.rect.centerx + offset_x + randint(-TILESIZE // 3, TILESIZE //3)
|
||
|
y = player.rect.centery + randint(-TILESIZE // 3, TILESIZE //3)
|
||
|
self.animation_player.generate_particles('flame', (x,y), groups)
|
||
|
else:
|
||
|
offset_y = direction.y * i * TILESIZE
|
||
|
x = player.rect.centerx + randint(-TILESIZE // 3, TILESIZE //3)
|
||
|
y = player.rect.centery + offset_y + randint(-TILESIZE // 3, TILESIZE //3)
|
||
|
self.animation_player.generate_particles('flame', (x,y), groups)
|