Added enemy spawning based on enemy data
This commit is contained in:
@@ -4,22 +4,13 @@ extends AbstractShip
|
||||
|
||||
var is_on_screen : bool = false
|
||||
var weapon_type : AbstractWeapon.Type = AbstractWeapon.Type.NONE
|
||||
var enemy_data : EnemyData:
|
||||
set = _set_enemy_data
|
||||
|
||||
|
||||
@onready var controller : EnemyController = $EnemyController
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
|
||||
var weapon_id : String = WEAPON_SCENES.keys().pick_random()
|
||||
var weapon_scene : PackedScene = load(WEAPON_SCENES[weapon_id])
|
||||
for weapon_position in weapon_positions:
|
||||
var weapon : AbstractWeapon = weapon_scene.instantiate()
|
||||
weapon_type = weapon.type
|
||||
_add_weapon(weapon, weapon_position)
|
||||
|
||||
|
||||
func _add_weapon(weapon: AbstractWeapon, weapon_position: Vector2) -> void:
|
||||
super._add_weapon(weapon, weapon_position)
|
||||
weapon.set_belonging(AbstractWeapon.Belonging.ENEMY)
|
||||
@@ -31,3 +22,25 @@ func _on_visible_on_screen_notifier_2d_screen_entered() -> void:
|
||||
|
||||
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 := _create_weapon(enemy_data.weapon_id)
|
||||
_add_weapon(weapon, positions[i])
|
||||
|
||||
|
||||
func _create_weapon(weapon_id : String) -> AbstractWeapon:
|
||||
var weapon_scene : PackedScene = load(WEAPON_SCENES[weapon_id])
|
||||
var weapon : AbstractWeapon = weapon_scene.instantiate()
|
||||
weapon_type = weapon.type
|
||||
return weapon
|
||||
|
||||
@@ -70,8 +70,8 @@ func _set_player_data(new_data: PlayerData) -> void:
|
||||
for i in range(min(player_data.weapon_ids.size(), weapon_positions.size())):
|
||||
_add_weapon_by_id(player_data.weapon_ids[i], weapon_positions[i])
|
||||
|
||||
if player_data.is_new_game:
|
||||
health.hull = health.max_hull
|
||||
if player_data.hull > 0:
|
||||
health.hull = min(player_data.hull, health.max_hull)
|
||||
|
||||
|
||||
func _add_weapon_by_id(weapon_id: String, weapon_position: Vector2) -> void:
|
||||
|
||||
Reference in New Issue
Block a user