* 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
75 lines
1.7 KiB
GDScript
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) |