import { BASE_FIRE_RATE, BASE_DAMAGE, BASE_HEALTH } from '../config.js'; import Bullet from './Bullet.js'; export default class Base extends Phaser.GameObjects.Sprite { constructor(scene, x, y, texture) { super(scene, x, y, texture, 0); this.scene = scene; this.health = BASE_HEALTH; this.lastShot = 0; this.setOrigin(0.5, 0.5); this.setDepth(1); } update(time, delta) { if (time > this.lastShot + BASE_FIRE_RATE) { const target = this.findNearestEnemy(); if (target) { this.shoot(target); this.lastShot = time; } } } findNearestEnemy() { const enemies = this.scene.enemies.getChildren(); if (!enemies.length) return null; let nearest = null; let minDist = Infinity; enemies.forEach(e => { const d = Phaser.Math.Distance.Between(this.x, this.y, e.x, e.y); if (d < minDist) { minDist = d; nearest = e; } }); return nearest; } shoot(target) { const bullet = new Bullet(this.scene, this.x, this.y, 'bullet', target); bullet.damage = BASE_DAMAGE; this.scene.bullets.add(bullet); this.scene.sound.play('shoot'); } takeDamage(amount) { this.health -= amount; this.scene.uiManager.updateBaseHealth(this.health); } isDestroyed() { return this.health <= 0; } }