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; get_tree().root.get_node("Root").StopSFX(); GallerySingleton.AddBackground("Scene7"); else : $Day.visible = false; $Night.visible = true; var sfxPath = "res://resources/audio/sfx/Rain Loop.ogg" get_tree().root.get_node("Root").SetSFXforBGM(sfxPath) var player = get_tree().root.get_node("/root/BgmScene/TweenBGMsfx/BGMStreamPlayer"); $Lightning.Init(2, player); GallerySingleton.AddBackground("Scene7_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(): var _temp = SceneLoader.connect("on_scene_loaded", self, "WaterLoaded"); if Dialogic.get_variable("ItIsDay") == "true": SceneLoader.load_scene("res://resources/customControls/Water/Scene7/WaterDay.tscn"); else : SceneLoader.load_scene("res://resources/customControls/Water/Scene7/WaterNight.tscn"); func WaterLoaded(obj): if obj.path != "res://resources/customControls/Water/Scene7/WaterDay.tscn" and obj.path != "res://resources/customControls/Water/Scene7/WaterNight.tscn": return ; if Dialogic.get_variable("ItIsDay") == "true": $Day.add_child(obj.instance); obj.instance.z_index = 1; else : $Night.add_child(obj.instance); obj.instance.z_index = 3; obj.instance.play("default"); SceneLoader.disconnect("on_scene_loaded", self, "WaterLoaded"); var galleryWaterState = "" var thread:Thread; func InitForGallery()->Array: scale = Vector2(0.5, 0.5) z_index = - 1; InitGalleryWater("day"); if not GallerySingleton.HaveBackground("Scene7_n"): return []; return ["ui_day", "ui_night"] func SetSettings(setting): if setting == tr("ui_day"): $Day.visible = true; $Night.visible = false; InitGalleryWater("day"); else : $Day.visible = false; $Night.visible = true; InitGalleryWater("night"); func InitGalleryWater(state): galleryWaterState = state; if galleryWaterState == "day": if $Day.has_node("Water"): return ; else : if $Night.has_node("Water"): return ; if thread == null: thread = Thread.new(); thread.start(self, "GalleryWater", galleryWaterState); func GalleryWater(state): if state == "day": var instance = load("res://resources/customControls/Water/Scene7/WaterDay.tscn").instance() call_deferred("GalleryAddWater"); return instance; else : print("aa") var instance = load("res://resources/customControls/Water/Scene7/WaterNight.tscn").instance() call_deferred("GalleryAddWater"); return instance; func GalleryAddWater(): var instance = thread.wait_to_finish(); if galleryWaterState == "day": $Day.add_child(instance); instance.z_index = 1; instance.play("default"); else : $Night.add_child(instance); instance.z_index = 3; instance.play("default");