init
This commit is contained in:
81
levels/battle_state/battle_state.gd
Executable file
81
levels/battle_state/battle_state.gd
Executable file
@@ -0,0 +1,81 @@
|
||||
class_name BattleState
|
||||
extends Control
|
||||
|
||||
|
||||
@export var enemy_list:Array[Enemy] = [null, null, null]
|
||||
@export var animation_player:AnimationPlayer
|
||||
@onready var enemy_label_1: Label = %EnemyLabel1
|
||||
@onready var enemy_label_2: Label = %EnemyLabel2
|
||||
@onready var enemy_label_3: Label = %EnemyLabel3
|
||||
@onready var pos_1: Marker2D = %Pos1
|
||||
@onready var pos_2: Marker2D = %Pos2
|
||||
@onready var pos_3: Marker2D = %Pos3
|
||||
var world:World
|
||||
|
||||
func start_battle(list:Array[PackedScene], enemy_name:Array[String]) -> void:
|
||||
delete_all_enemies()
|
||||
var i:int = 0
|
||||
for enemy:PackedScene in list:
|
||||
if enemy != null:
|
||||
var new_enemy:Enemy = enemy.instantiate() as Enemy
|
||||
if i == 0:
|
||||
new_enemy.position = pos_1.global_position
|
||||
enemy_label_1.text = enemy_name[0].to_upper()
|
||||
elif i == 1:
|
||||
new_enemy.position = pos_2.global_position
|
||||
enemy_label_2.text = enemy_name[1].to_upper()
|
||||
elif i == 2:
|
||||
new_enemy.position = pos_3.global_position
|
||||
enemy_label_3.text = enemy_name[2].to_upper()
|
||||
add_child(new_enemy)
|
||||
enemy_list[i] = new_enemy
|
||||
i += 1
|
||||
|
||||
|
||||
|
||||
func start(current_world:World) -> void:
|
||||
world = current_world
|
||||
|
||||
func start_animation() -> void:
|
||||
animation_player.play("appear")
|
||||
|
||||
func command(current_command:String, input:String) -> void:
|
||||
match current_command:
|
||||
"FIGHT":
|
||||
fight(input)
|
||||
|
||||
|
||||
func fight(enemy_to_attack:String) -> void:
|
||||
var new_input:String = enemy_to_attack.replace(" ", "")
|
||||
new_input = new_input.to_upper()
|
||||
if new_input == enemy_label_1.text.replace(" ", ""):
|
||||
if enemy_list[0] != null:
|
||||
enemy_list[0].health -= world.player.damage
|
||||
if enemy_list[0].health <= 0:
|
||||
enemy_list[0].queue_free()
|
||||
enemy_list[0] = null
|
||||
elif new_input == enemy_label_2.text.replace(" ", ""):
|
||||
if enemy_list[1] != null:
|
||||
enemy_list[1].health -= world.player.damage
|
||||
if enemy_list[1].health <= 0:
|
||||
enemy_list[1].queue_free()
|
||||
enemy_list[1] = null
|
||||
elif new_input == enemy_label_3.text.replace(" ", ""):
|
||||
if enemy_list[2] != null:
|
||||
enemy_list[2].health -= world.player.damage
|
||||
if enemy_list[2].health <= 0:
|
||||
enemy_list[2].queue_free()
|
||||
enemy_list[2] = null
|
||||
for enemy in enemy_list:
|
||||
if enemy != null:
|
||||
print(enemy)
|
||||
return
|
||||
animation_player.play("win")
|
||||
await get_tree().create_timer(3).timeout
|
||||
world.end_battle()
|
||||
|
||||
|
||||
func delete_all_enemies() -> void:
|
||||
for enemy in enemy_list:
|
||||
if enemy != null:
|
||||
enemy.queue_free()
|
||||
Reference in New Issue
Block a user