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