72 lines
2.5 KiB
GDScript
72 lines
2.5 KiB
GDScript
extends Node2D
|
|
|
|
const fadeTime = 4.0
|
|
const labelDelayTime = 3.0
|
|
onready var isIncreasing = true
|
|
|
|
var bloodIncrement
|
|
var zoomIncrement
|
|
var currentZoom
|
|
var currentEnergy
|
|
var screenWidth;
|
|
var screenHeight;
|
|
var xOffset;
|
|
var yOffset
|
|
|
|
const zoomStart = 1.0
|
|
const zoomEnd = 0.97
|
|
const bloodStart = 0.2
|
|
const bloodEnd = 0.9
|
|
const timeParam = 1.7
|
|
|
|
func _ready():
|
|
Dialogic.set_variable("DoNotSave", 1)
|
|
bloodIncrement = (bloodEnd - bloodStart) / timeParam;
|
|
zoomIncrement = (zoomEnd - zoomStart) / timeParam;
|
|
currentZoom = zoomStart
|
|
isIncreasing = true
|
|
currentEnergy = 0
|
|
screenWidth = SettingsSingleton.GetCurrectScreenResolutionVector2().x
|
|
screenHeight = SettingsSingleton.GetCurrectScreenResolutionVector2().y
|
|
|
|
var endLabel = $ForScale / EndText
|
|
|
|
var localizedTextArray = LanguageLocalization.GetGameEndings()
|
|
var timeline = Dialogic.get_variable("TimelineSave")
|
|
var neededText = tr(localizedTextArray[timeline]);
|
|
endLabel.text = neededText
|
|
|
|
|
|
yield (get_tree().create_timer(labelDelayTime), "timeout")
|
|
$Tween.interpolate_property(endLabel, "modulate", Color(1, 1, 1, 0), Color(1, 1, 1, 1), fadeTime, Tween.TRANS_LINEAR, 0)
|
|
$Tween.start()
|
|
|
|
func _process(delta):
|
|
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
|