aboutsummaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authornokoe <nokoe@mailbox.org>2024-06-22 22:35:34 +0200
committermetamuffin <metamuffin@disroot.org>2024-06-23 19:31:11 +0200
commite165bdd15b04bca58ac3bc93bdd935bdc32e8786 (patch)
tree92a8628c81f65d23e58dda20345c3ac7a45b60d8 /client
parentf84dc8d1d31fe183559ce3a54acf8d8c4825812a (diff)
downloadhurrycurry-e165bdd15b04bca58ac3bc93bdd935bdc32e8786.tar
hurrycurry-e165bdd15b04bca58ac3bc93bdd935bdc32e8786.tar.bz2
hurrycurry-e165bdd15b04bca58ac3bc93bdd935bdc32e8786.tar.zst
default item with label
Diffstat (limited to 'client')
-rw-r--r--client/scripts/item.gd30
-rw-r--r--client/scripts/player.gd20
2 files changed, 43 insertions, 7 deletions
diff --git a/client/scripts/item.gd b/client/scripts/item.gd
new file mode 100644
index 00000000..c3fba434
--- /dev/null
+++ b/client/scripts/item.gd
@@ -0,0 +1,30 @@
+class_name Item
+extends Node3D
+
+var owned_by: Node3D
+
+func _init(idx: int, owned_by_: Node3D):
+ match Multiplayer.item_names[idx]:
+ var t:
+ add_child(load("res://models/prefabs/map/bag.tscn").instantiate())
+ var mesh = MeshInstance3D.new()
+ var text = TextMesh.new()
+ var mat = ORMMaterial3D.new()
+ text.text = t
+ text.font = SystemFont.new()
+ text.depth = 0
+ mesh.mesh = text
+ mesh.position.y = 0.5
+ mesh.scale = Vector3(3, 3, 3)
+ mat.billboard_mode = mat.BILLBOARD_ENABLED
+ mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
+ text.material = mat
+ add_child(mesh)
+ owned_by = owned_by_
+
+func _ready():
+ position = owned_by.global_position
+
+func _process(delta):
+ position = lerp(position, owned_by.global_position, delta * 30.0)
+
diff --git a/client/scripts/player.gd b/client/scripts/player.gd
index 6e07c3aa..a304fe29 100644
--- a/client/scripts/player.gd
+++ b/client/scripts/player.gd
@@ -21,7 +21,7 @@ func update_position(new_position: Vector2, new_rotation: float):
position_ = new_position
rotation.y = new_rotation
-func take_item(tile: FullTile):
+func take_item(tile: Floor):
if hand != null:
push_error("already holding an item")
var i = tile.take_item()
@@ -29,9 +29,15 @@ func take_item(tile: FullTile):
push_error("tile is null")
hand = i
-func put_item(tile: FullTile):
- var i = hand
- if i == null:
- push_error("holding nothing")
- i = null
- tile.put_item(hand)
+func put_item(tile: Floor):
+ var i = remove_item()
+ tile.put_item(i)
+
+func _process(delta):
+ _anim_angle = fmod(_anim_angle + delta, TAU)
+ hand_base.position.y = HAND_BASE_POSITION.y + 0.05 * sin(_anim_angle * 3)
+ position_anim = lerp(position_anim, position_, delta * 10)
+ rotation_anim = lerp_angle(rotation_anim, rotation_, delta * 10)
+ position.x = position_anim.x
+ position.z = position_anim.y
+ rotation.y = rotation_anim