diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2025-01-17 22:09:25 +0100 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2025-01-17 22:09:25 +0100 |
commit | bd77c88efc9327805b6f6fd83fa0492ed59d0f9a (patch) | |
tree | 99ed473ec1c137b774bd5e2a0e2bca9e56daf691 | |
parent | e8f03c4d6a94aa16b3587bdce525cf0cf7c6c6c3 (diff) |
-rw-r--r-- | client.gd | 11 | ||||
-rw-r--r-- | constants.gd | 16 | ||||
-rw-r--r-- | data_models/login_character_list.gd | 15 | ||||
-rw-r--r-- | extractor/extractor_interface.gd | 4 | ||||
-rw-r--r-- | extractor/grf.gd | 14 | ||||
-rw-r--r-- | extractor/rsm_format.gd | 2 | ||||
-rw-r--r-- | extractor/rsw_format.gd | 4 | ||||
-rw-r--r-- | network/character_server.gd | 31 | ||||
-rw-r--r-- | network/login_server.gd | 8 | ||||
-rw-r--r-- | network/server.gd | 8 | ||||
-rw-r--r-- | packets/character_server/character_server_login_success_character_list_packet.gd | 4 | ||||
-rw-r--r-- | ui/login.gd | 34 | ||||
-rw-r--r-- | ui/login.tscn | 28 | ||||
-rw-r--r-- | ui/login/character_selection_item.tscn | 2 | ||||
-rw-r--r-- | ui/login/character_server_button.tscn | 1 | ||||
-rw-r--r-- | ui/login/character_server_button_style_box.tres | 11 | ||||
-rw-r--r-- | ui/login/login_character_selection_list.tscn | 24 | ||||
-rw-r--r-- | ui/theme.tres | 6 | ||||
-rw-r--r-- | ui/theme_clear.tres | 79 | ||||
-rw-r--r-- | ui/window.tscn | 32 |
20 files changed, 185 insertions, 149 deletions
@@ -30,16 +30,21 @@ func show_message_window( if anchor == SIDE_TOP: window.global_position.y -= window.size.y - window.size.x = max(window.size.x, attached_to.size.x) elif anchor == SIDE_BOTTOM: window.global_position.y += attached_to.size.y - window.size.x = max(window.size.x, attached_to.size.x) elif anchor == SIDE_LEFT: window.global_position.x -= window.size.x - window.size.y = max(window.size.y, attached_to.size.y) elif anchor == SIDE_RIGHT: window.global_position.x += attached_to.size.x + + if anchor == SIDE_TOP or anchor == SIDE_BOTTOM: + window.size.x = max(window.size.x, attached_to.size.x) + if window.size.x > attached_to.size.x: + window.global_position.x -= (window.size.x - attached_to.size.x) * 0.5 + elif anchor == SIDE_LEFT or anchor == SIDE_RIGHT: window.size.y = max(window.size.y, attached_to.size.y) + if window.size.y > attached_to.size.y: + window.global_position.y -= (window.size.y - attached_to.size.y) * 0.5 # else add window in center else: diff --git a/constants.gd b/constants.gd index 322c85a..e495322 100644 --- a/constants.gd +++ b/constants.gd @@ -79,21 +79,26 @@ enum Direction { static var PacketDB = { - #LoginServerLoginPacket.HEADER: LoginServerLoginPacket, + LoginServerLoginPacket.HEADER: LoginServerLoginPacket, + LoginServerKeepAlivePacket.HEADER: LoginServerKeepAlivePacket, + CharacterServerLoginPacket.HEADER: CharacterServerLoginPacket, + CharacterServerKeepAlivePacket.HEADER: CharacterServerKeepAlivePacket, + RequestCharacterListPacket.HEADER: RequestCharacterListPacket, + SelectCharacterPacket.HEADER: SelectCharacterPacket, + MapServerLoginPacket.HEADER: MapServerLoginPacket, + MapLoadedPacket.HEADER: MapLoadedPacket, + SendChatMessagePacket.HEADER: SendChatMessagePacket, + LoginServerLoginSuccessPacket.HEADER: LoginServerLoginSuccessPacket, - #CharacterServerLoginPacket.HEADER: CharacterServerLoginPacket, CharacterServerLoginSuccessPacket.HEADER: CharacterServerLoginSuccessPacket, CharacterServerLoginSuccessCharacterListPacket.HEADER: CharacterServerLoginSuccessCharacterListPacket, CharacterListSizePacket.HEADER: CharacterListSizePacket, LoginFailedPacket.HEADER: LoginFailedPacket, BlockCharacterPacket.HEADER: BlockCharacterPacket, PinCodeStatePacket.HEADER: PinCodeStatePacket, - #RequestCharacterListPacket.HEADER: RequestCharacterListPacket, RequestCharacterListSuccessPacket.HEADER: RequestCharacterListSuccessPacket, - #SelectCharacterPacket.HEADER: SelectCharacterPacket, CharacterSelectionSuccessPacket.HEADER: CharacterSelectionSuccessPacket, CharacterSelectionFailedPacket.HEADER: CharacterSelectionFailedPacket, - #MapServerLoginPacket.HEADER: MapServerLoginPacket, MapServerLoginSuccessPacket.HEADER: MapServerLoginSuccessPacket, FriendListPacket.HEADER: FriendListPacket, ServerMessagePacket.HEADER: ServerMessagePacket, @@ -106,7 +111,6 @@ static var PacketDB = { AchievementUpdatePacket.HEADER: AchievementUpdatePacket, AchievementListPacket.HEADER: AchievementListPacket, UpdateCriticalWeightPacket.HEADER: UpdateCriticalWeightPacket, - #MapLoadedPacket.HEADER: MapLoadedPacket, SpriteChangePacket.HEADER: SpriteChangePacket, InventoryStartPacket.HEADER: InventoryStartPacket, RegularItemListPacket.HEADER: RegularItemListPacket, diff --git a/data_models/login_character_list.gd b/data_models/login_character_list.gd index e638877..8a8d7d5 100644 --- a/data_models/login_character_list.gd +++ b/data_models/login_character_list.gd @@ -7,7 +7,7 @@ var slot_count: int var character_information: Array[CharacterInformation] -static func from_character_list_packet(packet: CharacterServerLoginSuccessCharacterListPacket) -> LoginCharacterList: +static func from_character_list_login_packet(packet: CharacterServerLoginSuccessCharacterListPacket) -> LoginCharacterList: var resource := LoginCharacterList.new() resource.slot_count = packet.maximum_slot_count @@ -16,6 +16,19 @@ static func from_character_list_packet(packet: CharacterServerLoginSuccessCharac return resource +static func from_character_list_request_response(response: Array) -> LoginCharacterList: + var resource := LoginCharacterList.new() + + # TODO + var size: CharacterListSizePacket = response[0] + var list: RequestCharacterListSuccessPacket = response[1] + + resource.slot_count = size.character_slot_count + resource.character_information = list.character_information + + return resource + + func get_info_for_slot(slot_idx: int): for info in character_information: if info.character_number == slot_idx: diff --git a/extractor/extractor_interface.gd b/extractor/extractor_interface.gd index e987ed3..3afedfd 100644 --- a/extractor/extractor_interface.gd +++ b/extractor/extractor_interface.gd @@ -2,8 +2,8 @@ extends Control func _ready() -> void: - var grf = GRF.open("res://client_data/data.grf") - grf.extract()#"user://client_data") + #var grf = GRF.open("res://client_data/data.grf") + #grf.extract()#"user://client_data") #grf.convert()#"user://client_data") #Sprite.from_bytes(FileAccess.get_file_as_bytes("res://client_data/data/sprite/cursors.spr")) diff --git a/extractor/grf.gd b/extractor/grf.gd index 84918de..fd0e6f7 100644 --- a/extractor/grf.gd +++ b/extractor/grf.gd @@ -203,13 +203,6 @@ func extract(destination: String = "user://client_data"): base_directory.make_dir_recursive(file_path.get_base_dir()) var file = FileAccess.open("%s/%s" % [destination, file_path], FileAccess.WRITE_READ) - - #if file_path.ends_with(".bmp"): - #var img := Image.create_empty(1, 1, false, Image.FORMAT_RGBA8) - #img.load_bmp_from_buffer(file_entry.get_contents(file_access)) - #img.save_png(file.get_path()) - #return - #else: file.store_buffer(file_entry.get_contents(file_access)) extracted_file.emit(idx) @@ -237,8 +230,13 @@ func convert(destination: String = "res://client_data"): if not FileAccess.file_exists("%s/%s" % [destination, file_path]): continue + # load existing bmp files, so language specific overwrites are kept + + var texture: CompressedTexture2D = load("%s/%s" % [destination, file_path]) + var texture_image := texture.get_image() + texture_image.decompress() var image := BMPTexture.convert_image( - Image.load_from_file("%s/%s" % [destination, file_path]), + texture_image, [Color.MAGENTA] ) image.save_png("%s/%s" % [destination, file_path.replace(".bmp", ".png")]) diff --git a/extractor/rsm_format.gd b/extractor/rsm_format.gd index 7eb41f0..c01826e 100644 --- a/extractor/rsm_format.gd +++ b/extractor/rsm_format.gd @@ -362,7 +362,7 @@ class ModelNode: node.translate(translation_2) if rotation_axis != Vector3.ZERO: - node.rotate_object_local(rotation_axis, rotation_angle) + node.rotation = rotation_axis * rotation_angle node.scale = scale diff --git a/extractor/rsw_format.gd b/extractor/rsw_format.gd index 1066168..85d873c 100644 --- a/extractor/rsw_format.gd +++ b/extractor/rsw_format.gd @@ -127,9 +127,7 @@ func convert(name: String, data_path: String) -> Node3D: var model_root := Node3D.new() model_root.name = resource.name model_root.position = resource.get_position() * Vector3(-1, 1, 1) - model_root.rotate_x(deg_to_rad(resource.get_rotation().x)) - model_root.rotate_y(deg_to_rad(resource.get_rotation().y)) - model_root.rotate_z(deg_to_rad(resource.get_rotation().z)) + model_root.rotation_degrees = resource.get_rotation() model_root.scale = resource.get_scale() node.add_child(model_root) diff --git a/network/character_server.gd b/network/character_server.gd index 4d3433b..60389e4 100644 --- a/network/character_server.gd +++ b/network/character_server.gd @@ -13,36 +13,44 @@ func _init(host: String, port: int = 6121) -> void: super._init(host, port) -func login(account_id: int, login_id1: int, login_id2: int, gender: Constants.Gender): +func login(account_id: int, login_id1: int, login_id2: int, gender: Constants.Gender) -> Dictionary: var character_server_login_packet = CharacterServerLoginPacket.new() character_server_login_packet.account_id = account_id character_server_login_packet.login_id1 = login_id1 character_server_login_packet.login_id2 = login_id2 character_server_login_packet.gender = gender - peer.put_data(character_server_login_packet.to_bytes()) + send(character_server_login_packet) peer.get_data(4) # in-between packet - var login_success_packet = await received_packet - if login_success_packet is CharacterServerLoginSuccessPacket: - print(inst_to_dict(login_success_packet)) - logged_in.emit(login_success_packet) + var login_response_packet = await received_packet + if login_response_packet is CharacterServerLoginSuccessPacket: + logged_in.emit(login_response_packet) var character_list_packet = await received_packet if character_list_packet is CharacterServerLoginSuccessCharacterListPacket: - print(inst_to_dict(character_list_packet)) - print(inst_to_dict(character_list_packet.character_information[0])) logged_in_character_list.emit(character_list_packet) + + var character_list_size_packet = await received_packet + var block_character_packet = await received_packet + var pin_code_state_packet = await received_packet + + return { + "login": login_response_packet, + "character_list": character_list_packet, + "character_list_size": character_list_size_packet, + "block_character": block_character_packet, + "pin_code_state": pin_code_state_packet, + } func request_character_list(): var request_character_list_packet = RequestCharacterListPacket.new() - peer.put_data(request_character_list_packet.to_bytes()) + send(request_character_list_packet) var packet = await received_packet if packet is RequestCharacterListSuccessPacket: - print(inst_to_dict(packet), inst_to_dict(packet.character_information[0])) requested_character_list.emit(packet) @@ -50,11 +58,10 @@ func select_character(slot: int): var select_character_packet = SelectCharacterPacket.new() select_character_packet.selected_slot = slot - peer.put_data(select_character_packet.to_bytes()) + send(select_character_packet) var packet = await received_packet if packet is CharacterSelectionSuccessPacket: - print(inst_to_dict(packet)) selected_character.emit(packet) diff --git a/network/login_server.gd b/network/login_server.gd index 715c73c..902c477 100644 --- a/network/login_server.gd +++ b/network/login_server.gd @@ -3,6 +3,7 @@ extends Server signal logged_in(packet: LoginServerLoginSuccessPacket) +signal login_failed(packet: LoginFailedPacket) @warning_ignore("shadowed_variable_base_class") @@ -15,12 +16,15 @@ func login(username: String, password: String): login_server_login_packet.username = username login_server_login_packet.password = password - peer.put_data(login_server_login_packet.to_bytes()) + send(login_server_login_packet) var packet = await received_packet if packet is LoginServerLoginSuccessPacket: - print(inst_to_dict(packet)) logged_in.emit(packet) + elif packet is LoginFailedPacket: + login_failed.emit(packet) + + return packet func get_keep_alive_timer() -> Timer: diff --git a/network/server.gd b/network/server.gd index efef6cb..56e9861 100644 --- a/network/server.gd +++ b/network/server.gd @@ -71,9 +71,13 @@ func listen() -> void: func send(packet: Packet) -> Error: - var display_header = packet.get_header() + var numerical_header := packet.get_header().decode_u16(0) + var display_header := packet.get_header() display_header.reverse() - print("Sent packet with header ", display_header.hex_encode()) + print("Sent packet %s with header %s" % [ + Constants.PacketDB[numerical_header].get_global_name(), + display_header.hex_encode(), + ]) return send_raw(packet.to_bytes()) diff --git a/packets/character_server/character_server_login_success_character_list_packet.gd b/packets/character_server/character_server_login_success_character_list_packet.gd index e3a649b..8a5874c 100644 --- a/packets/character_server/character_server_login_success_character_list_packet.gd +++ b/packets/character_server/character_server_login_success_character_list_packet.gd @@ -34,8 +34,8 @@ static func from_bytes(bytes: PackedByteArray): packet.packet_length = bytes.decode_u16(2) packet.maximum_slot_count = bytes.decode_u8(4) - packet.maximum_slot_count = bytes.decode_u8(5) - packet.maximum_slot_count = bytes.decode_u8(6) + packet.available_slot_count = bytes.decode_u8(5) + packet.vip_slot_count = bytes.decode_u8(6) packet.unknown = bytes.slice(7, 7 + 20) packet.character_information = CharacterInformation.array_from_bytes(bytes.slice(27)) 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 diff --git a/ui/login.tscn b/ui/login.tscn index 70b3a06..e889508 100644 --- a/ui/login.tscn +++ b/ui/login.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=19 format=3 uid="uid://dser74lcd3a4g"] +[gd_scene load_steps=24 format=3 uid="uid://dser74lcd3a4g"] [ext_resource type="Script" uid="uid://dqswsdaamfhbq" path="res://ui/login.gd" id="1_1m5cv"] [ext_resource type="Texture2D" uid="uid://cxd6dnc7s17vg" path="res://client_data/skin/login_background.jpg" id="2_elmti"] @@ -9,7 +9,11 @@ [ext_resource type="Texture2D" uid="uid://bern5mhol3l8y" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/btn_connect.bmp" id="4_wpax4"] [ext_resource type="Texture2D" uid="uid://c31u8nlyugk3p" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/btn_connect_b.bmp" id="5_7ogdv"] [ext_resource type="Texture2D" uid="uid://c5kctdb8b2msx" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/btn_connect_a.bmp" id="6_l3yss"] +[ext_resource type="Texture2D" uid="uid://l3c7ssoc4lxq" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/btn_connect.png" id="7_pfdi0"] +[ext_resource type="Texture2D" uid="uid://p7bxfof7gd0t" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/btn_connect_b.png" id="8_38pxr"] +[ext_resource type="Texture2D" uid="uid://ba8j1t53lqxr0" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/btn_connect_a.png" id="9_hqeko"] [ext_resource type="Theme" uid="uid://c6y6r8kcnbb10" path="res://ui/theme_clear.tres" id="9_toei2"] +[ext_resource type="PackedScene" uid="uid://f2urhroq21t0" path="res://ui/login/character_server_button.tscn" id="10_38pxr"] [ext_resource type="Texture2D" uid="uid://byn26biifjkng" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/btn_cancel.bmp" id="11_tihdy"] [ext_resource type="Texture2D" uid="uid://wvnt34j5mkvy" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/btn_cancel_b.bmp" id="12_mma3j"] [ext_resource type="Texture2D" uid="uid://pv886kwtlrq0" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/btn_cancel_a.bmp" id="13_0vsp3"] @@ -19,6 +23,9 @@ [ext_resource type="PackedScene" uid="uid://bxbprntny8duj" path="res://ui/login/login_character_selection_list.tscn" id="16_tihdy"] [ext_resource type="PackedScene" uid="uid://swtqlba1wi3o" path="res://ui/window.tscn" id="17_mma3j"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_pfdi0"] +bg_color = Color(0.977834, 0.977834, 0.977834, 1) + [node name="Login" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -112,9 +119,9 @@ secret_character = "*" layout_mode = 2 size_flags_horizontal = 8 theme = ExtResource("3_7ogdv") -texture_normal = ExtResource("4_wpax4") -texture_pressed = ExtResource("5_7ogdv") -texture_hover = ExtResource("6_l3yss") +texture_normal = ExtResource("7_pfdi0") +texture_pressed = ExtResource("8_38pxr") +texture_hover = ExtResource("9_hqeko") [node name="CharacterServer" type="CenterContainer" parent="."] unique_name_in_owner = true @@ -139,16 +146,23 @@ text = "Character Server" [node name="MarginContainer" type="MarginContainer" parent="CharacterServer/Window/VBoxContainer/Body" index="0"] layout_mode = 2 -theme_override_constants/margin_left = 4 +theme_override_constants/margin_left = 12 theme_override_constants/margin_top = 4 -theme_override_constants/margin_right = 4 +theme_override_constants/margin_right = 12 theme_override_constants/margin_bottom = 4 -[node name="CharacterServerList" type="VBoxContainer" parent="CharacterServer/Window/VBoxContainer/Body/MarginContainer"] +[node name="PanelContainer" type="PanelContainer" parent="CharacterServer/Window/VBoxContainer/Body/MarginContainer"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_pfdi0") + +[node name="CharacterServerList" type="VBoxContainer" parent="CharacterServer/Window/VBoxContainer/Body/MarginContainer/PanelContainer"] unique_name_in_owner = true layout_mode = 2 size_flags_vertical = 3 +[node name="CharacterServerButton" parent="CharacterServer/Window/VBoxContainer/Body/MarginContainer/PanelContainer/CharacterServerList" instance=ExtResource("10_38pxr")] +layout_mode = 2 + [node name="HBoxContainer" type="HBoxContainer" parent="CharacterServer/Window/VBoxContainer/ButtonBar/ButtonBarElements" index="0"] layout_mode = 2 diff --git a/ui/login/character_selection_item.tscn b/ui/login/character_selection_item.tscn index 4b8a249..de28392 100644 --- a/ui/login/character_selection_item.tscn +++ b/ui/login/character_selection_item.tscn @@ -4,7 +4,7 @@ [ext_resource type="Texture2D" uid="uid://danymuvfjf4o1" path="res://client_data/data/sprite/Àΰ£Á·/¸Ó¸®Åë/³²/16_³²/000.png" id="2_aqbfs"] [ext_resource type="Texture2D" uid="uid://cwqgdd00sf7pu" path="res://client_data/data/sprite/Àΰ£Á·/¸öÅë/³²/Ãʺ¸ÀÚ_³²/000.png" id="3_xv3pn"] [ext_resource type="PackedScene" uid="uid://knmmuhon34rh" path="res://ui/bmp_texture_rect.tscn" id="4_vhrt2"] -[ext_resource type="Texture2D" uid="uid://g2cx2uuvffe" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/box_select.bmp" id="5_vhrt2"] +[ext_resource type="Texture2D" uid="uid://1s8lrydoctbv" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/box_select.png" id="5_vhrt2"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_u21ok"] bg_color = Color(0, 0, 0, 0.0980392) diff --git a/ui/login/character_server_button.tscn b/ui/login/character_server_button.tscn index 2244f3c..439ddad 100644 --- a/ui/login/character_server_button.tscn +++ b/ui/login/character_server_button.tscn @@ -9,3 +9,4 @@ mouse_default_cursor_shape = 2 theme = ExtResource("1_antln") theme_type_variation = &"CharacterServerButton" text = "Name" +alignment = 0 diff --git a/ui/login/character_server_button_style_box.tres b/ui/login/character_server_button_style_box.tres index 92ed6f6..1da7be2 100644 --- a/ui/login/character_server_button_style_box.tres +++ b/ui/login/character_server_button_style_box.tres @@ -1,16 +1,7 @@ -[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://ct2l6hbb04p5o"] - -[sub_resource type="Gradient" id="Gradient_re72a"] -offsets = PackedFloat32Array(0, 0.4, 0.6, 1) -colors = PackedColorArray(1, 1, 1, 0, 0.792157, 0.87451, 0.984314, 0.392157, 0.792157, 0.87451, 0.984314, 0.392157, 1, 1, 1, 0) - -[sub_resource type="GradientTexture2D" id="GradientTexture2D_re72a"] -gradient = SubResource("Gradient_re72a") -repeat = 2 +[gd_resource type="StyleBoxTexture" format=3 uid="uid://ct2l6hbb04p5o"] [resource] content_margin_left = 2.0 content_margin_top = 3.0 content_margin_right = 2.0 content_margin_bottom = 2.0 -texture = SubResource("GradientTexture2D_re72a") diff --git a/ui/login/login_character_selection_list.tscn b/ui/login/login_character_selection_list.tscn index 391ed63..02a9dc2 100644 --- a/ui/login/login_character_selection_list.tscn +++ b/ui/login/login_character_selection_list.tscn @@ -4,12 +4,12 @@ [ext_resource type="Script" uid="uid://dmch4gi1khn2r" path="res://ui/login/login_character_selection_list.gd" id="1_togb6"] [ext_resource type="PackedScene" uid="uid://rrd131rq74n5" path="res://ui/login/character_selection_item.tscn" id="2_k142l"] [ext_resource type="PackedScene" uid="uid://cjcm2mai50thr" path="res://ui/bmp_texture_button.tscn" id="2_s7n6r"] -[ext_resource type="Texture2D" uid="uid://s5uc6sa6y88f" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_l_out.bmp" id="3_c5a25"] -[ext_resource type="Texture2D" uid="uid://b8n4w8a4yumax" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_l_press.bmp" id="4_ntkas"] -[ext_resource type="Texture2D" uid="uid://e3k5tdqv2jft" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_l_over.bmp" id="5_606nc"] -[ext_resource type="Texture2D" uid="uid://bhap22qcv1mga" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_r_out.bmp" id="7_c8nb3"] -[ext_resource type="Texture2D" uid="uid://dvf7yx7b3dj4m" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_r_press.bmp" id="8_p8h60"] -[ext_resource type="Texture2D" uid="uid://4ngcs00s5cnn" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_r_over.bmp" id="9_7p86f"] +[ext_resource type="Texture2D" uid="uid://cey66pn46da80" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_l_out.png" id="3_wnv6e"] +[ext_resource type="Texture2D" uid="uid://bbs77ppnvcm23" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_l_press.png" id="4_rdaw5"] +[ext_resource type="Texture2D" uid="uid://c4supu7w8gabw" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_l_over.png" id="5_1vggc"] +[ext_resource type="Texture2D" uid="uid://dqweltumn8n7t" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_r_out.png" id="7_wnv6e"] +[ext_resource type="Texture2D" uid="uid://bsdygckmj667w" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_r_press.png" id="8_rdaw5"] +[ext_resource type="Texture2D" uid="uid://dqdmks4uak1go" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/select_character/chr_arrow_r_over.png" id="9_1vggc"] [node name="LoginCharacterSelectionList" type="VBoxContainer"] theme_override_constants/separation = 32 @@ -30,9 +30,9 @@ alignment = 1 unique_name_in_owner = true texture_filter = 0 layout_mode = 2 -texture_normal = ExtResource("3_c5a25") -texture_pressed = ExtResource("4_ntkas") -texture_hover = ExtResource("5_606nc") +texture_normal = ExtResource("3_wnv6e") +texture_pressed = ExtResource("4_rdaw5") +texture_hover = ExtResource("5_1vggc") stretch_mode = 5 [node name="CharacterList" type="HBoxContainer" parent="MarginContainer/HBoxContainer"] @@ -50,9 +50,9 @@ layout_mode = 2 unique_name_in_owner = true texture_filter = 0 layout_mode = 2 -texture_normal = ExtResource("7_c8nb3") -texture_pressed = ExtResource("8_p8h60") -texture_hover = ExtResource("9_7p86f") +texture_normal = ExtResource("7_wnv6e") +texture_pressed = ExtResource("8_rdaw5") +texture_hover = ExtResource("9_1vggc") stretch_mode = 5 [node name="CharacterSelectionStatus" parent="." instance=ExtResource("1_5anyi")] diff --git a/ui/theme.tres b/ui/theme.tres index 05fc27a..69ad428 100644 --- a/ui/theme.tres +++ b/ui/theme.tres @@ -1,9 +1,9 @@ [gd_resource type="Theme" load_steps=9 format=3 uid="uid://c5sm3yvuakj3b"] -[ext_resource type="Texture2D" uid="uid://dgvtc6rkepkp0" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/bt_otp_over.bmp" id="1_iqtc0"] +[ext_resource type="Texture2D" uid="uid://34bqfgx41tf0" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/bt_otp_over.png" id="1_iqtc0"] [ext_resource type="Texture2D" uid="uid://cehi7txcq4p2q" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/name-edit.bmp" id="1_rqugq"] -[ext_resource type="Texture2D" uid="uid://cgc1sfnq4pcg2" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/bt_otp_normal.bmp" id="2_7any1"] -[ext_resource type="Texture2D" uid="uid://jk8krs3ckx25" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/bt_otp_press.bmp" id="3_3fgq6"] +[ext_resource type="Texture2D" uid="uid://b63yrv7hceon4" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/bt_otp_normal.png" id="2_7any1"] +[ext_resource type="Texture2D" uid="uid://yew2ev1s10pk" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/login_interface/bt_otp_press.png" id="3_3fgq6"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_y5ki2"] texture = ExtResource("1_iqtc0") diff --git a/ui/theme_clear.tres b/ui/theme_clear.tres index 5805499..f5028a8 100644 --- a/ui/theme_clear.tres +++ b/ui/theme_clear.tres @@ -1,8 +1,7 @@ -[gd_resource type="Theme" load_steps=17 format=3 uid="uid://c6y6r8kcnbb10"] +[gd_resource type="Theme" load_steps=11 format=3 uid="uid://c6y6r8kcnbb10"] [ext_resource type="FontFile" uid="uid://l34toovp0ncy" path="res://client_data/System/font/SCDream4.otf" id="1_qhl1o"] [ext_resource type="FontFile" uid="uid://dqqmqch0dgxxc" path="res://client_data/System/font/SCDream6.otf" id="2_f5aki"] -[ext_resource type="StyleBox" uid="uid://ct2l6hbb04p5o" path="res://ui/login/character_server_button_style_box.tres" id="2_re72a"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_re72a"] content_margin_left = 2.0 @@ -18,49 +17,33 @@ content_margin_right = 4.0 content_margin_bottom = 2.0 bg_color = Color(0.937255, 0.937255, 0.968627, 1) -[sub_resource type="Gradient" id="Gradient_oh4jn"] -offsets = PackedFloat32Array(0, 0.1, 0.9, 1) -colors = PackedColorArray(1, 1, 1, 0, 0.792157, 0.87451, 0.984314, 0.784314, 0.792157, 0.87451, 0.984314, 0.784314, 1, 1, 1, 0) - -[sub_resource type="GradientTexture2D" id="GradientTexture2D_h4yp8"] -gradient = SubResource("Gradient_oh4jn") -fill_to = Vector2(1, 0.000957031) -repeat = 2 - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_je15x"] -content_margin_left = 2.0 -content_margin_top = 3.0 -content_margin_right = 2.0 -content_margin_bottom = 2.0 -texture = SubResource("GradientTexture2D_h4yp8") - -[sub_resource type="Gradient" id="Gradient_re72a"] -offsets = PackedFloat32Array(0, 0.3, 0.7, 1) -colors = PackedColorArray(1, 1, 1, 0, 0.792157, 0.87451, 0.984314, 0.784314, 0.792157, 0.87451, 0.984314, 0.784314, 1, 1, 1, 0) - -[sub_resource type="GradientTexture2D" id="GradientTexture2D_oh4jn"] -gradient = SubResource("Gradient_re72a") -repeat = 2 - -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_h4yp8"] -content_margin_left = 2.0 -content_margin_top = 3.0 -content_margin_right = 2.0 -content_margin_bottom = 2.0 -texture = SubResource("GradientTexture2D_oh4jn") +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_s68x7"] +content_margin_left = 3.0 +content_margin_top = 2.0 +content_margin_right = 3.0 +content_margin_bottom = 0.0 +bg_color = Color(0.890196, 0.933333, 0.992157, 1) -[sub_resource type="Gradient" id="Gradient_h4yp8"] -colors = PackedColorArray(0.792157, 0.87451, 0.984314, 1, 0.792157, 0.87451, 0.984314, 1) +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_je15x"] +content_margin_left = 3.0 +content_margin_top = 2.0 +content_margin_right = 3.0 +content_margin_bottom = 0.0 +bg_color = Color(0.891936, 0.934628, 0.991744, 1) -[sub_resource type="GradientTexture2D" id="GradientTexture2D_je15x"] -gradient = SubResource("Gradient_h4yp8") +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_h4yp8"] +content_margin_left = 3.0 +content_margin_top = 2.0 +content_margin_right = 3.0 +content_margin_bottom = 0.0 +bg_color = Color(0.792157, 0.87451, 0.984314, 1) -[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_vgwil"] -content_margin_left = 2.0 -content_margin_top = 3.0 -content_margin_right = 2.0 -content_margin_bottom = 2.0 -texture = SubResource("GradientTexture2D_je15x") +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vgwil"] +content_margin_left = 3.0 +content_margin_top = 2.0 +content_margin_right = 3.0 +content_margin_bottom = 0.0 +bg_color = Color(0.620091, 0.770828, 0.97069, 1) [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_f5aki"] @@ -78,6 +61,8 @@ border_color = Color(0.752941, 0.752941, 0.752941, 1) [resource] BoxContainer/constants/separation = 0 +Button/font_sizes/font_size = 12 +Button/fonts/font = ExtResource("1_qhl1o") CharacterSelectionStatusLabel/base_type = &"Label" CharacterSelectionStatusLabel/colors/font_color = Color(0.129412, 0.223529, 0.388235, 1) CharacterSelectionStatusLabel/fonts/font = ExtResource("2_f5aki") @@ -89,12 +74,10 @@ CharacterServerButton/colors/font_color = Color(0.133333, 0.133333, 0.133333, 1) CharacterServerButton/colors/font_focus_color = Color(0.133333, 0.133333, 0.133333, 1) CharacterServerButton/colors/font_hover_color = Color(0.133333, 0.133333, 0.133333, 1) CharacterServerButton/colors/font_pressed_color = Color(0.133333, 0.133333, 0.133333, 1) -CharacterServerButton/font_sizes/font_size = 12 -CharacterServerButton/fonts/font = ExtResource("1_qhl1o") -CharacterServerButton/styles/focus = SubResource("StyleBoxTexture_je15x") -CharacterServerButton/styles/hover = SubResource("StyleBoxTexture_h4yp8") -CharacterServerButton/styles/normal = ExtResource("2_re72a") -CharacterServerButton/styles/pressed = SubResource("StyleBoxTexture_vgwil") +CharacterServerButton/styles/focus = SubResource("StyleBoxFlat_s68x7") +CharacterServerButton/styles/hover = SubResource("StyleBoxFlat_je15x") +CharacterServerButton/styles/normal = SubResource("StyleBoxFlat_h4yp8") +CharacterServerButton/styles/pressed = SubResource("StyleBoxFlat_vgwil") Label/colors/font_color = Color(0.133333, 0.133333, 0.133333, 1) Label/colors/font_shadow_color = Color(1, 1, 1, 0.392157) Label/font_sizes/font_size = 12 diff --git a/ui/window.tscn b/ui/window.tscn index c049477..d27d7c5 100644 --- a/ui/window.tscn +++ b/ui/window.tscn @@ -2,17 +2,17 @@ [ext_resource type="PackedScene" uid="uid://knmmuhon34rh" path="res://ui/bmp_texture_rect.tscn" id="1_4qpm3"] [ext_resource type="Script" uid="uid://qdg2tjk8xmjt" path="res://ui/window.gd" id="1_hfgic"] -[ext_resource type="Texture2D" uid="uid://ctcjqer7qdt0o" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/titlebar_left.bmp" id="2_wlfds"] +[ext_resource type="Texture2D" uid="uid://22px3uxdg48t" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/titlebar_left.png" id="3_74c65"] [ext_resource type="Texture2D" uid="uid://dc2f7tx5xsico" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/titlebar_mid.bmp" id="3_mngfx"] -[ext_resource type="Texture2D" uid="uid://bpwioq1j2pqgp" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/titlebar_right.bmp" id="4_fufdc"] -[ext_resource type="Texture2D" uid="uid://to3tb2oxenq" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btnbar_left1.bmp" id="5_fufdc"] -[ext_resource type="Texture2D" uid="uid://dqq3mtjcrwqnp" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/sys_base_off.bmp" id="5_mnaxm"] +[ext_resource type="Texture2D" uid="uid://dkqx0rjvi6aba" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/titlebar_right.png" id="5_qkejn"] [ext_resource type="Texture2D" uid="uid://clqwl83uoxeue" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btnbar_mid1.bmp" id="6_mnaxm"] -[ext_resource type="Texture2D" uid="uid://biapuuwa0wbea" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btnbar_right1.bmp" id="7_hfgic"] +[ext_resource type="Texture2D" uid="uid://dmuuq7siyfv4r" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/sys_base_off.png" id="6_uftm1"] [ext_resource type="PackedScene" uid="uid://cjcm2mai50thr" path="res://ui/bmp_texture_button.tscn" id="7_m42e5"] -[ext_resource type="Texture2D" uid="uid://jwnjlxw3yx4c" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/sys_close_off.bmp" id="8_74c65"] -[ext_resource type="Texture2D" uid="uid://bedetsimppv5a" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/sys_close_on.bmp" id="9_qkejn"] -[ext_resource type="Texture2D" uid="uid://drtdusewjtkgv" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btn_comparison_resize.bmp" id="13_74c65"] +[ext_resource type="Texture2D" uid="uid://dtaegqi7vx4ia" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/big_sys_close_off.png" id="8_vjbfl"] +[ext_resource type="Texture2D" uid="uid://jwguf7fj0iyx" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/big_sys_close_on.png" id="9_kh8ey"] +[ext_resource type="Texture2D" uid="uid://dif01o7ri7qop" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btnbar_left1.png" id="10_ug6hj"] +[ext_resource type="Texture2D" uid="uid://bp60ikxqixf6q" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btnbar_right1.png" id="12_xgidv"] +[ext_resource type="Texture2D" uid="uid://ch1t3k18kvhtk" path="res://client_data/data/texture/À¯ÀúÀÎÅÍÆäÀ̽º/basic_interface/btn_comparison_resize.png" id="13_sy0l2"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fufdc"] bg_color = Color(1, 1, 1, 1) @@ -40,7 +40,7 @@ theme_override_constants/separation = 0 [node name="Left" parent="VBoxContainer/TitleBar/TitleBarBackground" instance=ExtResource("1_4qpm3")] layout_mode = 2 -texture = ExtResource("2_wlfds") +texture = ExtResource("3_74c65") [node name="Middle" parent="VBoxContainer/TitleBar/TitleBarBackground" instance=ExtResource("1_4qpm3")] layout_mode = 2 @@ -49,7 +49,7 @@ texture = ExtResource("3_mngfx") [node name="Right" parent="VBoxContainer/TitleBar/TitleBarBackground" instance=ExtResource("1_4qpm3")] layout_mode = 2 -texture = ExtResource("4_fufdc") +texture = ExtResource("5_qkejn") [node name="TitleBarElements" type="MarginContainer" parent="VBoxContainer/TitleBar"] unique_name_in_owner = true @@ -67,15 +67,15 @@ theme_override_constants/margin_right = 2 [node name="BMPTextureRect" parent="VBoxContainer/TitleBar/TitleBarButtons" instance=ExtResource("1_4qpm3")] layout_mode = 2 size_flags_horizontal = 0 -texture = ExtResource("5_mnaxm") +texture = ExtResource("6_uftm1") stretch_mode = 3 [node name="CloseButton" parent="VBoxContainer/TitleBar/TitleBarButtons" instance=ExtResource("7_m42e5")] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 8 -texture_normal = ExtResource("8_74c65") -texture_hover = ExtResource("9_qkejn") +texture_normal = ExtResource("8_vjbfl") +texture_hover = ExtResource("9_kh8ey") stretch_mode = 5 [node name="Body" type="PanelContainer" parent="VBoxContainer"] @@ -94,7 +94,7 @@ theme_override_constants/separation = 0 [node name="BMPTextureRect" parent="VBoxContainer/ButtonBar/ButtonBarBackground" instance=ExtResource("1_4qpm3")] layout_mode = 2 -texture = ExtResource("5_fufdc") +texture = ExtResource("10_ug6hj") [node name="BMPTextureRect2" parent="VBoxContainer/ButtonBar/ButtonBarBackground" instance=ExtResource("1_4qpm3")] layout_mode = 2 @@ -103,7 +103,7 @@ texture = ExtResource("6_mnaxm") [node name="BMPTextureRect3" parent="VBoxContainer/ButtonBar/ButtonBarBackground" instance=ExtResource("1_4qpm3")] layout_mode = 2 -texture = ExtResource("7_hfgic") +texture = ExtResource("12_xgidv") [node name="ButtonBarElements" type="MarginContainer" parent="VBoxContainer/ButtonBar"] unique_name_in_owner = true @@ -120,7 +120,7 @@ layout_mode = 2 size_flags_horizontal = 8 size_flags_vertical = 8 mouse_default_cursor_shape = 2 -texture = ExtResource("13_74c65") +texture = ExtResource("13_sy0l2") stretch_mode = 5 [connection signal="gui_input" from="VBoxContainer/TitleBar" to="." method="_on_title_bar_gui_input"] |