heroofhyla

Untitled

Mar 31st, 2020
994
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.00 KB | None | 0 0
  1. extends "res://interface/IStateMachine.gd"
  2. var health = 3
  3. var max_health = 3
  4.  
  5. var projectile_resource = load("res://entity/combat/attack/Projectile.tscn")
  6.  
  7. onready var animation_player = get_node("AnimationPlayer")
  8. onready var reticle = get_node("Reticle")
  9. onready var projectile_spawn = get_node("ProjectileSpawn")
  10.  
  11. func _ready():
  12.     enter("Idle")
  13.    
  14. func _on_HitBox_area_entered(area):
  15.     if area.is_in_group("damage_to_player"):
  16.         health -= 1
  17.         area.get_parent().alert_hit()
  18.         if health <= 0:
  19.             visible = false
  20.     pass
  21.  
  22. class StateDodgeReady extends "res://interface/IState.gd":
  23.     func enter():
  24.     .enter()
  25.     animation_player.play("Idle")
  26.     pass
  27.  
  28.     func input(event):
  29.         if event.is_action_pressed("ui_right"):
  30.             done = true
  31.             next_state = "Sidestep"
  32.         if event.is_action_pressed("ui_up"):
  33.             done = true
  34.             next_state = "Jump"
  35.         if event.is_action_pressed("ui_down"):
  36.             done = true
  37.             next_state = "Duck"
  38.  
  39. class StateAim extends "res://interface/IState.gd":
  40.     func enter():
  41.         .enter()
  42.         next_state = "Fire"
  43.         mage.animation_player.get_animation("Idle").loop = false
  44.         mage.animation_player.queue("Aim")
  45.         pass
  46.  
  47.     func input(event):
  48.         if event.is_action_pressed("ui_accept"):
  49.             done = true
  50.  
  51. class StateFire extends "res://interface/IState.gd":
  52.     func enter():
  53.         .enter()
  54.         mage.animation_player.get_animation("Idle").loop = true
  55.         mage.animation_player.play("Idle")
  56.         next_state = "DodgeReady"
  57.         var angle = mage.reticle.rotation
  58.         var projectile = mage.projectile_resource.instance()
  59.         projectile.connect("attack_over", self, "on_attack_over")
  60.         projectile_spawn.add_child(projectile)
  61.         var launch_vector = Vector2(-1 * cos(angle), -1 * sin(angle))
  62.         projectile.launch(launch_vector)
  63.         pass
  64.  
  65.     func on_attack_over():
  66.         done = true
  67.         mage.reticle.visible = false
  68.  
  69. class StateSidestep extends "res://interface/IState.gd":
  70.     func enter():
  71.         .enter()
  72.         next_state = "DodgeReady"
  73.         mage.animation_player.play("Sidestep")
  74.         pass
  75.  
  76.     func on_animation_finished(anim):
  77.         if not active:
  78.             return
  79.         done = true
  80.  
  81. class StateDuck extends "res://interface/IState.gd":
  82.     func enter():
  83.         .enter()
  84.         next_state = "DodgeReady"
  85.         mage.animation_player.play("Duck")
  86.         pass
  87.  
  88.     func on_animation_finished(anim):
  89.         if not active:
  90.             return
  91.         done = true
  92.  
  93. class StateJump extends "res://interface/IState.gd":
  94.     func enter():
  95.         .enter()
  96.         next_state = "DodgeReady"
  97.         mage.animation_player.play("Jump")
  98.         pass
  99.  
  100.     func on_animation_finished(anim):
  101.         if not active:
  102.             return
  103.         done = true
  104.  
  105. class StateIdle extends "res://interface/IState.gd":
  106.     func enter():
  107.         .enter()
  108.         mage.animation_player.play("Idle")
  109.         pass
Advertisement
Add Comment
Please, Sign In to add comment