Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends "res://interface/IStateMachine.gd"
- var health = 3
- var max_health = 3
- var projectile_resource = load("res://entity/combat/attack/Projectile.tscn")
- onready var animation_player = get_node("AnimationPlayer")
- onready var reticle = get_node("Reticle")
- onready var projectile_spawn = get_node("ProjectileSpawn")
- func _ready():
- enter("Idle")
- func _on_HitBox_area_entered(area):
- if area.is_in_group("damage_to_player"):
- health -= 1
- area.get_parent().alert_hit()
- if health <= 0:
- visible = false
- pass
- class StateDodgeReady extends "res://interface/IState.gd":
- func enter():
- .enter()
- animation_player.play("Idle")
- pass
- func input(event):
- if event.is_action_pressed("ui_right"):
- done = true
- next_state = "Sidestep"
- if event.is_action_pressed("ui_up"):
- done = true
- next_state = "Jump"
- if event.is_action_pressed("ui_down"):
- done = true
- next_state = "Duck"
- class StateAim extends "res://interface/IState.gd":
- func enter():
- .enter()
- next_state = "Fire"
- mage.animation_player.get_animation("Idle").loop = false
- mage.animation_player.queue("Aim")
- pass
- func input(event):
- if event.is_action_pressed("ui_accept"):
- done = true
- class StateFire extends "res://interface/IState.gd":
- func enter():
- .enter()
- mage.animation_player.get_animation("Idle").loop = true
- mage.animation_player.play("Idle")
- next_state = "DodgeReady"
- var angle = mage.reticle.rotation
- var projectile = mage.projectile_resource.instance()
- projectile.connect("attack_over", self, "on_attack_over")
- projectile_spawn.add_child(projectile)
- var launch_vector = Vector2(-1 * cos(angle), -1 * sin(angle))
- projectile.launch(launch_vector)
- pass
- func on_attack_over():
- done = true
- mage.reticle.visible = false
- class StateSidestep extends "res://interface/IState.gd":
- func enter():
- .enter()
- next_state = "DodgeReady"
- mage.animation_player.play("Sidestep")
- pass
- func on_animation_finished(anim):
- if not active:
- return
- done = true
- class StateDuck extends "res://interface/IState.gd":
- func enter():
- .enter()
- next_state = "DodgeReady"
- mage.animation_player.play("Duck")
- pass
- func on_animation_finished(anim):
- if not active:
- return
- done = true
- class StateJump extends "res://interface/IState.gd":
- func enter():
- .enter()
- next_state = "DodgeReady"
- mage.animation_player.play("Jump")
- pass
- func on_animation_finished(anim):
- if not active:
- return
- done = true
- class StateIdle extends "res://interface/IState.gd":
- func enter():
- .enter()
- mage.animation_player.play("Idle")
- pass
Advertisement
Add Comment
Please, Sign In to add comment