feat: Added Game Manager
parent
d87ef6d968
commit
4650fe9d49
|
@ -0,0 +1,143 @@
|
||||||
|
[gd_scene load_steps=4 format=3 uid="uid://jfqkb4y8h1rq"]
|
||||||
|
|
||||||
|
[ext_resource type="FontFile" uid="uid://dhvfket83gjln" path="res://data/styles/fonts/Roboto-Regular.ttf" id="1_dcpst"]
|
||||||
|
|
||||||
|
[sub_resource type="GDScript" id="GDScript_bvg37"]
|
||||||
|
script/source = "extends ColorRect
|
||||||
|
|
||||||
|
|
||||||
|
@export var GameChat : RichTextLabel
|
||||||
|
@export var InputText : LineEdit
|
||||||
|
|
||||||
|
## On client send message to chat
|
||||||
|
signal sending_message(message:String)
|
||||||
|
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
GameChat.clear()
|
||||||
|
GameChat.scroll_following = true
|
||||||
|
|
||||||
|
|
||||||
|
func add_message(_name, _message):
|
||||||
|
GameChat.append_text(\"# \")
|
||||||
|
GameChat.push_color(Color.DARK_ORANGE)
|
||||||
|
GameChat.append_text(_name)
|
||||||
|
GameChat.pop()
|
||||||
|
GameChat.append_text(\" : \")
|
||||||
|
GameChat.append_text(_message)
|
||||||
|
GameChat.newline()
|
||||||
|
if GATEWAY.debug:
|
||||||
|
print(\"Get new game chat message\")
|
||||||
|
|
||||||
|
|
||||||
|
func send_message(_message):
|
||||||
|
sending_message.emit(_message)
|
||||||
|
if GATEWAY.debug:
|
||||||
|
print(\"Send new game chat message\")
|
||||||
|
|
||||||
|
|
||||||
|
func _on_game_chat_send_btn_button_up():
|
||||||
|
if !InputText.text.is_empty():
|
||||||
|
self.send_message(InputText.text)
|
||||||
|
InputText.text = \"\"
|
||||||
|
"
|
||||||
|
|
||||||
|
[sub_resource type="GDScript" id="GDScript_opgwe"]
|
||||||
|
script/source = "extends LineEdit
|
||||||
|
|
||||||
|
|
||||||
|
@export var GameChatController : ColorRect
|
||||||
|
|
||||||
|
|
||||||
|
func _process(_delta):
|
||||||
|
if self.has_focus() and Input.is_key_pressed(KEY_ENTER):
|
||||||
|
if !self.text.is_empty():
|
||||||
|
GameChatController.send_message(self.text)
|
||||||
|
self.text = \"\"
|
||||||
|
"
|
||||||
|
|
||||||
|
[node name="GameChatBackground" type="ColorRect" node_paths=PackedStringArray("GameChat", "InputText")]
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
color = Color(0.215902, 0.215902, 0.215902, 1)
|
||||||
|
script = SubResource("GDScript_bvg37")
|
||||||
|
GameChat = NodePath("GameChatMarginContainer/GameChatContainer/GameChatPanel/GameChat")
|
||||||
|
InputText = NodePath("GameChatMarginContainer/GameChatContainer/GameChatBtnContainer/GameChatInput")
|
||||||
|
|
||||||
|
[node name="GameChatMarginContainer" type="MarginContainer" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme_override_constants/margin_left = 10
|
||||||
|
theme_override_constants/margin_top = 10
|
||||||
|
theme_override_constants/margin_right = 10
|
||||||
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
|
[node name="GameChatContainer" type="VBoxContainer" parent="GameChatMarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = 10
|
||||||
|
|
||||||
|
[node name="ControlContainer" type="HBoxContainer" parent="GameChatMarginContainer/GameChatContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="GameChatTitle" type="Label" parent="GameChatMarginContainer/GameChatContainer/ControlContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0.707602, 0.575264, 0, 1)
|
||||||
|
text = "$GameChat"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="MinMaxButton" type="Button" parent="GameChatMarginContainer/GameChatContainer/ControlContainer"]
|
||||||
|
visible = false
|
||||||
|
layout_direction = 2
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 10
|
||||||
|
size_flags_vertical = 0
|
||||||
|
auto_translate = false
|
||||||
|
localize_numeral_system = false
|
||||||
|
mouse_default_cursor_shape = 2
|
||||||
|
theme_override_font_sizes/font_size = 16
|
||||||
|
shortcut_feedback = false
|
||||||
|
shortcut_in_tooltip = false
|
||||||
|
text = "$Minimize"
|
||||||
|
flat = true
|
||||||
|
|
||||||
|
[node name="GameChatPanel" type="Panel" parent="GameChatMarginContainer/GameChatContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="GameChat" type="RichTextLabel" parent="GameChatMarginContainer/GameChatContainer/GameChatPanel"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
theme_override_fonts/normal_font = ExtResource("1_dcpst")
|
||||||
|
theme_override_font_sizes/normal_font_size = 15
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "# PlayerName : Text text text. Text text text. Text text text. Text text text. Text text text. Text text text."
|
||||||
|
scroll_following = true
|
||||||
|
shortcut_keys_enabled = false
|
||||||
|
deselect_on_focus_loss_enabled = false
|
||||||
|
drag_and_drop_selection_enabled = false
|
||||||
|
metadata/_edit_use_anchors_ = true
|
||||||
|
|
||||||
|
[node name="GameChatBtnContainer" type="HBoxContainer" parent="GameChatMarginContainer/GameChatContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = 10
|
||||||
|
|
||||||
|
[node name="GameChatInput" type="LineEdit" parent="GameChatMarginContainer/GameChatContainer/GameChatBtnContainer" node_paths=PackedStringArray("GameChatController")]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
script = SubResource("GDScript_opgwe")
|
||||||
|
GameChatController = NodePath("../../../..")
|
||||||
|
|
||||||
|
[node name="GameChatSendBtn" type="Button" parent="GameChatMarginContainer/GameChatContainer/GameChatBtnContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "$Send"
|
||||||
|
|
||||||
|
[connection signal="button_up" from="GameChatMarginContainer/GameChatContainer/GameChatBtnContainer/GameChatSendBtn" to="." method="_on_game_chat_send_btn_button_up"]
|
|
@ -0,0 +1,27 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
var players : Array
|
||||||
|
|
||||||
|
## On get new message
|
||||||
|
signal get_new_message(name:String, message:String)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_game_game_info_changed(_gameGata):
|
||||||
|
players = _gameGata.players
|
||||||
|
|
||||||
|
|
||||||
|
func _on_connected_panel_send_message(_message):
|
||||||
|
self.rpc_id(1, "rpc_send_message", GATEWAY.clientId, _message, players, GATEWAY.playerToken)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------------------------
|
||||||
|
# RPC Client
|
||||||
|
@rpc("authority", "call_local", "unreliable", 10)
|
||||||
|
func rpc_add_message(_name, _message):
|
||||||
|
get_new_message.emit(_name, _message)
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------------------------
|
||||||
|
# RPC Server
|
||||||
|
@rpc("any_peer", "call_local", "unreliable", 10)
|
||||||
|
func rpc_send_message(_client_id, _message, _players, _token): pass
|
|
@ -0,0 +1,39 @@
|
||||||
|
extends Panel
|
||||||
|
|
||||||
|
|
||||||
|
@export var Chat : ColorRect
|
||||||
|
@export var GameName : Label
|
||||||
|
@export var LeaderName : Label
|
||||||
|
@export var Players : Label
|
||||||
|
@export var PlayersInfo : Label
|
||||||
|
var gameId : int
|
||||||
|
|
||||||
|
signal send_message(_message:String)
|
||||||
|
signal disconnect_self
|
||||||
|
|
||||||
|
|
||||||
|
func add_message(_name, _message):
|
||||||
|
Chat.add_message(_name, _message)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_game_chat_background_sending_message(message):
|
||||||
|
send_message.emit(message)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_chat_sinhronizer_get_new_message(_name, message):
|
||||||
|
add_message(_name, message)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_game_game_info_changed(gameInfo):
|
||||||
|
gameId = gameInfo.gameId
|
||||||
|
PlayersInfo.text = ""
|
||||||
|
GameName.text = gameInfo.gameName
|
||||||
|
LeaderName.text = gameInfo.ownerName
|
||||||
|
Players.text = "%s/%s" % [len(gameInfo.players), gameInfo.maxPlayers]
|
||||||
|
if len(gameInfo.players_info) > 0:
|
||||||
|
for player in gameInfo.players_info:
|
||||||
|
PlayersInfo.text += "%s\n" % [gameInfo.players_info[player]["name"]]
|
||||||
|
|
||||||
|
|
||||||
|
func _on_back_button_need_disconecct():
|
||||||
|
disconnect_self.emit()
|
|
@ -0,0 +1,193 @@
|
||||||
|
[gd_scene load_steps=5 format=3 uid="uid://8qdk7tbki7tb"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://data/scenes/Game/StartPanel/connected_panel.gd" id="1_plf8o"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://jfqkb4y8h1rq" path="res://data/scenes/Game/GameChat/game_chat.tscn" id="1_u3fum"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yapw7"]
|
||||||
|
content_margin_left = 10.0
|
||||||
|
content_margin_top = 10.0
|
||||||
|
content_margin_right = 10.0
|
||||||
|
content_margin_bottom = 10.0
|
||||||
|
bg_color = Color(0.180005, 0.180005, 0.180005, 1)
|
||||||
|
border_width_left = 5
|
||||||
|
border_width_top = 5
|
||||||
|
border_width_right = 5
|
||||||
|
border_width_bottom = 5
|
||||||
|
border_color = Color(0.707602, 0.575264, 0, 1)
|
||||||
|
border_blend = true
|
||||||
|
corner_radius_top_left = 5
|
||||||
|
corner_radius_top_right = 5
|
||||||
|
corner_radius_bottom_right = 5
|
||||||
|
corner_radius_bottom_left = 5
|
||||||
|
expand_margin_left = 5.0
|
||||||
|
expand_margin_top = 5.0
|
||||||
|
expand_margin_right = 5.0
|
||||||
|
expand_margin_bottom = 5.0
|
||||||
|
|
||||||
|
[sub_resource type="GDScript" id="GDScript_vgbeq"]
|
||||||
|
script/source = "extends Button
|
||||||
|
|
||||||
|
|
||||||
|
signal need_disconecct
|
||||||
|
|
||||||
|
|
||||||
|
func _on_button_up():
|
||||||
|
need_disconecct.emit()
|
||||||
|
"
|
||||||
|
|
||||||
|
[node name="ConnectedPanel" type="Panel" node_paths=PackedStringArray("Chat", "GameName", "LeaderName", "Players", "PlayersInfo")]
|
||||||
|
custom_minimum_size = Vector2(512, 256)
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme_override_styles/panel = SubResource("StyleBoxFlat_yapw7")
|
||||||
|
script = ExtResource("1_plf8o")
|
||||||
|
Chat = NodePath("MarginContainer/MainContainer/MainItemsContainer/GameChatBackground")
|
||||||
|
GameName = NodePath("MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer/GameName")
|
||||||
|
LeaderName = NodePath("MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer_2/LeaderName")
|
||||||
|
Players = NodePath("MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer_3/Players")
|
||||||
|
PlayersInfo = NodePath("MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer_4/ScrollContainer/PlayersInfo")
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme_override_constants/margin_left = 10
|
||||||
|
theme_override_constants/margin_top = 10
|
||||||
|
theme_override_constants/margin_right = 10
|
||||||
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
|
[node name="MainContainer" type="VBoxContainer" parent="MarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Title" type="Label" parent="MarginContainer/MainContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0.707602, 0.575264, 0, 1)
|
||||||
|
theme_override_font_sizes/font_size = 18
|
||||||
|
text = "$ConnectToGame"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="MainItemsContainer" type="HBoxContainer" parent="MarginContainer/MainContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_constants/separation = 25
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="MainRowsContainer" type="VBoxContainer" parent="MarginContainer/MainContainer/MainItemsContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 0
|
||||||
|
theme_override_constants/separation = 5
|
||||||
|
|
||||||
|
[node name="RowContainer" type="HBoxContainer" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = 15
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0.707602, 0.575264, 0, 1)
|
||||||
|
text = "$GameName"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="GameName" type="Label" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 10
|
||||||
|
text = "The game name"
|
||||||
|
|
||||||
|
[node name="RowContainer_2" type="HBoxContainer" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = 15
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer_2"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0.707602, 0.575264, 0, 1)
|
||||||
|
text = "$GameLeader"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="LeaderName" type="Label" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer_2"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 10
|
||||||
|
text = "The game leader name"
|
||||||
|
|
||||||
|
[node name="RowContainer_3" type="HBoxContainer" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = 15
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer_3"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0.707602, 0.575264, 0, 1)
|
||||||
|
text = "$Players"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="Players" type="Label" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer_3"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 10
|
||||||
|
text = "0/5"
|
||||||
|
|
||||||
|
[node name="RowContainer_4" type="HBoxContainer" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_constants/separation = 15
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer_4"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 0
|
||||||
|
theme_override_colors/font_color = Color(0.707602, 0.575264, 0, 1)
|
||||||
|
text = "$InGameLobbie"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer_4"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="PlayersInfo" type="Label" parent="MarginContainer/MainContainer/MainItemsContainer/MainRowsContainer/RowContainer_4/ScrollContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
text = "User-1
|
||||||
|
User-2
|
||||||
|
User-3
|
||||||
|
"
|
||||||
|
horizontal_alignment = 2
|
||||||
|
|
||||||
|
[node name="GameChatBackground" parent="MarginContainer/MainContainer/MainItemsContainer" instance=ExtResource("1_u3fum")]
|
||||||
|
clip_contents = true
|
||||||
|
custom_minimum_size = Vector2(200, 200)
|
||||||
|
layout_mode = 2
|
||||||
|
auto_translate = false
|
||||||
|
localize_numeral_system = false
|
||||||
|
|
||||||
|
[node name="ButtonsContainer" type="HBoxContainer" parent="MarginContainer/MainContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 8
|
||||||
|
theme_override_constants/separation = 10
|
||||||
|
|
||||||
|
[node name="StartButton" type="Button" parent="MarginContainer/MainContainer/ButtonsContainer"]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 2
|
||||||
|
disabled = true
|
||||||
|
text = "$StartGame"
|
||||||
|
|
||||||
|
[node name="ReadyButton" type="Button" parent="MarginContainer/MainContainer/ButtonsContainer"]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 2
|
||||||
|
text = "$ReadyGame"
|
||||||
|
|
||||||
|
[node name="BackButton" type="Button" parent="MarginContainer/MainContainer/ButtonsContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 10
|
||||||
|
text = "$Back"
|
||||||
|
script = SubResource("GDScript_vgbeq")
|
||||||
|
|
||||||
|
[connection signal="sending_message" from="MarginContainer/MainContainer/MainItemsContainer/GameChatBackground" to="." method="_on_game_chat_background_sending_message"]
|
||||||
|
[connection signal="button_up" from="MarginContainer/MainContainer/ButtonsContainer/BackButton" to="MarginContainer/MainContainer/ButtonsContainer/BackButton" method="_on_button_up"]
|
||||||
|
[connection signal="need_disconecct" from="MarginContainer/MainContainer/ButtonsContainer/BackButton" to="." method="_on_back_button_need_disconecct"]
|
|
@ -10,14 +10,16 @@ var players : Array
|
||||||
var players_info : Dictionary
|
var players_info : Dictionary
|
||||||
var maxPlayers : int
|
var maxPlayers : int
|
||||||
var gamePassword : String
|
var gamePassword : String
|
||||||
|
var instanceName: String
|
||||||
|
|
||||||
var isStarted : bool
|
var isStarted : bool
|
||||||
|
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------#
|
#--------------------------------------------------------------------------------------------------#
|
||||||
# Signals
|
# Signals
|
||||||
signal game_info_changed
|
signal game_info_changed(gameInfo:Dictionary)
|
||||||
signal game_created
|
signal game_created
|
||||||
|
signal game_empty
|
||||||
|
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------#
|
#--------------------------------------------------------------------------------------------------#
|
||||||
|
@ -31,7 +33,8 @@ func get_game_info():
|
||||||
players_info = self.players_info,
|
players_info = self.players_info,
|
||||||
maxPlayers = self.maxPlayers,
|
maxPlayers = self.maxPlayers,
|
||||||
gamePassword = self.gamePassword,
|
gamePassword = self.gamePassword,
|
||||||
isStarted = self.isStarted
|
isStarted = self.isStarted,
|
||||||
|
instanceName = self.instanceName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,22 +45,25 @@ func set_game_info(_gameSettings:Dictionary, isLocal:bool = true):
|
||||||
self.maxPlayers = _gameSettings.maxPlayers
|
self.maxPlayers = _gameSettings.maxPlayers
|
||||||
self.gamePassword = _gameSettings.gamePassword
|
self.gamePassword = _gameSettings.gamePassword
|
||||||
self.name = str(_gameSettings.gameId)
|
self.name = str(_gameSettings.gameId)
|
||||||
|
self.instanceName = _gameSettings.instanceName
|
||||||
|
self.players = _gameSettings.players
|
||||||
|
self.players_info = _gameSettings.players_info
|
||||||
self.isStarted = false
|
self.isStarted = false
|
||||||
_emmit_game_info_changed()
|
_emmit_game_info_changed()
|
||||||
if isLocal:
|
if isLocal:
|
||||||
self.rpc_id(1, "rpc_game_info_changed", get_game_info())
|
self.rpc_id(1, "rpc_game_info_changed", get_game_info(), GATEWAY.playerToken)
|
||||||
|
|
||||||
|
|
||||||
func connect_player(_clientId:int):
|
func connect_player(_clientId:int):
|
||||||
self.rpc_id(1, "rpc_set_player", _clientId)
|
self.rpc_id(1, "rpc_set_player", _clientId, GATEWAY.playerToken)
|
||||||
|
|
||||||
|
|
||||||
func disconnect_player(_clientId:int):
|
func disconnect_player(_clientId:int):
|
||||||
self.rpc_id(1, "rpc_unset_player", _clientId)
|
self.rpc_id(1, "rpc_unset_player", _clientId, GATEWAY.playerToken)
|
||||||
|
|
||||||
|
|
||||||
func added_player(_player:Dictionary):
|
func added_player(_player:Dictionary):
|
||||||
players.push_back(_player.id)
|
players.push_back(int(_player.id))
|
||||||
players_info[_player.id] = {
|
players_info[_player.id] = {
|
||||||
'login' = _player.login,
|
'login' = _player.login,
|
||||||
'name' = _player.name
|
'name' = _player.name
|
||||||
|
@ -69,6 +75,17 @@ func delete_player(_clientId:int):
|
||||||
players.erase(_clientId)
|
players.erase(_clientId)
|
||||||
players_info.erase(_clientId)
|
players_info.erase(_clientId)
|
||||||
_emmit_game_info_changed()
|
_emmit_game_info_changed()
|
||||||
|
if _clientId == GATEWAY.clientId:
|
||||||
|
GATEWAY.is_reconnected = true
|
||||||
|
var Lobbies = get_node("/root/Lobbies")
|
||||||
|
var current_scene = get_tree().get_current_scene()
|
||||||
|
get_tree().set_current_scene(Lobbies)
|
||||||
|
current_scene.queue_free()
|
||||||
|
multiplayer.server_disconnected.emit()
|
||||||
|
|
||||||
|
|
||||||
|
func close_game():
|
||||||
|
emit_signal("game_empty")
|
||||||
|
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------#
|
#--------------------------------------------------------------------------------------------------#
|
||||||
|
@ -77,6 +94,17 @@ func _on_game_created():
|
||||||
self.connect_player(GATEWAY.clientId)
|
self.connect_player(GATEWAY.clientId)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_connected_panel_disconnect_self():
|
||||||
|
self.disconnect_player(GATEWAY.clientId)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_game_empty():
|
||||||
|
var Lobbies = get_node("/root/Lobbies")
|
||||||
|
var current_scene = get_tree().get_current_scene()
|
||||||
|
get_tree().set_current_scene(Lobbies)
|
||||||
|
current_scene.queue_free()
|
||||||
|
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------#
|
#--------------------------------------------------------------------------------------------------#
|
||||||
# Signals emmit
|
# Signals emmit
|
||||||
func _emmit_game_info_changed():
|
func _emmit_game_info_changed():
|
||||||
|
@ -100,15 +128,24 @@ func rpc_unset_player_info(_clientId:int):
|
||||||
delete_player(_clientId)
|
delete_player(_clientId)
|
||||||
|
|
||||||
|
|
||||||
|
@rpc("authority", "call_local", "reliable", 3)
|
||||||
|
func rpc_close_game():
|
||||||
|
close_game()
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------------------
|
||||||
# RPC Server
|
# RPC Server
|
||||||
@rpc("any_peer", "call_local", "reliable", 3)
|
@rpc("any_peer", "call_local", "reliable", 3)
|
||||||
func rpc_game_info_changed(_gameSettings:Dictionary): pass
|
func rpc_game_info_changed(_gameSettings:Dictionary, _token:String): pass
|
||||||
|
|
||||||
|
|
||||||
@rpc("any_peer", "call_local", "reliable", 3)
|
@rpc("any_peer", "call_local", "reliable", 3)
|
||||||
func rpc_set_player(_clientId:int): pass
|
func rpc_set_player(_clientId:int, _token:String): pass
|
||||||
|
|
||||||
|
|
||||||
@rpc("any_peer", "call_local", "reliable", 3)
|
@rpc("any_peer", "call_local", "reliable", 3)
|
||||||
func rpc_unset_player(_clientId:int): pass
|
func rpc_unset_player(_clientId:int, _token:String): pass
|
||||||
|
|
||||||
|
|
||||||
|
@rpc("any_peer", "call_local", "reliable", 3)
|
||||||
|
func rpc_set_close_game(_gameId:int, _token:String): pass
|
||||||
|
|
|
@ -1,8 +1,21 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://u3ht16dhk3iq"]
|
[gd_scene load_steps=4 format=3 uid="uid://u3ht16dhk3iq"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://data/scenes/Game/game.gd" id="1_2bjjo"]
|
[ext_resource type="Script" path="res://data/scenes/Game/game.gd" id="1_2bjjo"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://8qdk7tbki7tb" path="res://data/scenes/Game/StartPanel/connected_panel.tscn" id="2_depbf"]
|
||||||
|
[ext_resource type="Script" path="res://data/scenes/Game/Scripts/Sinhronizers/ChatSinhronizer.gd" id="2_ekkht"]
|
||||||
|
|
||||||
[node name="Game" type="Node"]
|
[node name="Game" type="Node"]
|
||||||
script = ExtResource("1_2bjjo")
|
script = ExtResource("1_2bjjo")
|
||||||
|
|
||||||
|
[node name="ChatSinhronizer" type="Node" parent="."]
|
||||||
|
script = ExtResource("2_ekkht")
|
||||||
|
|
||||||
|
[node name="ConnectedPanel" parent="." instance=ExtResource("2_depbf")]
|
||||||
|
|
||||||
[connection signal="game_created" from="." to="." method="_on_game_created"]
|
[connection signal="game_created" from="." to="." method="_on_game_created"]
|
||||||
|
[connection signal="game_empty" from="." to="." method="_on_game_empty"]
|
||||||
|
[connection signal="game_info_changed" from="." to="ChatSinhronizer" method="_on_game_game_info_changed"]
|
||||||
|
[connection signal="game_info_changed" from="." to="ConnectedPanel" method="_on_game_game_info_changed"]
|
||||||
|
[connection signal="get_new_message" from="ChatSinhronizer" to="ConnectedPanel" method="_on_chat_sinhronizer_get_new_message"]
|
||||||
|
[connection signal="disconnect_self" from="ConnectedPanel" to="." method="_on_connected_panel_disconnect_self"]
|
||||||
|
[connection signal="send_message" from="ConnectedPanel" to="ChatSinhronizer" method="_on_connected_panel_send_message"]
|
||||||
|
|
|
@ -79,7 +79,6 @@ text = "$GameName"
|
||||||
[node name="GameName" type="LineEdit" parent="MarginContainer/GameVBoxContainer/Game_SettingsContainer/GameNameBox"]
|
[node name="GameName" type="LineEdit" parent="MarginContainer/GameVBoxContainer/Game_SettingsContainer/GameNameBox"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
alignment = 2
|
|
||||||
|
|
||||||
[node name="MaxPlayersBox" type="HBoxContainer" parent="MarginContainer/GameVBoxContainer/Game_SettingsContainer"]
|
[node name="MaxPlayersBox" type="HBoxContainer" parent="MarginContainer/GameVBoxContainer/Game_SettingsContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
|
@ -4,6 +4,7 @@ extends Node2D
|
||||||
var clientId : int
|
var clientId : int
|
||||||
var playerName : String
|
var playerName : String
|
||||||
var token : String
|
var token : String
|
||||||
|
var login : String
|
||||||
|
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------#
|
#--------------------------------------------------------------------------------------------------#
|
||||||
|
@ -15,6 +16,16 @@ func _init():
|
||||||
set_physics_process(0)
|
set_physics_process(0)
|
||||||
|
|
||||||
|
|
||||||
|
func autentification_failed():
|
||||||
|
GATEWAY.is_reconnected = false
|
||||||
|
multiplayer.server_disconnected.emit()
|
||||||
|
|
||||||
|
|
||||||
|
func autentification_confirm():
|
||||||
|
playerName = GATEWAY.playerName
|
||||||
|
token = GATEWAY.playerToken
|
||||||
|
login = GATEWAY.playerLogin
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------#
|
#--------------------------------------------------------------------------------------------------#
|
||||||
# RPC Client
|
# RPC Client
|
||||||
@rpc("authority", "reliable", "call_remote", 1)
|
@rpc("authority", "reliable", "call_remote", 1)
|
||||||
|
@ -22,6 +33,16 @@ func authorizated(_name, _token, _isAuthorized):
|
||||||
if _isAuthorized:
|
if _isAuthorized:
|
||||||
token = _token
|
token = _token
|
||||||
playerName = _name
|
playerName = _name
|
||||||
|
GATEWAY.playerToken = _token
|
||||||
|
GATEWAY.playerName = _name
|
||||||
GATEWAY.emit_signal("authorizated")
|
GATEWAY.emit_signal("authorizated")
|
||||||
else:
|
else:
|
||||||
GATEWAY.emit_signal("unauthorizated")
|
GATEWAY.emit_signal("unauthorizated")
|
||||||
|
|
||||||
|
|
||||||
|
@rpc("authority", "reliable", "call_local", 1)
|
||||||
|
func autentificated(_isAuth:bool):
|
||||||
|
if !_isAuth:
|
||||||
|
autentification_failed()
|
||||||
|
else:
|
||||||
|
autentification_confirm()
|
||||||
|
|
|
@ -10,7 +10,7 @@ func _ready():
|
||||||
|
|
||||||
|
|
||||||
func send_message(_message):
|
func send_message(_message):
|
||||||
self.rpc_id(1, "rpc_send_message", GATEWAY.clientId, _message)
|
self.rpc_id(1, "rpc_send_message", GATEWAY.clientId, _message, GATEWAY.playerToken)
|
||||||
if GATEWAY.debug:
|
if GATEWAY.debug:
|
||||||
print("Send new message")
|
print("Send new message")
|
||||||
|
|
||||||
|
@ -33,4 +33,4 @@ func rpc_add_message(_name, _message):
|
||||||
#---------------------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------------------
|
||||||
# RPC Server
|
# RPC Server
|
||||||
@rpc("any_peer", "call_local", "unreliable", 9)
|
@rpc("any_peer", "call_local", "unreliable", 9)
|
||||||
func rpc_send_message(_client_id, _message): pass
|
func rpc_send_message(_client_id, _message, _token): pass
|
||||||
|
|
|
@ -2,14 +2,15 @@ extends Label
|
||||||
|
|
||||||
|
|
||||||
var gameId : int
|
var gameId : int
|
||||||
|
var instanceName: String
|
||||||
var ownerName : String
|
var ownerName : String
|
||||||
var gameName : String
|
var gameName : String
|
||||||
var players : Array
|
|
||||||
var maxPlayers : int
|
var maxPlayers : int
|
||||||
var gamePassword : String
|
var gamePassword : String
|
||||||
|
|
||||||
var isStarted : bool
|
var isStarted : bool
|
||||||
|
|
||||||
|
signal left_mouse_button_clicked(instanceName:String)
|
||||||
|
|
||||||
|
|
||||||
func set_game_data(_data:Dictionary):
|
func set_game_data(_data:Dictionary):
|
||||||
self.gameId = _data.gameId
|
self.gameId = _data.gameId
|
||||||
|
@ -19,11 +20,16 @@ func set_game_data(_data:Dictionary):
|
||||||
self.gamePassword = _data.gamePassword
|
self.gamePassword = _data.gamePassword
|
||||||
self.name = str(_data.gameId)
|
self.name = str(_data.gameId)
|
||||||
self.isStarted = _data.isStarted
|
self.isStarted = _data.isStarted
|
||||||
|
self.instanceName = _data.instanceName
|
||||||
self.text = "%s | %s | %s | " % [_data.gameName, _data.ownerName, _data.maxPlayers]
|
self.text = "%s | %s | %s | " % [_data.gameName, _data.ownerName, _data.maxPlayers]
|
||||||
if _data.gamePassword != "":
|
if _data.gamePassword != "":
|
||||||
self.text += "PASSWORD"
|
self.text += "PASSWORD"
|
||||||
else:
|
else:
|
||||||
self.text += "OPEN"
|
self.text += "OPEN"
|
||||||
|
if isStarted:
|
||||||
|
self.text += " | Close"
|
||||||
|
else:
|
||||||
|
self.text += " | Wait"
|
||||||
|
|
||||||
|
|
||||||
func get_game_data() -> Dictionary:
|
func get_game_data() -> Dictionary:
|
||||||
|
@ -35,3 +41,22 @@ func get_game_data() -> Dictionary:
|
||||||
gamePassword = self.gamePassword,
|
gamePassword = self.gamePassword,
|
||||||
isStarted = self.isStarted
|
isStarted = self.isStarted
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func _input(event: InputEvent):
|
||||||
|
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
|
||||||
|
if __is_mouse_over_label(
|
||||||
|
get_global_mouse_position(),
|
||||||
|
self.get_global_transform().origin,
|
||||||
|
self.size
|
||||||
|
):
|
||||||
|
self.left_mouse_button_clicked.emit(self.instanceName)
|
||||||
|
|
||||||
|
|
||||||
|
func __is_mouse_over_label(mouse_pos:Vector2, label_pos:Vector2, label_size:Vector2) -> bool:
|
||||||
|
return (
|
||||||
|
mouse_pos.x >= label_pos.x and
|
||||||
|
mouse_pos.x <= label_pos.x + label_size.x and
|
||||||
|
mouse_pos.y >= label_pos.y and
|
||||||
|
mouse_pos.y <= label_pos.y + label_size.y
|
||||||
|
)
|
||||||
|
|
|
@ -14,7 +14,7 @@ Label/constants/shadow_outline_size = 1
|
||||||
Label/font_sizes/font_size = 16
|
Label/font_sizes/font_size = 16
|
||||||
|
|
||||||
[node name="Label" type="Label"]
|
[node name="Label" type="Label"]
|
||||||
mouse_filter = 1
|
mouse_filter = 0
|
||||||
mouse_default_cursor_shape = 2
|
mouse_default_cursor_shape = 2
|
||||||
theme = SubResource("Theme_4x7tq")
|
theme = SubResource("Theme_4x7tq")
|
||||||
text = "Game number 1"
|
text = "Game number 1"
|
||||||
|
|
|
@ -6,21 +6,23 @@ extends Node
|
||||||
@export var PopUpError : PopupPanel
|
@export var PopUpError : PopupPanel
|
||||||
@export var LobbieUI : Control
|
@export var LobbieUI : Control
|
||||||
@export var GamePanel : Panel
|
@export var GamePanel : Panel
|
||||||
|
@export var ContinueGame : Button
|
||||||
|
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
rpc_id(1, "rpc_get_games_list")
|
rpc_id(1, "rpc_get_games_list", GATEWAY.playerToken)
|
||||||
|
multiplayer.connected_to_server.connect(_on_search_button_button_up)
|
||||||
|
|
||||||
|
|
||||||
func create_game(_gameData:Dictionary):
|
func create_game(_gameData:Dictionary):
|
||||||
rpc_id(1, "rpc_create_game", _gameData)
|
rpc_id(1, "rpc_create_game", _gameData, GATEWAY.playerToken)
|
||||||
|
|
||||||
|
|
||||||
func _on_search_button_button_up():
|
func _on_search_button_button_up():
|
||||||
if SearchLine.text == "":
|
if SearchLine.text == "":
|
||||||
rpc_id(1, "rpc_get_games_list")
|
rpc_id(1, "rpc_get_games_list", GATEWAY.playerToken)
|
||||||
else:
|
else:
|
||||||
rpc_id(1, "rpc_get_game", SearchLine.text)
|
rpc_id(1, "rpc_get_game", SearchLine.text, GATEWAY.playerToken)
|
||||||
|
|
||||||
|
|
||||||
func _on_create_game_button_up():
|
func _on_create_game_button_up():
|
||||||
|
@ -29,11 +31,13 @@ func _on_create_game_button_up():
|
||||||
|
|
||||||
func _on_popup_error_user_push_ok():
|
func _on_popup_error_user_push_ok():
|
||||||
LobbieUI.visible = true
|
LobbieUI.visible = true
|
||||||
|
rpc_id(1, "rpc_get_games_list", GATEWAY.playerToken)
|
||||||
GamePanel.emit_signal("back_pushed")
|
GamePanel.emit_signal("back_pushed")
|
||||||
|
|
||||||
|
|
||||||
func _on_game_panel_back_pushed():
|
func _on_game_panel_back_pushed():
|
||||||
GamePanel.visible = false
|
GamePanel.visible = false
|
||||||
|
rpc_id(1, "rpc_get_games_list", GATEWAY.playerToken)
|
||||||
|
|
||||||
|
|
||||||
func _on_game_panel_create_pushed(_data):
|
func _on_game_panel_create_pushed(_data):
|
||||||
|
@ -50,19 +54,51 @@ func _on_game_panel_create_pushed(_data):
|
||||||
create_game(gameData)
|
create_game(gameData)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_game_label_clicked(_instanceName):
|
||||||
|
rpc_id(1, "rpc_get_game_info", _instanceName, GATEWAY.playerToken)
|
||||||
|
if GATEWAY.debug:
|
||||||
|
print("Game label clicked, instance: ", _instanceName)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_continue_game_button_up():
|
||||||
|
rpc_id(1, "rpc_get_game_info", ContinueGame.instanceName, GATEWAY.playerToken)
|
||||||
|
if GATEWAY.debug:
|
||||||
|
print("Connect to self game")
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------------------------
|
||||||
|
# Functions
|
||||||
|
func connect_to_game(_gameData):
|
||||||
|
var Game = preload("res://data/scenes/Game/game.tscn").instantiate()
|
||||||
|
get_tree().root.add_child(Game)
|
||||||
|
Game.set_game_info(_gameData, false)
|
||||||
|
Game.connect_player(GATEWAY.clientId)
|
||||||
|
get_tree().set_current_scene(Game)
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------------------
|
||||||
# RPC Client
|
# RPC Client
|
||||||
@rpc("authority", "call_local", "unreliable", 2)
|
@rpc("authority", "call_local", "unreliable", 2)
|
||||||
func rpc_set_games_list(_games:Array):
|
func rpc_set_games_list(_games:Array):
|
||||||
|
ContinueGame.visible = false
|
||||||
var games_count = GameBox.get_child_count()
|
var games_count = GameBox.get_child_count()
|
||||||
while games_count > 0:
|
while games_count > 0:
|
||||||
var game = GameBox.get_child(games_count - 1)
|
var game = GameBox.get_child(games_count - 1)
|
||||||
|
if game.has_signal("left_mouse_button_clicked"):
|
||||||
|
if game.is_connected("left_mouse_button_clicked", _on_game_label_clicked):
|
||||||
|
game.disconnect("left_mouse_button_clicked", _on_game_label_clicked)
|
||||||
get_node(game.get_path()).queue_free()
|
get_node(game.get_path()).queue_free()
|
||||||
games_count -= 1
|
games_count -= 1
|
||||||
if _games.size() > 0:
|
if _games.size() > 0:
|
||||||
for game in _games:
|
for game in _games:
|
||||||
|
if game.has("isMy"):
|
||||||
|
ContinueGame.visible = true
|
||||||
|
ContinueGame.instanceName = game.instanceName
|
||||||
var gameLabel = preload("res://data/scenes/lobbies/GameLabel.tscn").instantiate()
|
var gameLabel = preload("res://data/scenes/lobbies/GameLabel.tscn").instantiate()
|
||||||
|
await get_tree().create_timer(0.5).timeout
|
||||||
gameLabel.set_game_data(game)
|
gameLabel.set_game_data(game)
|
||||||
|
if not gameLabel.is_connected("left_mouse_button_clicked", _on_game_label_clicked):
|
||||||
|
gameLabel.left_mouse_button_clicked.connect(_on_game_label_clicked)
|
||||||
GameBox.add_child(gameLabel)
|
GameBox.add_child(gameLabel)
|
||||||
if GATEWAY.debug:
|
if GATEWAY.debug:
|
||||||
print("Get games list")
|
print("Get games list")
|
||||||
|
@ -73,10 +109,11 @@ func rpc_game_created(_game:Dictionary):
|
||||||
var game_instance = preload("res://data/scenes/Game/game.tscn").instantiate()
|
var game_instance = preload("res://data/scenes/Game/game.tscn").instantiate()
|
||||||
game_instance.set_game_info(_game, false)
|
game_instance.set_game_info(_game, false)
|
||||||
get_tree().root.add_child(game_instance)
|
get_tree().root.add_child(game_instance)
|
||||||
get_node("/root/%s" % [_game.gameId]).emit_signal("game_created")
|
game_instance.emit_signal("game_created")
|
||||||
|
GamePanel.visible = false
|
||||||
|
get_tree().set_current_scene(game_instance)
|
||||||
if GATEWAY.debug:
|
if GATEWAY.debug:
|
||||||
print("Created new game")
|
print("Created new game")
|
||||||
get_node("/root/Lobbies").queue_free()
|
|
||||||
|
|
||||||
|
|
||||||
@rpc("authority", "call_local", "unreliable", 2)
|
@rpc("authority", "call_local", "unreliable", 2)
|
||||||
|
@ -87,6 +124,13 @@ func rpc_cant_create_game(_message : String):
|
||||||
print("Can`t create game")
|
print("Can`t create game")
|
||||||
|
|
||||||
|
|
||||||
|
@rpc("authority", "call_local", "unreliable", 2)
|
||||||
|
func rpc_set_game_info(_gameData:Dictionary):
|
||||||
|
connect_to_game(_gameData)
|
||||||
|
if GATEWAY.debug:
|
||||||
|
print("Get game info")
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------------------
|
||||||
# RPC Server
|
# RPC Server
|
||||||
@rpc("any_peer", "call_local", "unreliable", 2)
|
@rpc("any_peer", "call_local", "unreliable", 2)
|
||||||
|
@ -99,3 +143,7 @@ func rpc_get_games_list(): pass
|
||||||
|
|
||||||
@rpc("any_peer", "call_local", "unreliable", 2)
|
@rpc("any_peer", "call_local", "unreliable", 2)
|
||||||
func rpc_get_game(_name:String): pass
|
func rpc_get_game(_name:String): pass
|
||||||
|
|
||||||
|
|
||||||
|
@rpc("any_peer", "call_local", "reliable", 2)
|
||||||
|
func rpc_get_game_info(_instanceName:String): pass
|
||||||
|
|
|
@ -0,0 +1,216 @@
|
||||||
|
[gd_scene load_steps=6 format=3 uid="uid://d4nhi3k0agm2q"]
|
||||||
|
|
||||||
|
[ext_resource type="FontFile" uid="uid://dhvfket83gjln" path="res://data/styles/fonts/Roboto-Regular.ttf" id="1_qbt18"]
|
||||||
|
[ext_resource type="Script" path="res://data/scenes/lobbies/GamesSinhronizer.gd" id="2_a6k32"]
|
||||||
|
[ext_resource type="Script" path="res://data/scenes/lobbies/ChatSinhronizer.gd" id="2_cc8va"]
|
||||||
|
|
||||||
|
[sub_resource type="GDScript" id="GDScript_2o8xy"]
|
||||||
|
script/source = "extends LineEdit
|
||||||
|
|
||||||
|
|
||||||
|
@export var ChatSinhronizer : Node
|
||||||
|
|
||||||
|
|
||||||
|
func _process(_delta):
|
||||||
|
if self.has_focus() and Input.is_key_pressed(KEY_ENTER):
|
||||||
|
if !self.text.is_empty():
|
||||||
|
ChatSinhronizer.send_message(self.text)
|
||||||
|
self.text = \"\"
|
||||||
|
"
|
||||||
|
|
||||||
|
[sub_resource type="GDScript" id="GDScript_4mwjp"]
|
||||||
|
script/source = "extends Button
|
||||||
|
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
multiplayer.server_disconnected.connect(_server_disconnect)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_button_up():
|
||||||
|
multiplayer.emit_signal(\"server_disconnected\")
|
||||||
|
|
||||||
|
|
||||||
|
func _server_disconnect():
|
||||||
|
get_tree().change_scene_to_packed(load(\"res://data/scenes/main_menu/main_menu.tscn\"))
|
||||||
|
"
|
||||||
|
|
||||||
|
[node name="Lobbies" type="Node"]
|
||||||
|
|
||||||
|
[node name="ChatSinhronizer" type="Node" parent="." node_paths=PackedStringArray("GlobalChat")]
|
||||||
|
script = ExtResource("2_cc8va")
|
||||||
|
GlobalChat = NodePath("../LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer/GlobalChatContainer/Panel/GlobalChat")
|
||||||
|
|
||||||
|
[node name="GamesSinhronizer" type="Node" parent="." node_paths=PackedStringArray("GameBox", "SearchLine")]
|
||||||
|
script = ExtResource("2_a6k32")
|
||||||
|
GameBox = NodePath("../LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/GamesScroll/GamesBox")
|
||||||
|
SearchLine = NodePath("../LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/Search/GameSearch")
|
||||||
|
|
||||||
|
[node name="LobbieUI" type="Control" parent="."]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="Background" type="ColorRect" parent="LobbieUI"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
color = Color(0.125911, 0.125911, 0.125911, 1)
|
||||||
|
|
||||||
|
[node name="MainMarginContainer" type="MarginContainer" parent="LobbieUI"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
theme_override_constants/margin_left = 10
|
||||||
|
theme_override_constants/margin_top = 10
|
||||||
|
theme_override_constants/margin_right = 10
|
||||||
|
theme_override_constants/margin_bottom = 10
|
||||||
|
|
||||||
|
[node name="MainUIContainer" type="VBoxContainer" parent="LobbieUI/MainMarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="MainContainer" type="HBoxContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_constants/separation = 10
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="GamesBackground" type="ColorRect" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
color = Color(0.215902, 0.215902, 0.215902, 1)
|
||||||
|
|
||||||
|
[node name="GamesMarginContainer" type="MarginContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme_override_constants/margin_left = 5
|
||||||
|
theme_override_constants/margin_top = 5
|
||||||
|
theme_override_constants/margin_right = 5
|
||||||
|
theme_override_constants/margin_bottom = 5
|
||||||
|
|
||||||
|
[node name="GamesContainer" type="VBoxContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="GamesTitle" type="Label" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0.707602, 0.575264, 0, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("1_qbt18")
|
||||||
|
theme_override_font_sizes/font_size = 16
|
||||||
|
text = "$Games"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="Search" type="HBoxContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="GameSearch" type="LineEdit" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/Search"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
placeholder_text = "$search_game"
|
||||||
|
|
||||||
|
[node name="SearchButton" type="Button" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/Search"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "$Search"
|
||||||
|
|
||||||
|
[node name="GamesScroll" type="ScrollContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
horizontal_scroll_mode = 0
|
||||||
|
vertical_scroll_mode = 2
|
||||||
|
|
||||||
|
[node name="GamesBox" type="VBoxContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/GamesScroll"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
theme_override_constants/separation = 10
|
||||||
|
|
||||||
|
[node name="GlobalChatBackground" type="ColorRect" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
color = Color(0.215902, 0.215902, 0.215902, 1)
|
||||||
|
|
||||||
|
[node name="GlobalChatMarginContainer" type="MarginContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme_override_constants/margin_left = 5
|
||||||
|
theme_override_constants/margin_top = 5
|
||||||
|
theme_override_constants/margin_right = 5
|
||||||
|
theme_override_constants/margin_bottom = 5
|
||||||
|
|
||||||
|
[node name="GlobalChatContainer" type="VBoxContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="GlobalChatTitle" type="Label" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer/GlobalChatContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0.707602, 0.575264, 0, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("1_qbt18")
|
||||||
|
theme_override_font_sizes/font_size = 16
|
||||||
|
text = "$GlobalChat"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="Panel" type="Panel" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer/GlobalChatContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="GlobalChat" type="RichTextLabel" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer/GlobalChatContainer/Panel"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
theme_override_fonts/normal_font = ExtResource("1_qbt18")
|
||||||
|
theme_override_font_sizes/normal_font_size = 15
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "# PlayerName : Text text text. Text text text. Text text text. Text text text. Text text text. Text text text."
|
||||||
|
scroll_following = true
|
||||||
|
shortcut_keys_enabled = false
|
||||||
|
deselect_on_focus_loss_enabled = false
|
||||||
|
drag_and_drop_selection_enabled = false
|
||||||
|
metadata/_edit_use_anchors_ = true
|
||||||
|
|
||||||
|
[node name="GlobalChatMessage" type="LineEdit" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer/GlobalChatContainer" node_paths=PackedStringArray("ChatSinhronizer")]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 8
|
||||||
|
placeholder_text = "$your_message"
|
||||||
|
caret_blink = true
|
||||||
|
script = SubResource("GDScript_2o8xy")
|
||||||
|
ChatSinhronizer = NodePath("../../../../../../../../ChatSinhronizer")
|
||||||
|
|
||||||
|
[node name="ButtonsContainer" type="HBoxContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="CreateGame" type="Button" parent="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 2
|
||||||
|
text = "$CreateGame"
|
||||||
|
|
||||||
|
[node name="Back" type="Button" parent="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 10
|
||||||
|
size_flags_vertical = 8
|
||||||
|
theme_override_fonts/font = ExtResource("1_qbt18")
|
||||||
|
theme_override_font_sizes/font_size = 15
|
||||||
|
text = "$Back"
|
||||||
|
script = SubResource("GDScript_4mwjp")
|
||||||
|
|
||||||
|
[connection signal="button_up" from="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/Search/SearchButton" to="GamesSinhronizer" method="_on_search_button_button_up"]
|
||||||
|
[connection signal="button_up" from="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer/Back" to="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer/Back" method="_on_button_up"]
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=8 format=3 uid="uid://d4nhi3k0agm2q"]
|
[gd_scene load_steps=10 format=3 uid="uid://d4nhi3k0agm2q"]
|
||||||
|
|
||||||
[ext_resource type="FontFile" uid="uid://dhvfket83gjln" path="res://data/styles/fonts/Roboto-Regular.ttf" id="1_qbt18"]
|
[ext_resource type="FontFile" uid="uid://dhvfket83gjln" path="res://data/styles/fonts/Roboto-Regular.ttf" id="1_qbt18"]
|
||||||
[ext_resource type="Script" path="res://data/scenes/lobbies/GamesSinhronizer.gd" id="2_a6k32"]
|
[ext_resource type="Script" path="res://data/scenes/lobbies/GamesSinhronizer.gd" id="2_a6k32"]
|
||||||
|
@ -20,31 +20,43 @@ func _process(_delta):
|
||||||
self.text = \"\"
|
self.text = \"\"
|
||||||
"
|
"
|
||||||
|
|
||||||
|
[sub_resource type="GDScript" id="GDScript_1d6b7"]
|
||||||
|
script/source = "extends Button
|
||||||
|
|
||||||
|
@export var ChatSinhronizer : Node
|
||||||
|
@export var InputText : LineEdit
|
||||||
|
|
||||||
|
|
||||||
|
func _on_button_up():
|
||||||
|
if !InputText.text.is_empty():
|
||||||
|
ChatSinhronizer.send_message(InputText.text)
|
||||||
|
InputText.text = \"\"
|
||||||
|
"
|
||||||
|
|
||||||
|
[sub_resource type="GDScript" id="GDScript_o4vgu"]
|
||||||
|
script/source = "extends Button
|
||||||
|
|
||||||
|
var instanceName : String
|
||||||
|
"
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_4mwjp"]
|
[sub_resource type="GDScript" id="GDScript_4mwjp"]
|
||||||
script/source = "extends Button
|
script/source = "extends Button
|
||||||
|
|
||||||
|
|
||||||
func _ready():
|
|
||||||
multiplayer.server_disconnected.connect(_server_disconnect)
|
|
||||||
|
|
||||||
|
|
||||||
func _on_button_up():
|
func _on_button_up():
|
||||||
multiplayer.emit_signal(\"server_disconnected\")
|
multiplayer.emit_signal(\"server_disconnected\")
|
||||||
|
|
||||||
|
|
||||||
func _server_disconnect():
|
|
||||||
get_tree().change_scene_to_packed(load(\"res://data/scenes/main_menu/main_menu.tscn\"))
|
|
||||||
"
|
"
|
||||||
|
|
||||||
[node name="Lobbies" type="Node"]
|
[node name="Lobbies" type="Node"]
|
||||||
|
|
||||||
[node name="GamesSinhronizer" type="Node" parent="." node_paths=PackedStringArray("GameBox", "SearchLine", "PopUpError", "LobbieUI", "GamePanel")]
|
[node name="GamesSinhronizer" type="Node" parent="." node_paths=PackedStringArray("GameBox", "SearchLine", "PopUpError", "LobbieUI", "GamePanel", "ContinueGame")]
|
||||||
script = ExtResource("2_a6k32")
|
script = ExtResource("2_a6k32")
|
||||||
GameBox = NodePath("../LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/GamesScroll/GamesBox")
|
GameBox = NodePath("../LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/GamesScroll/GamesBox")
|
||||||
SearchLine = NodePath("../LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/Search/GameSearch")
|
SearchLine = NodePath("../LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/Search/GameSearch")
|
||||||
PopUpError = NodePath("../PopupError")
|
PopUpError = NodePath("../PopupError")
|
||||||
LobbieUI = NodePath("../LobbieUI")
|
LobbieUI = NodePath("../LobbieUI")
|
||||||
GamePanel = NodePath("../LobbieUI/MainMarginContainer/GamePanel")
|
GamePanel = NodePath("../LobbieUI/MainMarginContainer/GamePanel")
|
||||||
|
ContinueGame = NodePath("../LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer/ContinueGame")
|
||||||
|
|
||||||
[node name="ChatSinhronizer" type="Node" parent="." node_paths=PackedStringArray("GlobalChat")]
|
[node name="ChatSinhronizer" type="Node" parent="." node_paths=PackedStringArray("GlobalChat")]
|
||||||
script = ExtResource("2_cc8va")
|
script = ExtResource("2_cc8va")
|
||||||
|
@ -195,13 +207,24 @@ deselect_on_focus_loss_enabled = false
|
||||||
drag_and_drop_selection_enabled = false
|
drag_and_drop_selection_enabled = false
|
||||||
metadata/_edit_use_anchors_ = true
|
metadata/_edit_use_anchors_ = true
|
||||||
|
|
||||||
[node name="GlobalChatMessage" type="LineEdit" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer/GlobalChatContainer" node_paths=PackedStringArray("ChatSinhronizer")]
|
[node name="InputContainer" type="HBoxContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer/GlobalChatContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="GlobalChatMessage" type="LineEdit" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer/GlobalChatContainer/InputContainer" node_paths=PackedStringArray("ChatSinhronizer")]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 8
|
size_flags_vertical = 8
|
||||||
placeholder_text = "$your_message"
|
placeholder_text = "$your_message"
|
||||||
caret_blink = true
|
caret_blink = true
|
||||||
script = SubResource("GDScript_2o8xy")
|
script = SubResource("GDScript_2o8xy")
|
||||||
ChatSinhronizer = NodePath("../../../../../../../../ChatSinhronizer")
|
ChatSinhronizer = NodePath("../../../../../../../../../ChatSinhronizer")
|
||||||
|
|
||||||
|
[node name="SendButton" type="Button" parent="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer/GlobalChatContainer/InputContainer" node_paths=PackedStringArray("ChatSinhronizer", "InputText")]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "$Send"
|
||||||
|
script = SubResource("GDScript_1d6b7")
|
||||||
|
ChatSinhronizer = NodePath("../../../../../../../../../ChatSinhronizer")
|
||||||
|
InputText = NodePath("../GlobalChatMessage")
|
||||||
|
|
||||||
[node name="ButtonsContainer" type="HBoxContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer"]
|
[node name="ButtonsContainer" type="HBoxContainer" parent="LobbieUI/MainMarginContainer/MainUIContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
@ -211,6 +234,13 @@ layout_mode = 2
|
||||||
size_flags_horizontal = 2
|
size_flags_horizontal = 2
|
||||||
text = "$CreateGame"
|
text = "$CreateGame"
|
||||||
|
|
||||||
|
[node name="ContinueGame" type="Button" parent="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer"]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
text = "$ContinueGame"
|
||||||
|
script = SubResource("GDScript_o4vgu")
|
||||||
|
|
||||||
[node name="Back" type="Button" parent="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer"]
|
[node name="Back" type="Button" parent="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 10
|
size_flags_horizontal = 10
|
||||||
|
@ -226,7 +256,9 @@ layout_mode = 2
|
||||||
|
|
||||||
[connection signal="user_push_ok" from="PopupError" to="GamesSinhronizer" method="_on_popup_error_user_push_ok"]
|
[connection signal="user_push_ok" from="PopupError" to="GamesSinhronizer" method="_on_popup_error_user_push_ok"]
|
||||||
[connection signal="button_up" from="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/Search/SearchButton" to="GamesSinhronizer" method="_on_search_button_button_up"]
|
[connection signal="button_up" from="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GamesBackground/GamesMarginContainer/GamesContainer/Search/SearchButton" to="GamesSinhronizer" method="_on_search_button_button_up"]
|
||||||
|
[connection signal="button_up" from="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer/GlobalChatContainer/InputContainer/SendButton" to="LobbieUI/MainMarginContainer/MainUIContainer/MainContainer/GlobalChatBackground/GlobalChatMarginContainer/GlobalChatContainer/InputContainer/SendButton" method="_on_button_up"]
|
||||||
[connection signal="button_up" from="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer/CreateGame" to="GamesSinhronizer" method="_on_create_game_button_up"]
|
[connection signal="button_up" from="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer/CreateGame" to="GamesSinhronizer" method="_on_create_game_button_up"]
|
||||||
|
[connection signal="button_up" from="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer/ContinueGame" to="GamesSinhronizer" method="_on_continue_game_button_up"]
|
||||||
[connection signal="button_up" from="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer/Back" to="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer/Back" method="_on_button_up"]
|
[connection signal="button_up" from="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer/Back" to="LobbieUI/MainMarginContainer/MainUIContainer/ButtonsContainer/Back" method="_on_button_up"]
|
||||||
[connection signal="back_pushed" from="LobbieUI/MainMarginContainer/GamePanel" to="GamesSinhronizer" method="_on_game_panel_back_pushed"]
|
[connection signal="back_pushed" from="LobbieUI/MainMarginContainer/GamePanel" to="GamesSinhronizer" method="_on_game_panel_back_pushed"]
|
||||||
[connection signal="create_pushed" from="LobbieUI/MainMarginContainer/GamePanel" to="GamesSinhronizer" method="_on_game_panel_create_pushed"]
|
[connection signal="create_pushed" from="LobbieUI/MainMarginContainer/GamePanel" to="GamesSinhronizer" method="_on_game_panel_create_pushed"]
|
||||||
|
|
|
@ -49,6 +49,9 @@ func _on_login_btn_button_down():
|
||||||
|
|
||||||
|
|
||||||
func _on_connected_ok():
|
func _on_connected_ok():
|
||||||
|
var player = GATEWAY._get_player(GATEWAY.clientId)
|
||||||
|
if player:
|
||||||
|
player.login = LoginInput.text
|
||||||
InfoText.text = "Connected to %s on port %s" % [GATEWAY.settings.Ip, GATEWAY.settings.Port]
|
InfoText.text = "Connected to %s on port %s" % [GATEWAY.settings.Ip, GATEWAY.settings.Port]
|
||||||
await get_tree().create_timer(5).timeout
|
await get_tree().create_timer(5).timeout
|
||||||
GATEWAY.rpc_id(1, 'authorization', LoginInput.text, PasswordInput.text.md5_text())
|
GATEWAY.rpc_id(1, 'authorization', LoginInput.text, PasswordInput.text.md5_text())
|
||||||
|
@ -77,6 +80,7 @@ func _on_authorization_fail():
|
||||||
|
|
||||||
|
|
||||||
func _on_authorization_ok():
|
func _on_authorization_ok():
|
||||||
|
GATEWAY.playerLogin = LoginInput.text
|
||||||
start_lobbies()
|
start_lobbies()
|
||||||
|
|
||||||
|
|
||||||
|
@ -125,10 +129,15 @@ func _on_registration_ok():
|
||||||
RegistrationPasswordInput_2.editable = true
|
RegistrationPasswordInput_2.editable = true
|
||||||
LoginContainer.visible = true
|
LoginContainer.visible = true
|
||||||
RegistrationContainer.visible = false
|
RegistrationContainer.visible = false
|
||||||
|
GATEWAY.playerLogin = RegistrationInput.text
|
||||||
start_lobbies()
|
start_lobbies()
|
||||||
|
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------#
|
#--------------------------------------------------------------------------------------------------#
|
||||||
# Functions
|
# Functions
|
||||||
func start_lobbies():
|
func start_lobbies():
|
||||||
get_tree().change_scene_to_packed(load("res://data/scenes/lobbies/Lobbies.tscn"))
|
var Lobbies = preload("res://data/scenes/lobbies/Lobbies.tscn").instantiate()
|
||||||
|
var current_scene = get_tree().get_current_scene()
|
||||||
|
current_scene.queue_free()
|
||||||
|
get_tree().root.add_child(Lobbies)
|
||||||
|
get_tree().set_current_scene(Lobbies)
|
||||||
|
|
|
@ -10,6 +10,10 @@ var settings : Dictionary = {
|
||||||
Port = 3300,
|
Port = 3300,
|
||||||
}
|
}
|
||||||
var clientId : int
|
var clientId : int
|
||||||
|
var playerName : String
|
||||||
|
var playerToken : String
|
||||||
|
var playerLogin : String
|
||||||
|
var is_reconnected : bool = false
|
||||||
|
|
||||||
# Signals
|
# Signals
|
||||||
signal unauthorizated
|
signal unauthorizated
|
||||||
|
@ -86,7 +90,14 @@ func _on_server_disconnected():
|
||||||
player.queue_free()
|
player.queue_free()
|
||||||
if debug:
|
if debug:
|
||||||
print('Disconnected from server')
|
print('Disconnected from server')
|
||||||
multiplayer.multiplayer_peer = null
|
multiplayer.multiplayer_peer.close()
|
||||||
|
if !is_reconnected:
|
||||||
|
var lobbies = get_node_or_null("Lobbies")
|
||||||
|
if lobbies:
|
||||||
|
lobbies.queue_free()
|
||||||
|
get_tree().change_scene_to_packed(load("res://data/scenes/main_menu/main_menu.tscn"))
|
||||||
|
else:
|
||||||
|
connect_to_server()
|
||||||
|
|
||||||
|
|
||||||
func _on_connected_ok():
|
func _on_connected_ok():
|
||||||
|
@ -96,6 +107,9 @@ func _on_connected_ok():
|
||||||
player.clientId = clientId
|
player.clientId = clientId
|
||||||
player.name = str(clientId)
|
player.name = str(clientId)
|
||||||
add_child(player)
|
add_child(player)
|
||||||
|
if is_reconnected:
|
||||||
|
autentification.rpc_id(1, playerToken, playerLogin)
|
||||||
|
is_reconnected = false
|
||||||
if debug:
|
if debug:
|
||||||
print('Connect to server')
|
print('Connect to server')
|
||||||
|
|
||||||
|
@ -104,6 +118,9 @@ func _on_connected_fail():
|
||||||
if debug:
|
if debug:
|
||||||
print('Connection failed')
|
print('Connection failed')
|
||||||
multiplayer.multiplayer_peer = null
|
multiplayer.multiplayer_peer = null
|
||||||
|
if is_reconnected:
|
||||||
|
is_reconnected = false
|
||||||
|
get_tree().change_scene_to_packed(load("res://data/scenes/main_menu/main_menu.tscn"))
|
||||||
|
|
||||||
|
|
||||||
func _on_authorization_fail():
|
func _on_authorization_fail():
|
||||||
|
@ -125,9 +142,15 @@ func _on_registration_fail(_reason : String):
|
||||||
@rpc("any_peer", "reliable", "call_local", 1)
|
@rpc("any_peer", "reliable", "call_local", 1)
|
||||||
func authorization(): pass
|
func authorization(): pass
|
||||||
|
|
||||||
|
|
||||||
@rpc("any_peer", "reliable", "call_local", 1)
|
@rpc("any_peer", "reliable", "call_local", 1)
|
||||||
func registration(): pass
|
func registration(): pass
|
||||||
|
|
||||||
|
|
||||||
|
@rpc("any_peer", "reliable", "call_local", 1)
|
||||||
|
func autentification(_token: String): pass
|
||||||
|
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------#
|
#--------------------------------------------------------------------------------------------------#
|
||||||
# RPC Client
|
# RPC Client
|
||||||
@rpc("any_peer", "reliable", "call_local", 1)
|
@rpc("any_peer", "reliable", "call_local", 1)
|
||||||
|
|
|
@ -31,3 +31,12 @@ $data_base_error,Data base error,Помилка бази даних,Ошибка
|
||||||
$GameName,Game name,Назва гри,Название игры
|
$GameName,Game name,Назва гри,Название игры
|
||||||
$MaxPlayers,Max players,Макс.гравців,Макс.игроков
|
$MaxPlayers,Max players,Макс.гравців,Макс.игроков
|
||||||
$leave_empty_for_open_game,Leave blank for open play,Залиште поле порожнім для відкритої гри,Оставьте поле пустым для открытой игры
|
$leave_empty_for_open_game,Leave blank for open play,Залиште поле порожнім для відкритої гри,Оставьте поле пустым для открытой игры
|
||||||
|
$Send,Send,Надіслати,Отправить
|
||||||
|
$ContinueGame,Continue game,Продовжити гру,Продолжить игру
|
||||||
|
$GameLeader,Game leader,Ведучій,Ведущий
|
||||||
|
$Players,Players count,Гравців,Игроков
|
||||||
|
$InGameLobbie,Players,Гравці,Игроки
|
||||||
|
$ConnectToGame,Join the game,Приєднатись до гри,Присоединяйтесь к игре
|
||||||
|
$GameChat,Game chat,Ігровий чат,Игровой чат
|
||||||
|
$StartGame,Start game,Почати гру,Начать игру
|
||||||
|
$ReadyGame,Ready,Готовий,Готов
|
|
|
@ -33,6 +33,7 @@ GATEWAY="*res://data/scripts/objects/GateWay.gd"
|
||||||
|
|
||||||
window/size/viewport_width=800
|
window/size/viewport_width=800
|
||||||
window/size/viewport_height=600
|
window/size/viewport_height=600
|
||||||
|
window/stretch/mode="canvas_items"
|
||||||
window/stretch/aspect="expand"
|
window/stretch/aspect="expand"
|
||||||
window/ios/allow_high_refresh_rate=false
|
window/ios/allow_high_refresh_rate=false
|
||||||
window/ios/hide_home_indicator=false
|
window/ios/hide_home_indicator=false
|
||||||
|
|
Loading…
Reference in New Issue