This repository has been archived on 2026-05-26. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
magician/environment_manager.gd
T

79 lines
2.3 KiB
GDScript
Raw Normal View History

2025-07-08 17:40:13 +02:00
class_name EnvironmentManager
extends Node3D
2025-07-15 11:05:19 +02:00
# In gameplay order
var hand_associations: Dictionary[int, PlayerHandAssociation]
2025-07-08 17:40:13 +02:00
var _own_client_id: String
@export var own_player_hand: PlayerHand
2025-07-15 11:05:19 +02:00
## Positions for hands in 3-player game (starting from player 2).
@export var hand_markers_3: Array[Marker3D]
## Positions for hands in 4-player game (starting from player 2).
@export var hand_markers_4: Array[Marker3D]
## Positions for hands in 5-player game (starting from player 2).
@export var hand_markers_5: Array[Marker3D]
## Positions for hands in 6-player game (starting from player 2).
@export var hand_markers_6: Array[Marker3D]
2025-07-08 17:40:13 +02:00
@export var player_hand_scene: PackedScene
func _on_web_client_tcp_client_order_received(client_ids: Array[String]) -> void:
2025-07-15 11:05:19 +02:00
var marker_positions: Array[Marker3D]
match client_ids.size():
3:
marker_positions = hand_markers_3
4:
marker_positions = hand_markers_4
5:
marker_positions = hand_markers_5
6:
marker_positions = hand_markers_6
var own_index: int = client_ids.find(_own_client_id)
var new_ids: Array[String]
if own_index == 0:
print("ïndex was 0 " + _own_client_id)
# no change necessary!
new_ids = client_ids
elif own_index == client_ids.size() - 1:
print("index was last " + _own_client_id)
# you are at the end of the array
new_ids = client_ids
# take away own client id
new_ids.erase(_own_client_id)
# add it to the start of the array
new_ids.insert(0, _own_client_id)
else:
print("index was middle " + _own_client_id)
# you are somewhere in the middle of the array
# create array with you at the start
new_ids = client_ids.slice(own_index)
# add the rest of the original array
new_ids.append_array(client_ids.slice(0, own_index))
print("playing order! -- !")
print(new_ids)
2025-07-08 17:40:13 +02:00
for index in client_ids.size():
if client_ids[index] == _own_client_id:
2025-07-15 11:05:19 +02:00
hand_associations[index] = PlayerHandAssociation.new(
2025-07-08 17:40:13 +02:00
_own_client_id,
own_player_hand.get_path(),
)
else:
var hand: PlayerHand = player_hand_scene.instantiate()
# TODO
self.add_child(hand) # needs position!
2025-07-15 11:05:19 +02:00
hand_associations[index] = PlayerHandAssociation.new(
2025-07-08 17:40:13 +02:00
client_ids[index],
hand.get_path(),
)
func _on_web_client_tcp_received_client_id(client_id: String) -> void:
_own_client_id = client_id