diff options
| author | nokoe <nokoe@mailbox.org> | 2024-06-22 22:35:34 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-06-23 19:31:11 +0200 | 
| commit | e165bdd15b04bca58ac3bc93bdd935bdc32e8786 (patch) | |
| tree | 92a8628c81f65d23e58dda20345c3ac7a45b60d8 /client/scripts | |
| parent | f84dc8d1d31fe183559ce3a54acf8d8c4825812a (diff) | |
| download | hurrycurry-e165bdd15b04bca58ac3bc93bdd935bdc32e8786.tar hurrycurry-e165bdd15b04bca58ac3bc93bdd935bdc32e8786.tar.bz2 hurrycurry-e165bdd15b04bca58ac3bc93bdd935bdc32e8786.tar.zst | |
default item with label
Diffstat (limited to 'client/scripts')
| -rw-r--r-- | client/scripts/item.gd | 30 | ||||
| -rw-r--r-- | client/scripts/player.gd | 20 | 
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 | 
