tcg/main.gd
2025-01-11 10:07:37 +07:00

76 lines
2.3 KiB
GDScript

extends Node
const PORT = 25565
const MAX_CONNECTIONS = 20
var counter = 0
@onready var before_connect_container = get_node("BeforeConnect") as Container
@onready var host_text_edit = get_node("%HostTextEdit") as TextEdit
@onready var connect_button = get_node("%ConnectButton") as Button
@onready var after_connect_container = get_node("%AfterConnect") as Container
@onready var counter_label = get_node("%CounterLabel") as Label
@onready var decrement_button = get_node("%DecrementButton") as Button
@onready var increment_button = get_node("%IncrementButton") as Button
func _ready() -> void:
if OS.has_feature("dedicated_server"):
print("Starting dedicated server")
var peer = ENetMultiplayerPeer.new()
var err = peer.create_server(PORT, MAX_CONNECTIONS)
if err:
print(err)
multiplayer.multiplayer_peer = peer
multiplayer.peer_connected.connect(_on_player_connected)
else:
print("Game starting")
#multiplayer.peer_disconnected.connect(_on_player_disconnected)
multiplayer.connected_to_server.connect(_on_connected_ok)
#multiplayer.connection_failed.connect(_on_connected_fail)
#multiplayer.server_disconnected.connect(_on_server_disconnected)
increment_button.button_up.connect(func(): _increment.rpc())
decrement_button.button_up.connect(func(): _decrement.rpc())
connect_button.button_up.connect(_on_connect_pressed)
@rpc("any_peer", "call_local")
func _increment():
counter += 1
counter_label.text = str(counter)
@rpc("any_peer", "call_local")
func _decrement():
counter -= 1
counter_label.text = str(counter)
@rpc("authority", "call_remote")
func _set_counter(value: int):
counter = value
counter_label.text = str(counter)
func _on_connect_pressed():
var peer = ENetMultiplayerPeer.new()
var parsed: PackedStringArray = host_text_edit.text.split(":")
print("Connecting to ", parsed[0])
peer.create_client(parsed[0] if not parsed[0].is_empty() else "localhost", int(parsed[1]) if parsed.size() > 1 else PORT)
multiplayer.multiplayer_peer = peer
func _on_player_connected(id: int):
if multiplayer.get_unique_id() == 1:
_set_counter.rpc_id(id, counter)
func _on_player_disconnected():
pass
func _on_connected_ok():
$AfterConnect.visible = true
$BeforeConnect.visible = false
counter_label.text = str(counter)
func _on_connected_fail():
pass
func _on_server_disconnected():
pass