One_Eleven_Android/scenes/BackgroundScenes/Death_fall.gd
2024-11-10 03:34:28 +03:00

156 lines
4.8 KiB
GDScript

extends Node2D
const zoomStart = 1.0
const zoomEnd = 0.97
const bloodStart = 0.2
const bloodEnd = 0.9
const timeParam = 1.7
const easterEggDelay = 13.0
var easterPresented
var countdownTime
var beginCountdown
var isDead
var bloodIncrement
var zoomIncrement
var currentZoom
var currentEnergy
var isIncreasing
var screenWidth;
var screenHeight;
var xOffset;
var yOffset
func _ready():
if not get_tree().root.has_node("Root"):
return ;
GallerySingleton.AddImage("Death_fall");
if (float(Dialogic.get_variable("Pink_Karma")) <= - 3.5):
easterPresented = true
var dialogicNode = get_parent().get_parent().get_node("Game").get_child(0).get_child(0)
dialogicNode.connect("dialogic_signal", self, "_frame_switch_listener")
beginCountdown = false
countdownTime = 0.0
isDead = false
bloodIncrement = (bloodEnd - bloodStart) / timeParam;
zoomIncrement = (zoomEnd - zoomStart) / timeParam;
currentZoom = zoomStart
isIncreasing = true
currentEnergy = 0
screenWidth = SettingsSingleton.GetCurrectScreenResolutionVector2().x
screenHeight = SettingsSingleton.GetCurrectScreenResolutionVector2().y
func _process(delta):
if (easterPresented):
if (countdownTime < easterEggDelay and beginCountdown):
countdownTime += delta
elif (countdownTime >= easterEggDelay and beginCountdown):
beginCountdown = false
easterEgg()
if (isDead):
if (isIncreasing):
if (currentEnergy <= bloodEnd):
currentEnergy += bloodIncrement * delta
currentZoom += zoomIncrement * delta
$death / Light2D.self_modulate.a = currentEnergy
xOffset = (1 - currentZoom) * ($death / Polygon2D.get_global_transform_with_canvas().origin.x) / (screenWidth);
yOffset = (1 - currentZoom) * (screenHeight - $death / Polygon2D.get_global_transform_with_canvas().origin.y) / screenHeight;
var offset = Vector2(xOffset, yOffset);
var tiling = Vector2(currentZoom, currentZoom)
$death / Polygon2D.material.set_shader_param("offset", offset)
$death / Polygon2D.material.set_shader_param("tiling", tiling);
else :
isIncreasing = false
if ( not isIncreasing):
if (currentEnergy >= bloodStart):
currentEnergy -= bloodIncrement * delta
currentZoom -= zoomIncrement * delta
$death / Light2D.self_modulate.a = currentEnergy
xOffset = (1 - currentZoom) * ($death / Polygon2D.get_global_transform_with_canvas().origin.x) / (screenWidth);
yOffset = (1 - currentZoom) * (screenHeight - $death / Polygon2D.get_global_transform_with_canvas().origin.y) / screenHeight;
var offset = Vector2(xOffset, yOffset);
$death / Polygon2D.material.set_shader_param("offset", offset)
$death / Polygon2D.material.set_shader_param("tiling", Vector2(currentZoom, currentZoom));
else :
isIncreasing = true
else :pass
func _frame_switch_listener(string):
match string:
"frame2":
$Sprite2.visible = false
$frames / Sprite2_1.visible = true
"frame3":
$frames / Sprite2_1.visible = false
$frames / Sprite2_2.visible = true
"frame4":
$frames / Sprite2_2.visible = false
$Sprite3.visible = true
"death":
$death.visible = true;
var tween = $death.get_child(0).get_child(0)
var light = $death.get_child(0)
tween.interpolate_method(self, "bloodInterpolate", 0.0, bloodStart, 1.0, Tween.TRANS_LINEAR, 0);
tween.start()
yield ($death.get_child(0).get_child(0), "tween_all_completed")
currentEnergy = bloodStart
$death.get_child(0).self_modulate.a = bloodStart
isDead = true;
if easterPresented:
beginCountdown = true
func bloodInterpolate(value):
$death / Light2D.self_modulate.a = value;
func easterEgg():
if Dialogic.get_variable("Killer") == "Pink":
var tween = $Tween
$Sprite4.self_modulate.a = 0
tween.interpolate_method(self, "interpolateEye", 0, 0.8, 4.5, Tween.TRANS_LINEAR, 0)
$Sprite4.visible = true
tween.start()
func interpolateEye(value):
$Sprite4.self_modulate.a = value
func InitForGallery()->Array:
scale = Vector2(0.5, 0.5)
$Sprite2.visible = true;
$frames.visible = false;
$Sprite3.visible = false;
$Sprite4.visible = false;
return ["ui_gallery_fall_1", "ui_gallery_fall_2", "ui_gallery_fall_3", "ui_gallery_fall_4"];
func SetSettings(setting):
if setting == tr("ui_gallery_fall_1"):
$Sprite2.visible = true;
$frames.visible = false;
$Sprite3.visible = false;
$Sprite4.visible = false;
elif setting == tr("ui_gallery_fall_2"):
$Sprite2.visible = false;
$frames.visible = true;
$frames / Sprite2_1.visible = true;
$frames / Sprite2_2.visible = false;
$Sprite3.visible = false;
$Sprite4.visible = false;
elif setting == tr("ui_gallery_fall_3"):
$Sprite2.visible = false;
$frames.visible = true;
$frames / Sprite2_1.visible = false;
$frames / Sprite2_2.visible = true;
$Sprite3.visible = false;
$Sprite4.visible = false;
elif setting == tr("ui_gallery_fall_4"):
$Sprite2.visible = false;
$frames.visible = false;
$Sprite3.visible = true;
$Sprite4.visible = false;