spele/plagiats/projectiles.py

51 lines
1.7 KiB
Python

class Projectiles:
def __init__(self, game):
self.projectiles = []
self.game = game
self.map = game.map
def add(self, projectile):
self.projectiles.append(projectile)
def update(self):
result = set()
for projectile in self.projectiles:
cp1, cp2 = projectile.get_check_points()
for enemy in self.game.enemies:
r = enemy.get_rect()
if r.collidepoint(cp1) or r.collidepoint(cp2):
#Check if projectile collides enemy
self.game.enemies.remove(enemy)
self.remove(projectile)
self.game.score += 1
break
pr = self.game.player.get_rect()
if pr.collidepoint(cp1) or pr.collidepoint(cp2):
self.game.settings.running = False
if self.map != None:
block1 = self.map.find_block_on_coords(cp1[0], cp1[1])
block2 = self.map.find_block_on_coords(cp2[0], cp2[1])
if block1.projectile_passable and block2.projectile_passable:
projectile.update()
else:
try:
index = self.projectiles.index(projectile)
del self.projectiles[index]
del projectile
except:
pass
return result
def change_coords_by_delta(self, dx=None, dy=None):
for projectile in self.projectiles:
projectile.change_coords_by_delta(dx, dy)
def remove(self, projectile):
self.projectiles.pop(self.projectiles.index(projectile))