143 lines
4.9 KiB
GDScript3
143 lines
4.9 KiB
GDScript3
|
class_name EndingManager extends Node
|
||
|
|
||
|
@export var roundManager : RoundManager
|
||
|
@export var pp : WorldEnvironment
|
||
|
@export var animator_cam : AnimationPlayer
|
||
|
@export var animator_backdrop : AnimationPlayer
|
||
|
@export var cam : CameraManager
|
||
|
@export var blockout : Array[Node3D]
|
||
|
@export var viewblocker : ColorRect
|
||
|
@export var animator_viewblocker : AnimationPlayer
|
||
|
@export var animator_streetlights : AnimationPlayer
|
||
|
@export var music_ending : AudioStreamPlayer2D
|
||
|
@export var dia : DialogueEnding
|
||
|
@export var label_congrats : Label
|
||
|
@export var label_array : Array[Label]
|
||
|
@export var uiparent : Control
|
||
|
@export var animator_congrats : AnimationPlayer
|
||
|
@export var animator_cash : AnimationPlayer
|
||
|
@export var fireArray : Array[TextFire]
|
||
|
@export var speaker_load : AudioStreamPlayer2D
|
||
|
@export var speaker_ambience : AudioStreamPlayer2D
|
||
|
@export var cntrl_ambience : SpeakerController
|
||
|
@export var cntrl_endingmusic : SpeakerController
|
||
|
@export var animator_anykey : AnimationPlayer
|
||
|
@export var animator_pan : AnimationPlayer
|
||
|
var waitingForInput = false
|
||
|
|
||
|
func _input(event):
|
||
|
if event is InputEventKey and event.pressed:
|
||
|
if (waitingForInput):
|
||
|
ExitGame()
|
||
|
waitingForInput = false
|
||
|
|
||
|
func BeginEnding():
|
||
|
cam.moving = false
|
||
|
animator_pan.play("pan to brief")
|
||
|
music_ending.play()
|
||
|
AmbienceFade()
|
||
|
await get_tree().create_timer(10.67, false).timeout
|
||
|
viewblocker.visible = true
|
||
|
animator_viewblocker.play("snap")
|
||
|
animator_pan.stop()
|
||
|
SetupEnding()
|
||
|
FinalScore()
|
||
|
for l in label_array: l.visible = false
|
||
|
label_congrats.visible = false
|
||
|
await get_tree().create_timer(1.2, false).timeout
|
||
|
animator_viewblocker.play("fade out")
|
||
|
await get_tree().create_timer(6, false).timeout
|
||
|
#SHOW UI
|
||
|
label_congrats.visible = true
|
||
|
animator_congrats.play("wobble it")
|
||
|
animator_cash.play("wobble it")
|
||
|
dia.ShowText_Forever(glob_text_congratulations)
|
||
|
await get_tree().create_timer(2, false).timeout
|
||
|
for i in fireArray:
|
||
|
speaker_load.pitch_scale = randf_range(.95, 1)
|
||
|
speaker_load.play()
|
||
|
await get_tree().create_timer(.15, false).timeout
|
||
|
await get_tree().create_timer(.5, false).timeout
|
||
|
for i in range(fireArray.size()):
|
||
|
if (i == 5):
|
||
|
await get_tree().create_timer(.4, false).timeout
|
||
|
fireArray[i].changed = true
|
||
|
fireArray[i].speaker.pitch_scale = .15
|
||
|
fireArray[i].Fire()
|
||
|
await get_tree().create_timer(.33, false).timeout
|
||
|
await get_tree().create_timer(3, false).timeout
|
||
|
GetInput()
|
||
|
|
||
|
func GetInput():
|
||
|
animator_anykey.play("flicker")
|
||
|
await get_tree().create_timer(.8, false).timeout
|
||
|
waitingForInput = true
|
||
|
|
||
|
func ExitGame():
|
||
|
animator_viewblocker.play("fade in")
|
||
|
cntrl_endingmusic.FadeOut()
|
||
|
cntrl_ambience.fadeDuration = 3
|
||
|
cntrl_ambience.FadeOut()
|
||
|
isActive = false
|
||
|
await get_tree().create_timer(4, false).timeout
|
||
|
get_tree().quit()
|
||
|
|
||
|
var isActive = true
|
||
|
func AmbienceFade():
|
||
|
await get_tree().create_timer(55, false).timeout
|
||
|
if (isActive):
|
||
|
cntrl_ambience.SnapVolume(false)
|
||
|
speaker_ambience.play()
|
||
|
cntrl_ambience.FadeIn()
|
||
|
|
||
|
func SetupEnding():
|
||
|
await get_tree().create_timer(.1, false).timeout
|
||
|
uiparent.visible = true
|
||
|
for b in blockout: b.visible = true
|
||
|
pp.environment.adjustment_brightness = 5.68
|
||
|
pp.environment.adjustment_contrast = 1.3
|
||
|
pp.environment.adjustment_saturation = .26
|
||
|
cam.moving = false
|
||
|
cam.cam.fov = 60
|
||
|
animator_streetlights.play("looping")
|
||
|
animator_backdrop.play("loop exterior")
|
||
|
animator_cam.play("camera loop car")
|
||
|
|
||
|
var glob_text_congratulations
|
||
|
func FinalScore():
|
||
|
var playername = roundManager.playerData.playername
|
||
|
var shots_fired = roundManager.playerData.stat_shotsFired
|
||
|
var shells_ejected = roundManager.playerData.stat_shellsEjected
|
||
|
var doors_kicked = roundManager.playerData.stat_doorsKicked
|
||
|
var cigarettes_smoked = roundManager.playerData.stat_cigSmoked
|
||
|
var ml_of_beer_drank = roundManager.playerData.stat_beerDrank
|
||
|
var max_cash = 70000
|
||
|
|
||
|
var cancer_bills = cigarettes_smoked * 220
|
||
|
var new_leg_bones_price = doors_kicked * 1000
|
||
|
var DUI_fine = ml_of_beer_drank * 1.5
|
||
|
var total_cash = max_cash - cancer_bills - DUI_fine
|
||
|
if (doors_kicked > 2): total_cash -= new_leg_bones_price
|
||
|
if (total_cash < 0): total_cash = 0
|
||
|
|
||
|
#if (playername == "sex"): total_cash = 69
|
||
|
#if (playername == "leet"): total_cash = 1337
|
||
|
#if (playername == "snoop" or playername == "weed" or playername == "kush"): total_cash = 420
|
||
|
|
||
|
var text_congratulations = "CONGRATULATIONS, " + playername + "!"
|
||
|
var text_shotsFired = "shots fired ........ " + str(shots_fired)
|
||
|
var text_shellsEjected = "shells ejected ..... " + str(shells_ejected)
|
||
|
var text_doorsKicked = "doors kicked ....... " + str(doors_kicked)
|
||
|
var text_cigSmoked = "cigarettes smoked .. " + str(cigarettes_smoked)
|
||
|
var text_beerDrank = "ml of beer drank ... " + str(ml_of_beer_drank)
|
||
|
var text_totalcash = "total cash: " + str(total_cash) + " $"
|
||
|
|
||
|
glob_text_congratulations = text_congratulations
|
||
|
|
||
|
label_array[0].text = text_shotsFired
|
||
|
label_array[1].text = text_shellsEjected
|
||
|
label_array[2].text = text_doorsKicked
|
||
|
label_array[3].text = text_cigSmoked
|
||
|
label_array[4].text = text_beerDrank
|
||
|
label_array[5].text = text_totalcash
|