extends Node2D const fadingTime = 0.5 onready var arrowCursor = preload("res://resources/cursors/arrow2.webp"); func _ready(): if not get_tree().root.has_node("Root"): return ; GallerySingleton.AddBackground("Panorama") if Dialogic.get_variable("CandlesOn") == "1": $Candles.visible = true else : $Candles.visible = false if Dialogic.get_variable("LightsOn") == "1": $Candles / Day.visible = true $Candles / Night.visible = false else : $Candles / Day.visible = false $Candles / Night.visible = true $Background.texture = load("res://resources/graphics/backgrounds/panorama/Night/combined.webp"); var chars = ["grayPanorama", "blackPanorama", "redPanorama", "greenPanorama", "pinkPanorama", "blue_mPanorama", "whitePanorama", "purplePanorama"] for i in chars: if Dialogic.get_variable(i) == "1": var string = i.replace("Panorama", "") AddChar(true, "add_" + string) var dialogicNode = get_parent().get_parent().get_node("Game").get_child(0).get_child(0) dialogicNode.connect("dialogic_signal", self, "_lights_listener") var panoPosition = int(Dialogic.get_variable("PanoramaPosition")) position.x = panoPosition; if get_tree().root.get_node("Root/AlternativeChoices").get_child_count() != 0: var alt = get_tree().root.get_node("Root/AlternativeChoices").get_child(0); alt.get_node("SpriteButtons").position.x = panoPosition; alt.get_node("Labels").position.x = panoPosition; func _lights_listener(string): match string: "lights_on": Dialogic.set_variable("LightsOn", 1) $Background.texture = load("res://resources/graphics/backgrounds/panorama/Day/combined.webp"); "lights_off": Dialogic.set_variable("LightsOn", 0) $Background.texture = load("res://resources/graphics/backgrounds/panorama/Night/combined.webp"); "add_white": AddChar(s("Is_White_Dead"), string) "remove_white": RemoveChar(string) "add_black": AddChar(s("Is_Black_Dead"), string) "remove_black": RemoveChar(string) "add_blue_m": AddChar(s("Is_Blue_M_Dead"), string) "remove_blue_m": RemoveChar(string) "add_gray": AddChar(s("Is_Gray_Dead"), string) "remove_gray": RemoveChar(string) "add_green": AddChar(s("Is_Green_Dead"), string) "remove_green": RemoveChar(string) "add_pink": AddChar(s("Is_Pink_Dead"), string) "remove_pink": RemoveChar(string) "add_purple": AddChar(s("Is_Purple_Dead"), string) "remove_purple": RemoveChar(string) "add_red": AddChar(s("Is_Red_Dead"), string) "remove_red": RemoveChar(string) "candles_on": $Candles.modulate = Color(1, 1, 1, 0) $Candles.visible = true Dialogic.set_variable("CandlesOn", 1) $Tween.interpolate_property($Candles, "modulate", Color(1, 1, 1, 0), Color(1, 1, 1, 1), fadingTime, Tween.TRANS_LINEAR, 0) $Tween.start() "candles_off": $TweenOut.interpolate_property($Candles, "modulate", Color(1, 1, 1, 1), Color(1, 1, 1, 0), fadingTime, Tween.TRANS_LINEAR, 0) $TweenOut.start() Dialogic.set_variable("CandlesOn", 0) "add_all120": AddChar(s("Is_Red_Dead"), "add_red") AddChar(s("Is_White_Dead"), "add_white") AddChar(s("Is_Purple_Dead"), "add_purple") AddChar(s("Is_Blue_M_Dead"), "add_blue_m") AddChar(s("Is_Pink_Dead"), "add_pink") AddChar(s("Is_Green_Dead"), "add_green") AddChar(s("Is_Black_Dead"), "add_black") AddChar(s("Is_Gray_Dead"), "add_gray") "add_all140": AddChar(s("Is_Red_Dead"), "add_red") AddChar(s("Is_White_Dead"), "add_white") "remove_all120": var chars = [] if Dialogic.get_variable("redPanorama") == "1": chars.push_back("red") call_deferred("deferredDialogic", "redPanorama", 0) if Dialogic.get_variable("whitePanorama") == "1": chars.push_back("white") call_deferred("deferredDialogic", "whitePanorama", 0) if Dialogic.get_variable("purplePanorama") == "1": chars.push_back("purple") call_deferred("deferredDialogic", "purplePanorama", 0) if Dialogic.get_variable("blue_mPanorama") == "1": chars.push_back("blue_m") call_deferred("deferredDialogic", "blue_mPanorama", 0) if Dialogic.get_variable("pinkPanorama") == "1": chars.push_back("pink") call_deferred("deferredDialogic", "pinkPanorama", 0) if Dialogic.get_variable("greenPanorama") == "1": chars.push_back("green") call_deferred("deferredDialogic", "greenPanorama", 0) if Dialogic.get_variable("blackPanorama") == "1": chars.push_back("black") call_deferred("deferredDialogic", "blackPanorama", 0) if Dialogic.get_variable("grayPanorama") == "1": chars.push_back("gray") call_deferred("deferredDialogic", "grayPanorama", 0) for i in chars: $Timer.set_wait_time(0.05) $Timer.set_one_shot(true) $Timer.start() yield ($Timer, "timeout") $TweenOut.interpolate_property($removable.get_node(i), "modulate", Color(1, 1, 1, 1), Color(1, 1, 1, 0), fadingTime, Tween.TRANS_LINEAR, 0) $TweenOut.start() "remove_all140": var chars = [] if Dialogic.get_variable("redPanorama") == "1": chars.push_back("red") call_deferred("deferredDialogic", "redPanorama", 0) if Dialogic.get_variable("whitePanorama") == "1": chars.push_back("white") call_deferred("deferredDialogic", "whitePanorama", 0) for i in chars: $Timer.set_wait_time(0.1) $Timer.set_one_shot(true) $Timer.start() yield ($Timer, "timeout") $TweenOut.interpolate_property($removable.get_node(i), "modulate", Color(1, 1, 1, 1), Color(1, 1, 1, 0), fadingTime, Tween.TRANS_LINEAR, 0) $TweenOut.start() "invisible_all": for i in $removable.get_children(): i.visible = false func deferredDialogic(string, value): Dialogic.set_variable(string, value) func s(variable:String)->bool: return Dialogic.get_variable(variable) == "0"; func AddChar(isAlive:bool, string:String): if not isAlive: return var charNode var string2 = string.replace("add_", "") var stringForDialogic = string2 + "Panorama" deferredDialogic(stringForDialogic, 1) charNode = $removable.get_node(string2) charNode.modulate = Color(1, 1, 1, 0) charNode.visible = true $Tween.interpolate_property(charNode, "modulate", Color(1, 1, 1, 0), Color(1, 1, 1, 1), fadingTime, Tween.TRANS_LINEAR, 0) $Tween.start() func RemoveChar(string): var charNode var string2 = string.replace("remove_", "") var stringForDialogic = string2 + "Panorama" if Dialogic.get_variable(stringForDialogic) == "1": charNode = $removable.get_node(string2) $TweenOut.interpolate_property(charNode, "modulate", Color(1, 1, 1, 1), Color(1, 1, 1, 0), fadingTime, Tween.TRANS_LINEAR, 0) $TweenOut.start() func _on_TweenOut_tween_completed(object, _key): object.visible = false onready var leftFire:AudioStreamPlayer = $LeftFireEffect; onready var rightRain:AudioStreamPlayer = $RightRainEffect func UpdateContainerSound(x:int): leftFire.volume_db = LeftVolume(x); rightRain.volume_db = RightVolume(x); func LeftVolume(x:int)->float: return 0.013 * x - 13; func RightVolume(x:int)->float: return - 0.0196 * x - 36; func _exit_tree(): Input.set_custom_mouse_cursor(arrowCursor) Dialogic.set_variable("PanoramaPosition", "-460"); var isGallery:bool = false; func InitForGallery()->Array: $Background.scale = Vector2(0.5, 0.5) $Candles.scale = Vector2(0.5, 0.5) $Clock.scale = Vector2(0.5, 0.5) $removable.scale = Vector2(0.5, 0.5) FUCKVisibile(); isGallery = true; $MovingControls.visible = true; return ["ui_gallery_light", "ui_gallery_candles", "ui_gallery_people"] var galleryIsDay = true; func SetToggleSettings(button): var text = button.text; var state = button.pressed; if text == tr("ui_gallery_light"): if state == true: $Background.texture = load("res://resources/graphics/backgrounds/panorama/Night/combined.webp"); galleryIsDay = false; if $Candles / Day.visible: $Candles / Night.visible = true; $Candles / Day.visible = false; else : $Background.texture = load("res://resources/graphics/backgrounds/panorama/Day/combined.webp"); galleryIsDay = true; if $Candles / Night.visible: $Candles / Night.visible = false; $Candles / Day.visible = true; elif text == tr("ui_gallery_candles"): if state == true: if galleryIsDay: $Candles / Day.visible = true; $Candles / Night.visible = false; $Candles / Lights.visible = true; else : $Candles / Day.visible = false; $Candles / Night.visible = true; $Candles / Lights.visible = true; else : $Candles / Day.visible = false; $Candles / Night.visible = false; $Candles / Lights.visible = false; elif text == tr("ui_gallery_people"): for i in $removable.get_children(): i.visible = state; func FUCKVisibile(): var timer = Timer.new(); add_child(timer); timer.set_wait_time(0.1); timer.set_one_shot(true); timer.start(); timer.connect("timeout", self, "FUCKFUCK", [timer]); func FUCKFUCK(timer): $Candles / Lights.call_deferred("set_visible", false) $Candles.call_deferred("set_visible", true); $Candles / Day.call_deferred("set_visible", false); $Candles / Night.call_deferred("set_visible", false); timer.disconnect("timeout", self, "FUCKFUCK") remove_child(timer); var cursorRight = preload("res://resources/cursors/man_right.webp") var cursorLeft = preload("res://resources/cursors/man_left.webp") var movingLeft = false; var movingRight = false; const movingSpeed = 310; const edgePosition = - 920; func _on_LeftMove_mouse_entered(): if position.x < 0: Input.set_custom_mouse_cursor(cursorLeft) movingLeft = true func _on_LeftMove_mouse_exited(): Input.set_custom_mouse_cursor(arrowCursor) movingLeft = false func _on_RightMove_mouse_entered(): if position.x > edgePosition: Input.set_custom_mouse_cursor(cursorRight, 0, Vector2(50, 0)) movingRight = true func _on_RightMove_mouse_exited(): Input.set_custom_mouse_cursor(arrowCursor) movingRight = false func _process(delta): if not isGallery: return ; if position.x == 0: if $MovingControls / LeftMove.visible: $MovingControls / LeftMove.visible = false; _on_LeftMove_mouse_exited(); elif position.x == edgePosition: if $MovingControls / RightMove.visible: $MovingControls / RightMove.visible = false; _on_RightMove_mouse_exited(); else : if not $MovingControls / LeftMove.visible: $MovingControls / LeftMove.visible = true if not $MovingControls / RightMove.visible: $MovingControls / RightMove.visible = true; if movingLeft: var value = delta * movingSpeed; position.x += value $MovingControls.position.x -= value if position.x > 0: position.x = 0 movingLeft = false elif movingRight: var value = delta * movingSpeed; position.x -= value $MovingControls.position.x += value if position.x < edgePosition: position.x = edgePosition movingRight = false