100 lines
2.9 KiB
GDScript
100 lines
2.9 KiB
GDScript
extends "res://maps/map.gd"
|
|
|
|
|
|
onready var sg_health: TextureProgress = $"%SGHealthBar"
|
|
onready var sg_energy: TextureProgress = $"%SGEnergyBar"
|
|
onready var fami_health: TextureProgress = $"%FamiHealthBar"
|
|
onready var laser_ok: TextureRect = $"%LaserOk"
|
|
onready var sg2083: KinematicBody2D = $"2083"
|
|
onready var famira: Node2D = $Famira
|
|
|
|
|
|
func _ready() -> void:
|
|
sg_energy.max_value = sg2083.max_energy
|
|
sg2083.state = sg2083.State.INACTIVE
|
|
famira.animation_player.play("grow", -1.0, 0.0)
|
|
Audio.play_sound(Audio.a_ominous,Audio.ac_collectible)
|
|
Audio.play_music(load("res://audio/music/the_dirt_under_the_meadow.ogg"))
|
|
|
|
|
|
func _on_2083_health_changed(amount) -> void:
|
|
sg_health.value = amount - 4
|
|
|
|
|
|
func _on_Famira_health_changed(amount) -> void:
|
|
fami_health.value = ceil(amount) - 3
|
|
|
|
|
|
func _on_cutscene_finished() -> void:
|
|
sg2083.visible = true
|
|
famira.visible = true
|
|
famira.animation_player.play("grow")
|
|
$AnimationPlayer.play("drop-stg")
|
|
Audio.play_music(load("res://audio/music/rumble_revolution.ogg"))
|
|
yield(get_tree().create_timer(0.5), "timeout")
|
|
$FamiCutscene/FamiHuman.visible = false
|
|
|
|
|
|
func fade() -> void:
|
|
Fade.fade_out(0.4)
|
|
Game.can_pause = true
|
|
yield(Fade, "fade_finished")
|
|
sg2083.anims.play("force idle")
|
|
Fade.fade_in(0.4)
|
|
$"%GUI".visible = true
|
|
yield(Fade, "fade_finished")
|
|
sg2083.state = sg2083.State.STAND
|
|
$FamiCutscene.queue_free()
|
|
Game.can_pause = true
|
|
Game.can_restart = true
|
|
famira.state_chart.send_event("transformed")
|
|
|
|
|
|
func start_fight() -> void:
|
|
famira.animation_player.state_chart.send_event("transformed")
|
|
|
|
|
|
func _on_2083_energy_changed(amount,laser_energy) -> void:
|
|
sg_energy.value = amount - 3
|
|
#Display heads up of laser status
|
|
if amount >= laser_energy:
|
|
if !Audio.ac_collectible.is_playing() && $"%LaserOk".visible == false: Audio.play_sound(Audio.a_laser_ready,Audio.ac_collectible)
|
|
$"%LaserOk".visible = true
|
|
else:
|
|
$"%LaserOk".visible = false
|
|
|
|
|
|
func _on_Famira_died() -> void:
|
|
sg2083.state = sg2083.State.INACTIVE
|
|
SpeedrunTimer.timer_running = false
|
|
Game.can_pause = false
|
|
var tween = create_tween()
|
|
tween.set_trans(Tween.TRANS_CUBIC)
|
|
tween.tween_property($"%Camera", "global_position:x", famira.global_position.x - 128, 0.5)
|
|
tween.tween_interval(10.0)
|
|
tween.tween_callback(self, "_on_death_cooldown")
|
|
|
|
|
|
func _on_death_cooldown() -> void:
|
|
Game.can_pause = false
|
|
if Game.marathon_mode:
|
|
Game.current_level += 1
|
|
if Game.current_level > LevelData.marathon_end:
|
|
Fade.fade_out(Options.transition_speed_secs)
|
|
yield(Fade, "fade_finished")
|
|
SceneManager.change_scene(load("res://menus/marathon_results.tscn").instance())
|
|
else:
|
|
Game.change_map(LevelData.levels[Game.current_level].scene)
|
|
else:
|
|
Game.change_map(load("res://cutscenes/ending_future.tscn"))
|
|
|
|
func _notification(what: int) -> void:
|
|
match what:
|
|
NOTIFICATION_WM_FOCUS_OUT:
|
|
if !Game.can_pause:
|
|
Audio.pause_all(true)
|
|
get_tree().paused = true
|
|
NOTIFICATION_WM_FOCUS_IN:
|
|
if !Game.can_pause:
|
|
Audio.pause_all(false)
|
|
get_tree().paused = false
|