* 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
61 lines
1.5 KiB
GDScript
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
|