Moving to Websocket client/server model
This commit is contained in:
parent
f6c3594d50
commit
a6adb8b011
22
Scenes/Lobby.tscn
Normal file
22
Scenes/Lobby.tscn
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
[gd_scene load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://Scripts/Lobby.gd" type="Script" id=1]
|
||||||
|
|
||||||
|
[node name="Lobby" type="Control"]
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="ItemList" type="ItemList" parent="."]
|
||||||
|
anchor_left = 0.0449219
|
||||||
|
anchor_top = 0.125
|
||||||
|
anchor_right = 0.254477
|
||||||
|
anchor_bottom = 0.955
|
||||||
|
margin_right = -27.584
|
||||||
|
margin_bottom = -62.0
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": true
|
||||||
|
}
|
14
Scripts/Lobby.gd
Normal file
14
Scripts/Lobby.gd
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
extends Control
|
||||||
|
|
||||||
|
func _init():
|
||||||
|
WebsocketController.connect("hostjoin", self, "_on_hostjoin")
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
WebsocketController.connect_websocket()
|
||||||
|
|
||||||
|
func _on_hostjoin():
|
||||||
|
var location = JavaScript.get_interface("location")
|
||||||
|
if location and location.hash != "":
|
||||||
|
WebsocketController.join_game(location.hash)
|
||||||
|
else:
|
||||||
|
WebsocketController.host_game()
|
@ -1,7 +1,14 @@
|
|||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
|
onready var Location = JavaScript.get_interface("location")
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
|
if Location and Location.hash != "":
|
||||||
|
## TODO
|
||||||
|
# join_room(location.hash)
|
||||||
|
pass
|
||||||
$Buttons/Host.connect("pressed", self, "host_pressed")
|
$Buttons/Host.connect("pressed", self, "host_pressed")
|
||||||
|
|
||||||
func host_pressed():
|
func host_pressed():
|
||||||
get_tree().change_scene("res://Scenes/Main.tscn")
|
if Location: Location.hash = "#blarg"
|
||||||
|
get_tree().change_scene("res://Scenes/Lobby.tscn")
|
||||||
|
38
Scripts/WebsocketController.gd
Normal file
38
Scripts/WebsocketController.gd
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
extends Node
|
||||||
|
|
||||||
|
var client = WebSocketClient.new()
|
||||||
|
var peer
|
||||||
|
|
||||||
|
signal hostjoin
|
||||||
|
|
||||||
|
func _init():
|
||||||
|
client.connect("connection_established", self, "_on_connect")
|
||||||
|
client.connect("data_received", self, "_on_data")
|
||||||
|
|
||||||
|
func _on_connect(_proto):
|
||||||
|
peer = client.get_peer(1)
|
||||||
|
peer.set_write_mode(WebSocketPeer.WRITE_MODE_TEXT)
|
||||||
|
|
||||||
|
func _on_data():
|
||||||
|
var msg = peer.get_packet().get_string_from_utf8()
|
||||||
|
var regex = RegEx.new()
|
||||||
|
regex.compile("([\\w_]+):")
|
||||||
|
var res = regex.search(msg)
|
||||||
|
match res.strings[1]:
|
||||||
|
"HOSTJOIN":
|
||||||
|
emit_signal("hostjoin")
|
||||||
|
|
||||||
|
func _process(_delta):
|
||||||
|
client.poll()
|
||||||
|
|
||||||
|
func send_message(message):
|
||||||
|
peer.put_packet(message.to_utf8())
|
||||||
|
|
||||||
|
func connect_websocket():
|
||||||
|
client.connect_to_url(ProjectSettings["global/server_url"]);
|
||||||
|
|
||||||
|
func host_game():
|
||||||
|
send_message("HOST:")
|
||||||
|
|
||||||
|
func join_game(hash_):
|
||||||
|
send_message("JOIN: %s" % hash_)
|
@ -33,16 +33,17 @@ _global_script_class_icons={
|
|||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Hexland"
|
config/name="Hexland"
|
||||||
run/main_scene="res://Scenes/MainMenu.tscn"
|
run/main_scene="res://Scenes/Lobby.tscn"
|
||||||
config/icon="res://icon.png"
|
config/icon="res://icon.png"
|
||||||
|
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|
||||||
|
WebsocketController="*res://Scripts/WebsocketController.gd"
|
||||||
Debug="*res://Scripts/Debug.gd"
|
Debug="*res://Scripts/Debug.gd"
|
||||||
|
|
||||||
[global]
|
[global]
|
||||||
|
|
||||||
main=false
|
server_url="127.0.0.1:8080"
|
||||||
|
|
||||||
[gui]
|
[gui]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user