|
@@ -6,7 +6,7 @@ enum STATES { IDLE, ATTACK }
|
|
|
var state = null
|
|
|
|
|
|
enum ATTACK_INPUT_STATES { IDLE, LISTENING, REGISTERED }
|
|
|
-var attack_input_state = IDLE
|
|
|
+var attack_input_state = ATTACK_INPUT_STATES.IDLE
|
|
|
var ready_for_next_attack = false
|
|
|
const MAX_COMBO_COUNT = 3
|
|
|
var combo_count = 0
|
|
@@ -33,22 +33,22 @@ var hit_objects = []
|
|
|
func _ready():
|
|
|
$AnimationPlayer.connect('animation_finished', self, "_on_animation_finished")
|
|
|
self.connect("body_entered", self, "_on_body_entered")
|
|
|
- _change_state(IDLE)
|
|
|
+ _change_state(STATES.IDLE)
|
|
|
|
|
|
func _change_state(new_state):
|
|
|
match state:
|
|
|
- ATTACK:
|
|
|
+ STATES.ATTACK:
|
|
|
hit_objects = []
|
|
|
- attack_input_state = IDLE
|
|
|
+ attack_input_state = ATTACK_INPUT_STATES.LISTENING
|
|
|
ready_for_next_attack = false
|
|
|
|
|
|
match new_state:
|
|
|
- IDLE:
|
|
|
+ STATES.IDLE:
|
|
|
combo_count = 0
|
|
|
$AnimationPlayer.stop()
|
|
|
visible = false
|
|
|
monitoring = false
|
|
|
- ATTACK:
|
|
|
+ STATES.ATTACK:
|
|
|
attack_current = combo[combo_count -1]
|
|
|
$AnimationPlayer.play(attack_current['animation'])
|
|
|
visible = true
|
|
@@ -56,24 +56,24 @@ func _change_state(new_state):
|
|
|
state = new_state
|
|
|
|
|
|
func _input(event):
|
|
|
- if not state == ATTACK:
|
|
|
+ if not state == STATES.ATTACK:
|
|
|
return
|
|
|
- if attack_input_state != LISTENING:
|
|
|
+ if attack_input_state != ATTACK_INPUT_STATES.LISTENING:
|
|
|
return
|
|
|
if event.is_action_pressed('attack'):
|
|
|
- attack_input_state = REGISTERED
|
|
|
+ attack_input_state = ATTACK_INPUT_STATES.REGISTERED
|
|
|
|
|
|
func _physics_process(delta):
|
|
|
- if attack_input_state == REGISTERED and ready_for_next_attack:
|
|
|
+ if attack_input_state == ATTACK_INPUT_STATES.REGISTERED and ready_for_next_attack:
|
|
|
attack()
|
|
|
|
|
|
func attack():
|
|
|
combo_count += 1
|
|
|
- _change_state(ATTACK)
|
|
|
+ _change_state(STATES.ATTACK)
|
|
|
|
|
|
# use with AnimationPlayer func track
|
|
|
func set_attack_input_listening():
|
|
|
- attack_input_state = LISTENING
|
|
|
+ attack_input_state = ATTACK_INPUT_STATES.LISTENING
|
|
|
|
|
|
# use with AnimationPlayer func track
|
|
|
func set_ready_for_next_attack():
|
|
@@ -91,10 +91,10 @@ func _on_animation_finished(name):
|
|
|
if not attack_current:
|
|
|
return
|
|
|
|
|
|
- if attack_input_state == REGISTERED and combo_count < MAX_COMBO_COUNT:
|
|
|
+ if attack_input_state == ATTACK_INPUT_STATES.REGISTERED and combo_count < MAX_COMBO_COUNT:
|
|
|
attack()
|
|
|
else:
|
|
|
- _change_state(IDLE)
|
|
|
+ _change_state(STATES.IDLE)
|
|
|
emit_signal("attack_finished")
|
|
|
|
|
|
func _on_StateMachine_state_changed(current_state):
|