class_name Login extends Button signal login_successful(session: PlayerLoginSession) signal login_error(error: ApiError) @export var username_field: LineEdit @export var password_field: LineEdit @export var api_config: ApiConfig @export var next_view: Control 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 if not next_view: push_error("No next view configured") return api = ServerApi.new(api_config) connect("pressed", login) username_field.connect("text_submitted", login_wrapper) password_field.connect("text_submitted", login_wrapper) func login_wrapper(_text) -> void: login() 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) func on_success(response: ApiResponse) -> void: ConnectionChannel.connect_to_channel(response.data.token) next_view.visible = true login_successful.emit(response.data) func on_error(error: ApiError) -> void: login_error.emit(error)