One_Eleven_Android/scripts/backround_scenes_scripts/Scene7.gd
2024-11-10 03:34:28 +03:00

186 lines
5.4 KiB
GDScript

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");