74 lines
2.3 KiB
GDScript

extends Node2D
export var hp : int = 3 # Number of hits before dying
export var dash_duration : int = 2 # Duration of charge tween in seconds
onready var fish = get_node("/root/Tank/Fish")
var charging = false
func _ready():
$ChargeTimer.start()
$Sprite.flip_h = true
func _process(delta: float) -> void:
var v
v = fish.get_global_position() - global_position
var angle = v.angle() + deg2rad(270)
if rad2deg(angle) < 180 or rad2deg(angle) > 360:
if not charging:
$Sprite.flip_v = true
elif not charging:
$Sprite.flip_v = false
var rotation_speed = PI * 0.75 # PI = 180 degrees
var angle_delta = rotation_speed * delta
angle = lerp_angle(global_rotation, angle + 1.57, 1.0)
angle = clamp(angle, global_rotation - angle_delta, global_rotation + angle_delta)
if not charging:
global_rotation = angle
func _on_ChargeTimer_timeout() -> void:
var destination = $ChargeDestination.get_global_position()
print("destination=" + str(destination))
destination.x = clamp(destination.x, 200, 1720)
destination.y = clamp(destination.y, 200, 880)
print("clamped destination=" + str(destination))
print("position=" + str(position))
print("global_pos=" + str(global_position))
$Tween.interpolate_property(self, "position", global_position, destination, dash_duration, Tween.TRANS_EXPO, Tween.EASE_IN)
$Tween.start()
charging = true
yield($Tween, "tween_completed")
charging = false
$ChargeTimer.start()
func _on_Hurtbox_area_entered(area: Area2D) -> void:
if area.is_in_group("Fish"):
if fish.electrified:
fish.belly_up("a concussion")
func _on_Hitbox_area_entered(area: Area2D) -> void:
if area.is_in_group("Fish"):
if fish.electrified:
hp-=1 #below is flash feedback on hit
$TweenColor.interpolate_property(self, "modulate", modulate, Color(0,0,0,1), .085)
$TweenColor.start()
yield($TweenColor, "tween_completed")
$TweenColor.interpolate_property(self, "modulate", modulate, Color(1,1,1,1), .085)
$TweenColor.start()
if hp < 1: # kill angler
_death()
func _death():
$ChargeTimer.stop() #stop charging when dead
$Sprite.flip_v = true
charging = true #hack to stop rotating
$Tween.interpolate_property(self, "position", get_global_position(),Vector2(get_global_position().x,100), dash_duration, Tween.TRANS_LINEAR, Tween.EASE_IN)
# probably replacing his eyes with X_X's SKIP DO THIS
$Tween.start()