semi-idle-arpg/scripts/combat_ui_scene.gd

116 lines
3.2 KiB
GDScript3
Raw Normal View History

2024-10-18 16:17:39 -06:00
# TODO: convert to just combat UI, instancing appropriate zone/area
2024-10-08 20:51:11 -06:00
extends Control
2024-10-20 16:44:08 -06:00
@export var spawnTimerValue = 10.0
2024-10-08 20:51:11 -06:00
var deltaCount := 0
var enemyMoveSpeed := 5.0
2024-10-18 14:30:41 -06:00
# var questComplete := false
var canContinue := false
2024-10-08 20:51:11 -06:00
var middleX
var playerPos
2024-10-08 20:51:11 -06:00
func _ready() -> void:
if Globals.debug:
2024-10-18 16:17:39 -06:00
%DebugMenu.show()
2024-10-20 16:44:08 -06:00
Engine.time_scale = 10.0
SignalBus.quest_completed.connect(_on_quest_completed)
2024-10-18 16:17:39 -06:00
SignalBus.enemy_damaged_player.connect(_on_enemy_damaged_player)
2024-10-18 14:05:31 -06:00
_generate_quest()
middleX = get_viewport_rect().size.x / 2
playerPos = Vector2(middleX, get_viewport_rect().size.y * (0.75))
2024-10-18 16:17:39 -06:00
_set_player_display()
$SpawnTimer.start(spawnTimerValue)
2024-10-20 16:44:08 -06:00
_spawn_enemies(randi_range(1, 5))
2024-10-15 16:35:03 -06:00
# _spawn_enemies(5)
func _process(_delta: float) -> void:
2024-10-18 09:11:15 -06:00
deltaCount += 1
2024-10-15 16:35:03 -06:00
playerPos = Vector2(middleX, get_viewport_rect().size.y * (0.75))
2024-10-18 14:05:31 -06:00
func _generate_quest() -> void:
var quest = load("res://scenes/quest.tscn").instantiate()
%QuestsContainer.add_child(quest)
2024-10-08 20:51:11 -06:00
func _create_enemy():
var enemy = load("res://scenes/enemy.tscn").instantiate()
2024-10-15 16:35:03 -06:00
enemy.scale = Vector2.ONE * 0.5
2024-10-08 20:51:11 -06:00
enemy.position = Vector2(randi_range(0, get_viewport_rect().size.x), -50)
2024-10-18 14:30:41 -06:00
enemy.speed *= randf_range(0.67, 1.5)
enemy.target = playerPos
2024-10-08 20:51:11 -06:00
return enemy
func _get_enemies() -> Array:
var enemies := get_tree().get_nodes_in_group("enemies")
return enemies
func _get_num_enemies() -> int:
var enemies := get_tree().get_nodes_in_group("enemies")
return len(enemies)
2024-10-15 16:35:03 -06:00
func _spawn_enemies(numEnemies: int) -> void:
2024-10-08 20:51:11 -06:00
#await get_tree().create_timer(time).timeout
2024-10-15 16:35:03 -06:00
# var numEnemies = randi_range(1, maxEnemies)
2024-10-08 20:51:11 -06:00
for i in range(numEnemies):
var enemy = _create_enemy()
%WorldArea.add_child(enemy)
# var randEnemyMoveSpeed := randf_range(0.5, 2.0)*enemyMoveSpeed
# create_tween().tween_property(enemy, "position", playerPos, randEnemyMoveSpeed)
2024-10-08 20:51:11 -06:00
func _on_button_test_pressed() -> void:
2024-10-18 16:17:39 -06:00
%DebugMenu/ButtonTest.text = "pass"
pass
2024-10-08 20:51:11 -06:00
func _on_button_exit_pressed() -> void:
get_tree().quit()
func _on_spawn_timer_timeout() -> void:
2024-10-20 16:44:08 -06:00
_spawn_enemies(randi_range(1, 5))
2024-10-18 16:17:39 -06:00
func _get_player_current_health() -> void:
var playerCurrHeath = PlayerState.player_currenthealth
%PlayerInfo/PlayerHealthBar/PlayerHealthCurrent.text = str(playerCurrHeath)
%PlayerInfo/PlayerHealthBar.value = playerCurrHeath
if playerCurrHeath <= 0:
2024-10-20 16:44:08 -06:00
Engine.time_scale = 0.0001
2024-10-18 16:17:39 -06:00
func _set_player_display() -> void:
var playerMaxHeath = PlayerState.player_maxhealth
var playerCurrHeath = PlayerState.player_currenthealth
%PlayerInfo/PlayerHealthBar/PlayerHealthMax.text = str(playerMaxHeath)
%PlayerInfo/PlayerHealthBar/PlayerHealthCurrent.text = str(playerCurrHeath)
%PlayerInfo/PlayerHealthBar.value = playerCurrHeath
2024-10-18 14:30:41 -06:00
# TODO: move all quest stuff to quest class?
func _on_quest_completed() -> void:
2024-10-18 16:17:39 -06:00
# $SpawnTimer.stop()
2024-10-18 14:30:41 -06:00
# questComplete = true
if _get_enemies().is_empty(): # and questComplete:
canContinue = true
# print("Area Complete!")
# get_tree().quit()
2024-10-18 16:17:39 -06:00
func _on_enemy_damaged_player() -> void:
_get_player_current_health()