48 lines
1.3 KiB
GDScript
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()
|