Files
Factory47/Objects/Scripts/IItemSlot.gd

48 lines
1.3 KiB
GDScript

extends StaticBody3D
@export var isFirstPlace = true
func _ready() -> void:
initialize_material.call_deferred()
func initialize_material() -> void:
$MeshInstance3D.material_override = $MeshInstance3D.material_override.duplicate()
$MeshInstance3D.material_override.albedo_color = Color("00000041")
if isFirstPlace:
placeItem("base:air")
isFirstPlace = false
func startHighlight():
$MeshInstance3D.material_override.albedo_color = Color("00FF0041")
func stopHighlight():
$MeshInstance3D.material_override.albedo_color = Color("00000041")
func placeItem(ItemID: String):
var segments = ItemID.split(":")
var itemResource: ItemData = load("res://GameShit/ItemHandlers/{namespace}/{id}.tres".format({"namespace": segments[0], "id": segments[1]}))
if itemResource == null:
itemResource = load("res://GameShit/ItemHandlers/base/air.tres")
if "texture" in itemResource:
$"..".ItemTexture = itemResource.texture
$"..".ItemID = itemResource.ID
isFirstPlace = false
func removeItem():
$"..".ItemTexture = null
$"..".ItemID = "base:air"
func _interact_press(isRight):
if !isRight:
if $"..".ItemID == "base:air":
placeItem(MainGame.currentHeldItemID)
InventoryBus.removeHeldItem.emit()
elif isRight:
if $"..".ItemID != "base:air":
InventoryBus.givePlayerItem.emit($"..".ItemID)
removeItem()