Files
ScrapFrontier/game/entities/ships/enemies/abstract_enemy_ship.gd
T
2025-12-24 17:35:18 +03:00

49 lines
1.1 KiB
GDScript

class_name AbstractEnemyShip
extends AbstractShip
var is_on_screen : bool = false
var weapon_type : AbstractWeapon.Type:
set(value):
pass
get():
var type := AbstractWeapon.Type.NONE
for weapon in _weapons: type = weapon.type
return type
var enemy_data : EnemyData:
set = _set_enemy_data
@onready var controller : EnemyController = $EnemyController
func _physics_process(delta: float) -> void:
super._physics_process(delta)
if is_on_screen:
shoot()
func _on_visible_on_screen_notifier_2d_screen_entered() -> void:
is_on_screen = true
func _on_visible_on_screen_notifier_2d_screen_exited() -> void:
is_on_screen = false
func _set_enemy_data(data: EnemyData) -> void:
enemy_data = data
for weapon in _weapons:
weapon.queue_free()
_weapons.clear()
var positions := weapon_positions.duplicate()
if positions.size() == 3 and enemy_data.weapon_count == 2:
positions.remove_at(0)
for i in range(min(enemy_data.weapon_count, positions.size())):
var weapon_scene := enemy_data.weapon.enemy_scene
var weapon : AbstractWeapon = weapon_scene.instantiate()
_add_weapon(weapon, positions[i])