diff options
Diffstat (limited to 'client/scripts/tiles')
| -rw-r--r-- | client/scripts/tiles/floor.gd | 27 | 
1 files changed, 27 insertions, 0 deletions
| diff --git a/client/scripts/tiles/floor.gd b/client/scripts/tiles/floor.gd index ba09d40b..0c4af8a0 100644 --- a/client/scripts/tiles/floor.gd +++ b/client/scripts/tiles/floor.gd @@ -2,6 +2,8 @@ class_name Floor  extends Node3D  var base = Node3D.new() +var item: Item = null +var item_base: Node3D  enum Facing {  	NEG_Y = 0, @@ -16,6 +18,11 @@ func _init(rename: String, _neighbors: Array):  	base.position += Vector3(0.5, 0, 0.5)  	add_child(base)  	self.name = rename +	var item_base_ = Node3D.new() +	item_base_.position = interact_target() +	item_base_.name = "ItemBase" +	base.add_child(item_base_) +	item_base = item_base_  func turn_facing(facing: Facing):  	base.rotate_y(facing * 0.5 * PI + PI) @@ -24,3 +31,23 @@ func tile_name(idx):  	if idx == null:  		return null  	return Multiplayer.tile_names[idx] + + +# defines where items go when interacting +static func interact_target() -> Vector3: +	return Vector3(0, 0, 0) + +# actions when interacting, e.g. animations +func interact(): +	pass + +func put_item(i: Item): +	if item != null: +		push_error("already holding an item") +	item = i +	i.owned_by = item_base + +func take_item() -> Item: +	var i = item +	item = null +	return i | 
