seeding-planets/entities/interactables/item_object/script/item_object.gd
Zacharie Guet ed7a8bcb6e gros dev pre proto
* Changement de l'UI, ajouts de l'inspecteur par carte et changement de police
* Ajout d'un semblant d'exploration
* Ajout de la sauvegarde des entités
* Restructuration mineure de l'arborescence
* Fix divers et réécriture des textes
2025-10-31 13:52:45 +01:00

75 lines
1.7 KiB
GDScript

extends Interactable
class_name ItemObject
const ITEM_AREA_WIDTH = 20
const ITEM_SPRITE_SIZE = 40.
const SPRITE_SCENE : PackedScene = preload("res://entities/interactables/item_object/item_object_sprite.tscn")
@export var item : Item :
set(_item):
item = _item
if object_sprite:
object_sprite.apply_texture_to_sprite(item.icon, ITEM_SPRITE_SIZE)
object_sprite.generate_particles(item.get_particles())
@onready var object_sprite : ItemObjectSprite = generate_sprite()
func _init(_item = null):
if _item:
item = _item
func _ready():
generate_collision(ITEM_AREA_WIDTH)
if item and object_sprite:
object_sprite.apply_texture_to_sprite(item.icon, ITEM_SPRITE_SIZE)
object_sprite.generate_particles(item.get_particles())
func pointer_text() -> String:
var name_suffix = ""
if item is Seed:
name_suffix = "Seed"
if item is Package:
name_suffix = "Package"
return item.name + (" " + name_suffix if name_suffix else "")
func interact_text():
return "Take"
func card_info() -> CardInfo:
return item.card_info()
func interact(player : Player) -> bool:
player.pick_item(item)
pickup_animation(player)
return true
func pickup_animation(player : Player):
available = false
var tween : Tween = get_tree().create_tween()
tween.tween_property(self, "position", player.position, 0.2)
tween.tween_callback(
func():
queue_free()
)
if object_sprite:
object_sprite.pickup_animation()
func generate_sprite() -> ItemObjectSprite:
var sprite_node = SPRITE_SCENE.instantiate() as ItemObjectSprite
add_child(sprite_node)
if item:
sprite_node.apply_texture_to_sprite(
item.icon,
ITEM_SPRITE_SIZE
)
return sprite_node
func save() -> EntityData:
return ItemObjectData.new(self)