extends Node2D const zoomStart = 1.0 const zoomEnd = 0.97 const bloodStart = 0.2 const bloodEnd = 0.9 const timeParam = 1.7 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 ; InitWater(); if Dialogic.get_variable("ItIsDay") == "true": $Day.visible = true; $Night.visible = false; var sfxPath = "res://resources/audio/sfx/Mayak_day.ogg" get_tree().root.get_node("Root").SetSFXforBGM(sfxPath) GallerySingleton.AddBackground("Scene12"); else : $Day.visible = false; $Night.visible = true; var sfxPath = ""; var value = Dialogic.get_variable("TimelineSave"); if value == "Timeline_120_front" or value == "Timeline_before_141": sfxPath = "res://resources/audio/sfx/Rain Loop.ogg" else : sfxPath = "res://resources/audio/sfx/Mayak_night.ogg" get_tree().root.get_node("Root").SetSFXforBGM(sfxPath) var player = get_tree().root.get_node("/root/BgmScene/TweenBGMsfx/BGMStreamPlayer"); $Lightning.Init(1, player); GallerySingleton.AddBackground("Scene12_n"); isDead = false var dialogicNode = get_parent().get_parent().get_node("Game").get_child(0).get_child(0) dialogicNode.connect("dialogic_signal", self, "_begin_death") 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 (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); print(xOffset) 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 _begin_death(string): match string: "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; func bloodInterpolate(value): $death / Light2D.self_modulate.a = value; func InitWater(): SceneLoader.connect("on_scene_loaded", self, "WaterLoaded"); SceneLoader.load_scene("res://resources/customControls/Water/Scene12/Water.tscn"); func WaterLoaded(obj): if obj.path != "res://resources/customControls/Water/Scene12/Water.tscn": return ; add_child(obj.instance); move_child(obj.instance, 2) obj.instance.play("default"); SceneLoader.disconnect("on_scene_loaded", self, "WaterLoaded"); func InitForGallery()->Array: scale = Vector2(0.5, 0.5) InitGalleryWater(); $Day.visible = true; $Night.visible = false; if not GallerySingleton.HaveBackground("Scene12_n"): return []; return ["ui_day", "ui_night"] func SetSettings(setting): if setting == tr("ui_day"): $Day.visible = true; $Night.visible = false; else : $Day.visible = false; $Night.visible = true; var thread func InitGalleryWater(): if has_node("Water"): return if thread == null: thread = Thread.new(); thread.start(self, "GalleryWater"); func GalleryWater(): var water = load("res://resources/customControls/Water/Scene12/Water.tscn").instance(); add_child(water); move_child(water, 2) water.scale = Vector2(3, 3); water.play("default");