Client/scripts/ui/login/login.gd

52 lines
1.2 KiB
GDScript3
Raw Normal View History

class_name Login
2025-02-15 11:43:22 +01:00
extends Button
signal login_successful(session: PlayerLoginSession)
2025-02-25 11:27:21 +01:00
signal login_error(error: ApiError)
2025-02-15 11:43:22 +01:00
@export var username_field: LineEdit
@export var password_field: LineEdit
@export var api_config: ApiConfig
2025-03-04 15:25:27 +01:00
@export var next_view: Control
2025-02-15 11:43:22 +01:00
var api: ServerApi
func _ready() -> void:
if not username_field:
push_error("No Username Field set")
return
if not password_field:
push_error("No Password Field set")
return
if not api_config:
push_error("No API Configuration provided")
return
2025-03-04 15:25:27 +01:00
if not next_view:
push_error("No next view configured")
return
2025-02-15 11:43:22 +01:00
api = ServerApi.new(api_config)
connect("pressed", login)
2025-02-15 12:50:25 +01:00
username_field.connect("text_submitted", login_wrapper)
password_field.connect("text_submitted", login_wrapper)
func login_wrapper(_text) -> void:
login()
2025-02-15 11:43:22 +01:00
func login() -> void:
var login_data = PlayerLoginData.new()
login_data.username = username_field.text
login_data.password = password_field.text
api.player_login(login_data, on_success, on_error)
2025-02-15 12:50:25 +01:00
func on_success(response: ApiResponse) -> void:
2025-03-04 15:25:27 +01:00
ConnectionChannel.connect_to_channel(response.data.token)
next_view.visible = true
login_successful.emit(response.data)
2025-02-15 11:43:22 +01:00
2025-02-15 12:50:25 +01:00
func on_error(error: ApiError) -> void:
2025-02-25 11:27:21 +01:00
login_error.emit(error)