summaryrefslogtreecommitdiff
path: root/ui/login.gd
diff options
context:
space:
mode:
Diffstat (limited to 'ui/login.gd')
-rw-r--r--ui/login.gd34
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