Files
seeding-planets/entities/interactables/energy_cell/scripts/energy_cell.gd
Zacharie Guet 22b753c6a9 Dev 0.1
* Structure de l'histoire principale
* Line sur le perso principal
* Agrandissement de la zone de détection des cellules
* Ajout du spray de Talion (+1 points de plante de base)
* Ajout de feedback sur l'usage des cellules d'énergie
2026-07-06 23:05:39 +02:00

61 lines
1.5 KiB
GDScript

extends Interactable
class_name EnergyCell
const GIVEN_ENERGY = 1
@export var used = false : set = set_used
func _ready():
set_used()
%EnergyParticle.visible = false
func set_used(v = used):
used = v
available = not used
if is_node_ready():
%AnimationPlayer.play("squeeze")
await get_tree().create_timer(0.2).timeout
%SpriteOff.visible = used
%SpriteOn.visible = not used
func pointer_text() -> String:
if used:
return tr("%s_USED") % tr(default_info_title)
return default_info_title
func can_interact(p : Player) -> bool:
return p.data.energy < p.data.max_energy
func interact(p : Player) -> bool:
if not used and region:
used = true
available = false
await spawn_energy_particle()
p.data.energy += GIVEN_ENERGY
interacted.emit(p)
region.data.used_objects.append(name)
return true
return false
func spawn_energy_particle():
var screen_size = get_viewport().get_visible_rect().size
%EnergyParticle.visible = true
%EnergyParticle.position = (
(global_position - region.camera.global_position) * get_viewport().get_camera_2d().zoom
+ ((screen_size) / 2)
)
var tween = create_tween()
tween.set_trans(Tween.TransitionType.TRANS_SPRING)
tween.tween_property(%EnergyParticle,"position",Vector2(100,100),1.)
await tween.finished
AudioManager.play_sfx("Recharge1")
%EnergyParticle.visible = false