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 |