76 lines
2.3 KiB
GDScript
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
|
|
|