Files
seeding-planets/gui/game/pass_day/scripts/pass_day.gd
Zacharie Guet 83d462f2f4 changement du scene manager, amélioration du cockpit et autres
* refonte du scene manager
* refonte du audio manager
* premier rework des plantes
* nettoyage des dossiers/fichiers
* renommage de planète en region
* fix des run
2026-01-23 18:06:27 +01:00

115 lines
2.9 KiB
GDScript

@tool
extends Control
class_name PassDay
const BLUR_STRENGTH = 10
const BLUR_MIX_PERCENTAGE = 0.8
const TIME_BY_ENERGY = 0.3
const TIME_MARGIN = 0.2
signal max_energy_reached()
signal animation_appeared
signal animation_disappeared
@export_tool_button("Pass Day", "Callable") var pass_day_action = pass_day_animation
@export_tool_button("Appear", "Callable") var appear_action = appear
@export var from_energy = 0
@export var max_energy = 3
var current_energy = 0
var time_since_recharging = 0.
var recharging = false
var is_animation_appeared := false
var is_animation_disappeared := false
func _ready():
hide()
setup_energy_values()
%PassDayInfo.hide()
func _process(delta):
if recharging:
time_since_recharging += delta
var new_current_energy = from_energy + roundi(time_since_recharging/TIME_BY_ENERGY)
if new_current_energy > max_energy:
max_energy_reached.emit()
elif (new_current_energy != current_energy):
%EnergyPassDayInfo.update(new_current_energy, max_energy, true)
current_energy = new_current_energy
func setup_energy_values():
if not Engine.is_editor_hint():
from_energy = GameInfo.game_data.player_data.energy
max_energy = GameInfo.game_data.player_data.max_energy
current_energy = from_energy
func pass_day_animation():
setup_energy_values()
%ChargeCount.text = tr('%d_CHARGE_LEFT') % GameInfo.game_data.current_region_data.charges
is_animation_appeared=false
is_animation_disappeared=false
%EnergyPassDayInfo.update(from_energy, max_energy, false)
await appear()
is_animation_appeared = true
animation_appeared.emit()
await get_tree().create_timer(TIME_MARGIN).timeout
recharging = true
time_since_recharging = 0.
await max_energy_reached
await get_tree().create_timer(TIME_MARGIN).timeout
await disappear()
is_animation_disappeared=true
animation_disappeared.emit()
recharging = false
func appear():
show()
add_tween(
"blur_mix_percentage",
%Blur,
BLUR_MIX_PERCENTAGE,
0.5
)
await add_tween(
"blur_strength",
%Blur,
BLUR_STRENGTH,
0.5
).finished
await %PassDayInfoAnimationPlayer.appear()
func disappear():
await %PassDayInfoAnimationPlayer.disappear()
add_tween(
"blur_mix_percentage",
%Blur,
0.0,
0.5
)
await add_tween(
"blur_strength",
%Blur,
0.1,
0.5
).finished
hide()
func add_tween(
property : String,
target: Node,
value : Variant,
seconds: float = 1.,
transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_LINEAR
) -> Tween:
var tween : Tween = get_tree().create_tween()
tween.set_trans(transition_type)
tween.tween_property(target, property, value, seconds)
tween.set_pause_mode(Tween.TWEEN_PAUSE_PROCESS)
return tween