diff options
Diffstat (limited to 'ui/login.gd')
-rw-r--r-- | ui/login.gd | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/ui/login.gd b/ui/login.gd index ab4b891..70cc52e 100644 --- a/ui/login.gd +++ b/ui/login.gd @@ -35,9 +35,20 @@ func _on_login_pressed() -> void: Client.show_message_window("Couldn't connect to server at 127.0.0.1", "Connection Error", %Login/Window, SIDE_BOTTOM) return - Network.login_server.login(username.text, password.text) + var response = await Network.login_server.login(username.text, password.text) + if response is LoginFailedPacket: + var message := "" + if response.reason == Constants.LoginFailedReason.ServerClosed: + message = "Server closed connection" + elif response.reason == Constants.LoginFailedReason.AlreadyLoggedIn: + message = "Already logged in" + elif response.reason == Constants.LoginFailedReason.AlreadyOnline: + message = "Already online" + + Client.show_message_window(message, "Login Error", %Login/Window, SIDE_BOTTOM) + return - account_information = await Network.login_server.logged_in + account_information = response character_server_information = account_information.character_server_information Client.account.id = account_information.account_id @@ -50,7 +61,7 @@ func _on_login_pressed() -> void: for idx in character_server_information.size(): var info: CharacterServerInformation = character_server_information[idx] var select_character_server: Button = preload("res://ui/login/character_server_button.tscn").instantiate() - select_character_server.text = info.server_name + select_character_server.text = "%s (%d)" % [info.server_name, info.user_count] select_character_server.pressed.connect(_on_character_server_login_pressed.bind(info, idx)) %CharacterServerList.add_child(select_character_server) @@ -78,24 +89,27 @@ func _on_character_server_login_pressed(character_server_info: CharacterServerIn ) Network.character_server.establish_connection() - Network.character_server.login( + var response := await Network.character_server.login( account_information.account_id, account_information.login_id1, account_information.login_id2, account_information.gender ) - var response = await Network.character_server.received_packet - if response is CharacterSelectionFailedPacket: - print("character server login failed") - %ChatWindow.add_message("character server login failed", ChatMessageFormat.new()) + if response.login is CharacterSelectionFailedPacket: + Client.show_message_window( + "Connection rejected from server \"%s\" at %s" % [ + character_server_info.server_name, character_server_info.get_server_ip() + ], + "Connection Error", %CharacterServer/Window, SIDE_BOTTOM + ) return get_tree().root.add_child(Network.character_server.get_keep_alive_timer()) - var character_list: CharacterServerLoginSuccessCharacterListPacket = await Network.character_server.logged_in_character_list + var character_list: CharacterServerLoginSuccessCharacterListPacket = response.character_list - var login_character_list := LoginCharacterList.from_character_list_packet(character_list) + var login_character_list := LoginCharacterList.from_character_list_login_packet(character_list) %CharacterSelectionList.login_character_list = login_character_list %CharacterSelectionList.selected.connect(func(slot_idx: int): current_character_slot_idx = slot_idx |