Adds action queuing and ATB charging

combat_refactor
Joey Pollack 2 years ago
parent d421821fbe
commit 7e599a5f97

@ -7,6 +7,8 @@ class_name Action
var ActionIndex = 0
signal action_finished
func _ready():
if ActionName == "NONE":
push_warning("Actions has NONE name")

@ -10,23 +10,22 @@ class_name Combatant
var is_init = false
var ATBCurrent = 0
var ActionReady = false
func _ready():
pass
func tick_atb(delta):
if ActionReady:
if ATBCurrent >= 100:
ATBCurrent = 100
return
ATBCurrent += Stats.Speed * delta
if ATBCurrent >= 100:
ActionReady = true
ATBCurrent += Stats.Speed * delta * ATBSpeedCoeffecient
func execute_action(index: int):
Actions[index].execute()
ActionReady = false
ATBCurrent = 0
#func _process(delta):
# if not is_init:

@ -1,18 +1,40 @@
extends Sprite2D
@onready var ATB = $battle_menu/ATB
@onready var ActionState = $battle_menu/ActionState
var NextAction
var ActionReady = false
func _ready():
var menu = $battle_menu
menu.add_action($Combatant/Actions/attack).action_selected.connect(do_action)
menu.add_action($Combatant/Actions/spin_attack).action_selected.connect(do_action)
var item = menu.add_action($Combatant/Actions/attack)
item.action_selected.connect(do_action)
item.action.action_finished.connect(action_done)
item = menu.add_action($Combatant/Actions/spin_attack)
item.action_selected.connect(do_action)
item.action.action_finished.connect(action_done)
func _process(delta):
var combatant = $Combatant
if ActionReady and ATB.value == 100:
NextAction.execute()
ActionState.text = "Action Executing: %s" % NextAction.ActionName
combatant.ATBCurrent = 0
ATB.value = 0
ActionReady = false
return
combatant.tick_atb(delta)
ATB.value = combatant.ATBCurrent
func do_action(action):
print("Player selected: %s" % action.ActionName)
ActionState.text = "Action Queued: %s" % action.ActionName
NextAction = action
ActionReady = true
func action_done():
ActionState.text = ""

@ -1,6 +1,16 @@
extends Action
var timer
func execute():
print("Test Player Attacking!")
timer = Timer.new()
timer.timeout.connect(done)
timer.wait_time = 1
add_child(timer)
timer.start()
print("Executing Attack!")
func done():
timer.queue_free()
action_finished.emit()

@ -1,4 +1,14 @@
extends Action
var timer
func execute():
print("Test Player uses Spin Attack!")
timer = Timer.new()
timer.timeout.connect(done)
timer.wait_time = 1
add_child(timer)
timer.start()
print("Executing Spin Attack!")
func done():
timer.queue_free()
action_finished.emit()

@ -25,7 +25,7 @@ Accuracy = 1
Agility = 1
[node name="Player" type="Sprite2D"]
position = Vector2(447, 283)
position = Vector2(553, 219)
texture = ExtResource("1_d15px")
script = ExtResource("2_8b3bs")
@ -47,6 +47,13 @@ texture_under = ExtResource("4_afpwe")
texture_progress = ExtResource("5_5mhew")
texture_progress_offset = Vector2(16, 8)
[node name="ActionState" type="Label" parent="battle_menu"]
layout_mode = 0
offset_left = -36.0
offset_top = 237.0
offset_right = 170.0
offset_bottom = 280.0
[node name="Combatant" parent="." node_paths=PackedStringArray("Actions") instance=ExtResource("4_w3vb5")]
Stats = SubResource("Resource_28c5l")
Actions = [null, null]

Loading…
Cancel
Save