diff --git a/src/tower.py b/src/tower.py index 04baaad..0e30247 100644 --- a/src/tower.py +++ b/src/tower.py @@ -32,7 +32,7 @@ class Tower: self.field_rect = rect return - def try_build(self, player_rect: pygame.Rect, keys: pygame.key.ScancodeWrapper, ects): + def try_build(self, player_rect: pygame.Rect, keys: pygame.key.ScancodeWrapper, ects): # Baut Tower wenn Spieler E drückt, auf Feld steht und genug ects hat if not self.field.rect or self.tower.rect: @@ -46,6 +46,34 @@ class Tower: self.tower_start = pygame.time.get_ticks() return True + def update(self, player_rect: pygame.Rect, keys: pygame.key.ScancodeWrapper, ects, monster_rect: pygame.Rect, room_rect: pygame.Rect, blocked_rects: list[pygame.Rect]): + + # ruft jeden Frame auf und gibt den Schaden auf Monster zurück + now = pygame.time.get_ticks() + total_damage = 0 + + self.try_build(player_rect, keys, ects) + + # schießen dann, wenn Tower und Monster vorhanden sind + if self.tower_rect and monster_rect: + if now - self.last_shot >= fire_interval: + dx = monster_rect.centerx - self.tower_rect.centerx + dy = monster_rect.centery - self.tower_rect.centery + distance = math.sqrt(dx * dx + dy * dy) or 1 + self.projectiles.append({ + "x": float(self.tower_rect.centerx), + "y": float(self.tower_rect.centery), + "vel_x": (dx / distance) * PROJECTILE_SPEED, + "vel_y": (dy / distance) * PROJECTILE_SPEED, + }) + + self.last_shot = now + + + + + +