feat: added user registration

pull/6/head
Евгений Сугоняко 2024-05-12 15:30:57 +03:00
parent 2257bc4a9f
commit 77f5fc96ef
3 changed files with 119 additions and 2 deletions

View File

@ -5,6 +5,14 @@ extends Control
@export var PasswordInput : LineEdit @export var PasswordInput : LineEdit
@export var LoginBtn : Button @export var LoginBtn : Button
@export var RegistrationInput : LineEdit
@export var RegistrationPasswordInput : LineEdit
@export var RegistrationPasswordInput_2 : LineEdit
@export var RegistrationBtn : Button
@export var LoginContainer : VBoxContainer
@export var RegistrationContainer : VBoxContainer
#--------------------------------------------------------------------------------------------------# #--------------------------------------------------------------------------------------------------#
# Initialization # Initialization
func _ready(): func _ready():
@ -30,7 +38,7 @@ func _on_login_btn_button_down():
if response != Error.OK: if response != Error.OK:
InfoText.text = "Error connect to %s on port %s. ERROR: %s" % [GATEWAY.settings.Ip, GATEWAY.settings.Port, error_string(response)] InfoText.text = "Error connect to %s on port %s. ERROR: %s" % [GATEWAY.settings.Ip, GATEWAY.settings.Port, error_string(response)]
else: else:
response = GATEWAY.rpc_id(1, 'authorization', LoginInput.text, PasswordInput.text.md5_text()) GATEWAY.rpc_id(1, 'authorization', LoginInput.text, PasswordInput.text.md5_text())
func _on_connected_ok(): func _on_connected_ok():
@ -61,3 +69,27 @@ func _on_authorization_fail():
func _on_authorization_ok(): func _on_authorization_ok():
pass pass
func _on_registration_button_button_down():
LoginContainer.visible = false
RegistrationContainer.visible = true
func _on_back_btn_button_down():
LoginContainer.visible = true
RegistrationContainer.visible = false
func _on_registration_btn_button_up():
RegistrationBtn.disabled = true
RegistrationInput.editable = false
RegistrationPasswordInput.editable = false
RegistrationPasswordInput_2.editable = false
InfoText.text = "Try connected to %s on port %s...wait please..." % [GATEWAY.settings.Ip, GATEWAY.settings.Port]
var response = await GATEWAY.connect_to_server()
if response != Error.OK:
InfoText.text = "Error connect to %s on port %s. ERROR: %s" % [GATEWAY.settings.Ip, GATEWAY.settings.Port, error_string(response)]
else:
if RegistrationPasswordInput.text.md5_text() == RegistrationPasswordInput_2.text.md5_text():
GATEWAY.rpc_id(1, 'registration', LoginInput.text, RegistrationPasswordInput.text.md5_text())

View File

@ -17,7 +17,7 @@ font_color = Color(0.870032, 0.618438, 0.0727505, 1)
outline_size = 1 outline_size = 1
outline_color = Color(0, 0, 0, 1) outline_color = Color(0, 0, 0, 1)
[node name="LoginSreen" type="Control" node_paths=PackedStringArray("InfoText", "LoginInput", "PasswordInput", "LoginBtn")] [node name="LoginSreen" type="Control" node_paths=PackedStringArray("InfoText", "LoginInput", "PasswordInput", "LoginBtn", "RegistrationInput", "RegistrationPasswordInput", "RegistrationPasswordInput_2", "RegistrationBtn", "LoginContainer", "RegistrationContainer")]
layout_mode = 3 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@ -31,6 +31,12 @@ InfoText = NodePath("MainBox/InfoBob/InfoText")
LoginInput = NodePath("MainBox/LoginBox/LoginPanelBox/LoginInput") LoginInput = NodePath("MainBox/LoginBox/LoginPanelBox/LoginInput")
PasswordInput = NodePath("MainBox/LoginBox/LoginPanelBox/PasswordInput") PasswordInput = NodePath("MainBox/LoginBox/LoginPanelBox/PasswordInput")
LoginBtn = NodePath("MainBox/LoginBox/LoginPanelBox/LoginButtonsBox/LoginBtn") LoginBtn = NodePath("MainBox/LoginBox/LoginPanelBox/LoginButtonsBox/LoginBtn")
RegistrationInput = NodePath("MainBox/LoginBox/RegistrationPanelBox/LoginInput")
RegistrationPasswordInput = NodePath("MainBox/LoginBox/RegistrationPanelBox/PasswordInput")
RegistrationPasswordInput_2 = NodePath("MainBox/LoginBox/RegistrationPanelBox/PasswordInput_2")
RegistrationBtn = NodePath("MainBox/LoginBox/RegistrationPanelBox/RegistrationButtonsBox/RegistrationBtn")
LoginContainer = NodePath("MainBox/LoginBox/LoginPanelBox")
RegistrationContainer = NodePath("MainBox/LoginBox/RegistrationPanelBox")
[node name="Background" type="ColorRect" parent="."] [node name="Background" type="ColorRect" parent="."]
layout_mode = 1 layout_mode = 1
@ -126,6 +132,59 @@ layout_mode = 2
size_flags_horizontal = 10 size_flags_horizontal = 10
text = "Exit" text = "Exit"
[node name="RegistrationButton" type="Button" parent="MainBox/LoginBox/LoginPanelBox"]
layout_mode = 2
text = "Registration"
flat = true
[node name="RegistrationPanelBox" type="VBoxContainer" parent="MainBox/LoginBox"]
visible = false
layout_mode = 2
size_flags_vertical = 4
theme_override_constants/separation = 10
[node name="RegistrationLabel" type="Label" parent="MainBox/LoginBox/RegistrationPanelBox"]
layout_mode = 2
size_flags_vertical = 2
text = "Registrate on Cashflow World"
label_settings = SubResource("LabelSettings_iy7sm")
horizontal_alignment = 1
[node name="LoginInput" type="LineEdit" parent="MainBox/LoginBox/RegistrationPanelBox"]
layout_mode = 2
size_flags_vertical = 2
placeholder_text = "login"
alignment = 1
[node name="PasswordInput" type="LineEdit" parent="MainBox/LoginBox/RegistrationPanelBox"]
layout_mode = 2
size_flags_vertical = 2
placeholder_text = "password"
alignment = 1
secret = true
[node name="PasswordInput_2" type="LineEdit" parent="MainBox/LoginBox/RegistrationPanelBox"]
layout_mode = 2
size_flags_vertical = 2
placeholder_text = "password repeat"
alignment = 1
secret = true
[node name="RegistrationButtonsBox" type="HBoxContainer" parent="MainBox/LoginBox/RegistrationPanelBox"]
layout_mode = 2
size_flags_vertical = 10
theme_override_constants/separation = 10
[node name="RegistrationBtn" type="Button" parent="MainBox/LoginBox/RegistrationPanelBox/RegistrationButtonsBox"]
layout_mode = 2
size_flags_horizontal = 2
text = "Registrate"
[node name="BackBtn" type="Button" parent="MainBox/LoginBox/RegistrationPanelBox/RegistrationButtonsBox"]
layout_mode = 2
size_flags_horizontal = 10
text = "Back"
[node name="InfoBob" type="MarginContainer" parent="MainBox"] [node name="InfoBob" type="MarginContainer" parent="MainBox"]
layout_mode = 2 layout_mode = 2
theme_override_constants/margin_left = 5 theme_override_constants/margin_left = 5
@ -139,3 +198,6 @@ horizontal_alignment = 1
[connection signal="button_down" from="MainBox/LoginBox/LoginPanelBox/LoginButtonsBox/LoginBtn" to="." method="_on_login_btn_button_down"] [connection signal="button_down" from="MainBox/LoginBox/LoginPanelBox/LoginButtonsBox/LoginBtn" to="." method="_on_login_btn_button_down"]
[connection signal="pressed" from="MainBox/LoginBox/LoginPanelBox/LoginButtonsBox/ExitBtn" to="." method="_on_exit_btn_pressed"] [connection signal="pressed" from="MainBox/LoginBox/LoginPanelBox/LoginButtonsBox/ExitBtn" to="." method="_on_exit_btn_pressed"]
[connection signal="button_down" from="MainBox/LoginBox/LoginPanelBox/RegistrationButton" to="." method="_on_registration_button_button_down"]
[connection signal="button_up" from="MainBox/LoginBox/RegistrationPanelBox/RegistrationButtonsBox/RegistrationBtn" to="." method="_on_registration_btn_button_up"]
[connection signal="button_down" from="MainBox/LoginBox/RegistrationPanelBox/RegistrationButtonsBox/BackBtn" to="." method="_on_back_btn_button_down"]

View File

@ -15,6 +15,9 @@ var clientId : int
signal unauthorizated signal unauthorizated
signal authorizated signal authorizated
signal unregistrated
signal registrated
#--------------------------------------------------------------------------------------------------# #--------------------------------------------------------------------------------------------------#
# Initialization # Initialization
@ -40,6 +43,7 @@ func _ready():
multiplayer.connected_to_server.connect(_on_connected_ok) multiplayer.connected_to_server.connect(_on_connected_ok)
multiplayer.connection_failed.connect(_on_connected_fail) multiplayer.connection_failed.connect(_on_connected_fail)
self.unauthorizated.connect(_on_authorization_fail) self.unauthorizated.connect(_on_authorization_fail)
self.unregistrated.connect(_on_registration_fail)
#--------------------------------------------------------------------------------------------------# #--------------------------------------------------------------------------------------------------#
# Methods # Methods
@ -109,7 +113,26 @@ func _on_authorization_fail():
multiplayer.emit_signal("server_disconnected") multiplayer.emit_signal("server_disconnected")
func _on_registration_fail(_reason : String):
if debug:
print('Authorization failed: ' + _reason)
multiplayer.multiplayer_peer = null
multiplayer.emit_signal("server_disconnected")
#--------------------------------------------------------------------------------------------------# #--------------------------------------------------------------------------------------------------#
# RPC Server # RPC Server
@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)
func registration(): pass
#--------------------------------------------------------------------------------------------------#
# RPC Client
@rpc("any_peer", "reliable", "call_local", 1)
func is_registrated(_isRegistrated, _reason):
if !_isRegistrated:
self.registrated.emit(_reason)
else:
self.unregistrated.emit()