From 94efea7d384241dd44ade9a85a530c504a53b52e Mon Sep 17 00:00:00 2001 From: adtpdn Date: Sun, 8 Feb 2026 18:21:01 +0800 Subject: [PATCH] update fonts and some gui --- .vscode/settings.json | 2 +- assets/fonts/Nougat-ExtraBlack.ttf | Bin 0 -> 27704 bytes assets/fonts/Nougat-ExtraBlack.ttf.import | 36 ++++++++++ project.godot | 7 ++ scenes/lobby.gd | 54 ++++---------- scenes/lobby.tscn | 83 ++++++++++++++++------ scenes/main.tscn | 51 ++++++++++--- scenes/player.tscn | 5 +- scenes/ui/profile_panel.tscn | 78 ++++++++++++-------- scripts/managers/lobby_manager.gd | 11 ++- 10 files changed, 223 insertions(+), 104 deletions(-) create mode 100644 assets/fonts/Nougat-ExtraBlack.ttf create mode 100644 assets/fonts/Nougat-ExtraBlack.ttf.import diff --git a/.vscode/settings.json b/.vscode/settings.json index acdd4ea..6224707 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,5 @@ { - "godotTools.editorPath.godot4": "C:\\Users\\Dev-Danchie\\Godot\\Editors\\.editor_config\\tekton-local\\Godot_v4.6-stable_win64.exe", + "godotTools.editorPath.godot4": "c:\\Users\\beng\\Godot\\Editors\\4.6-stable\\Godot_v4.6-stable_win64.exe", "editor.tabSize": 4, "editor.insertSpaces": false, "files.eol": "\n", diff --git a/assets/fonts/Nougat-ExtraBlack.ttf b/assets/fonts/Nougat-ExtraBlack.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4ef921172447f7bb44928fb201f4dc6516947866 GIT binary patch literal 27704 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 LXa*(aW#s<=4LwmY literal 0 HcmV?d00001 diff --git a/assets/fonts/Nougat-ExtraBlack.ttf.import b/assets/fonts/Nougat-ExtraBlack.ttf.import new file mode 100644 index 0000000..e0abffc --- /dev/null +++ b/assets/fonts/Nougat-ExtraBlack.ttf.import @@ -0,0 +1,36 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://xnjx058n4tsw" +path="res://.godot/imported/Nougat-ExtraBlack.ttf-39914d17926b2b10a4a7227ad33c0e3b.fontdata" + +[deps] + +source_file="res://assets/fonts/Nougat-ExtraBlack.ttf" +dest_files=["res://.godot/imported/Nougat-ExtraBlack.ttf-39914d17926b2b10a4a7227ad33c0e3b.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +modulate_color_glyphs=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/project.godot b/project.godot index f8dc165..fcb184d 100644 --- a/project.godot +++ b/project.godot @@ -46,6 +46,13 @@ window/stretch/mode="viewport" enabled=PackedStringArray("res://addons/enhanced_gridmap/plugin.cfg", "res://addons/com.heroiclabs.nakama/plugin.cfg") +[file_customization] + +folder_colors={ +"res://assets/": "purple", +"res://scenes/": "green" +} + [input] grab_item={ diff --git a/scenes/lobby.gd b/scenes/lobby.gd index 27bb39d..f1b31a0 100644 --- a/scenes/lobby.gd +++ b/scenes/lobby.gd @@ -38,6 +38,8 @@ extends Control @onready var random_spawn_label = $LobbyPanel/TopBar/SettingsSection/RandomSpawnLabel @onready var enable_timer_check = $LobbyPanel/TopBar/SettingsSection/EnableTimerCheck @onready var enable_timer_label = $LobbyPanel/TopBar/SettingsSection/EnableTimerLabel +@onready var scarcity_option = $LobbyPanel/TopBar/SettingsSection/ScarcityOption +@onready var scarcity_label = $LobbyPanel/TopBar/SettingsSection/ScarcityLabel # UI References - Player Slots @onready var players_container = $LobbyPanel/PlayersContainer @@ -69,10 +71,6 @@ var admin_panel_instance: Control # Store current match ID for copy function var current_match_id: String = "" -# Scarcity Controls (Injected via code since we can't edit scene) -var scarcity_option: OptionButton -var scarcity_label: Label - # Server Selection Controls (Now in tscn) # var server_option: OptionButton # var server_ip_input: LineEdit @@ -85,9 +83,6 @@ func _ready(): # Load character textures _load_character_textures() - # Inject Scarcity UI - call_deferred("_setup_scarcity_ui") - # Server config UI is now in tscn # Get player slot references @@ -147,6 +142,9 @@ func _ready(): ready_btn.toggled.connect(_on_ready_toggled) start_game_btn.pressed.connect(_on_start_game_pressed) + if scarcity_option: + scarcity_option.item_selected.connect(_on_scarcity_selected) + # Connect LobbyManager signals LobbyManager.room_list_updated.connect(_on_room_list_updated) LobbyManager.room_joined.connect(_on_room_joined) @@ -176,10 +174,16 @@ func _ready(): # ============================================================================= func _load_character_textures() -> void: - """Load character expression textures for preview.""" - var characters = ["Bob", "Gatot", "Masbro", "Oldpop"] + """Load character preview textures.""" + var characters = { + "Copper": "res://assets/graphics/character_selection/sc_characters/sc_copper.png", + "Dabro": "res://assets/graphics/character_selection/sc_characters/sc_dabro.png", + "Gatot": "res://assets/graphics/character_selection/sc_characters/sc_gatot.png", + "Pip": "res://assets/graphics/character_selection/sc_characters/sc_pip.png", + "Random": "res://assets/graphics/character_selection/sc_characters/sc_unknown.png" + } for char_name in characters: - var tex_path = "res://assets/characters/%s_%s-expression.png" % [char_name, char_name.to_lower()] + var tex_path = characters[char_name] if ResourceLoader.exists(tex_path): character_textures[char_name] = load(tex_path) else: @@ -199,33 +203,6 @@ func _on_server_ip_submitted(new_text: String) -> void: if server_option and server_option.selected == 1: NakamaManager.set_server(new_text.strip_edges()) -func _setup_scarcity_ui() -> void: - """Inject scarcity controls into SettingsSection.""" - if not duration_option: return - - var settings_section = duration_option.get_parent() - if not settings_section: return - - # Create OptionButton for Host - scarcity_option = OptionButton.new() - scarcity_option.add_item("Normal") # ID 0 - scarcity_option.add_item("Aggressive") # ID 1 - scarcity_option.add_item("Chaos") # ID 2 - scarcity_option.selected = 0 - scarcity_option.tooltip_text = "Select Scarcity Mode" - scarcity_option.name = "ScarcityOption" - scarcity_option.item_selected.connect(_on_scarcity_selected) - - # Create Label for Clients - scarcity_label = Label.new() - scarcity_label.text = "Normal" - scarcity_label.name = "ScarcityLabel" - # Copy style from duration_text_label if possible, usually fine default - - # Add to scene - settings_section.add_child(scarcity_option) - settings_section.add_child(scarcity_label) - func _setup_player_slots() -> void: """Get references to all player slot nodes.""" player_slots.clear() @@ -418,7 +395,6 @@ func _on_room_list_updated(rooms: Array) -> void: func _on_room_joined(room_data: Dictionary) -> void: _show_panel("lobby") current_match_id = room_data.get("match_id", "") - room_name_header.text = "ROOM: %s" % room_data.get("room_name", "Unknown") match_id_display.text = "ID: %s" % _truncate_id(current_match_id) # Configure host-specific UI @@ -579,7 +555,7 @@ func _update_player_slots() -> void: # Use a character for bot preview var char_preview = slot.get_node_or_null("CharacterPreview%d" % slot_num) - var bot_characters = ["Bob", "Gatot", "Masbro", "Oldpop"] + var bot_characters = ["Copper", "Dabro", "Gatot", "Pip"] var bot_char = bot_characters[(i) % bot_characters.size()] if char_preview and character_textures.has(bot_char): char_preview.texture = character_textures[bot_char] diff --git a/scenes/lobby.tscn b/scenes/lobby.tscn index 2a505a5..153c913 100644 --- a/scenes/lobby.tscn +++ b/scenes/lobby.tscn @@ -4,6 +4,7 @@ [ext_resource type="Theme" uid="uid://da337sh5qxi0s" path="res://assets/themes/ui_theme.tres" id="2_theme"] [ext_resource type="Texture2D" uid="uid://2d1ks5pmblc7" path="res://assets/graphics/main_menu/bg_back.png" id="3_q60fs"] [ext_resource type="Texture2D" uid="uid://dvp0as6yyudco" path="res://assets/graphics/main_menu/bg_illust.png" id="4_nqcc7"] +[ext_resource type="FontFile" uid="uid://xnjx058n4tsw" path="res://assets/fonts/Nougat-ExtraBlack.ttf" id="5_pc087"] [node name="Lobby" type="Control" unique_id=1490767889] layout_mode = 3 @@ -275,12 +276,14 @@ theme_override_constants/separation = 10 [node name="ProfileBtn" type="Button" parent="LobbyPanel/TopBar/ProfileSection" unique_id=1726139031] custom_minimum_size = Vector2(80, 32) layout_mode = 2 +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 11 text = "Profile" [node name="LogoutBtn" type="Button" parent="LobbyPanel/TopBar/ProfileSection" unique_id=1221873519] custom_minimum_size = Vector2(70, 32) layout_mode = 2 +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 11 text = "Logout" @@ -295,12 +298,14 @@ theme_override_constants/separation = 8 [node name="MatchIdDisplay" type="Label" parent="LobbyPanel/TopBar/MatchIdContainer" unique_id=1918774593] layout_mode = 2 theme_override_colors/font_color = Color(0.955211, 0.955297, 0.962624, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 10 text = "Match ID: " [node name="CopyIdBtn" type="Button" parent="LobbyPanel/TopBar/MatchIdContainer" unique_id=1663928449] custom_minimum_size = Vector2(60, 28) layout_mode = 2 +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 10 text = "COPY" @@ -315,12 +320,14 @@ theme_override_constants/separation = 8 [node name="DurationLabel" type="Label" parent="LobbyPanel/TopBar/SettingsSection" unique_id=1072635610] layout_mode = 2 theme_override_colors/font_color = Color(0.69, 0.529, 0.357, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 11 text = "Duration:" [node name="DurationOption" type="OptionButton" parent="LobbyPanel/TopBar/SettingsSection" unique_id=448675775] custom_minimum_size = Vector2(90, 28) layout_mode = 2 +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 11 selected = 2 item_count = 5 @@ -348,6 +355,7 @@ layout_mode = 2 [node name="RandomSpawnCheck" type="CheckButton" parent="LobbyPanel/TopBar/SettingsSection" unique_id=1259096465] layout_mode = 2 +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 11 button_pressed = true text = "Random Spawn" @@ -365,6 +373,7 @@ layout_mode = 2 [node name="EnableTimerCheck" type="CheckButton" parent="LobbyPanel/TopBar/SettingsSection" unique_id=417182829] layout_mode = 2 +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 11 button_pressed = true text = "Enable Timer" @@ -390,7 +399,8 @@ grow_horizontal = 2 [node name="HostBannerLabel" type="Label" parent="LobbyPanel/HostBanner" unique_id=1011182924] layout_mode = 2 theme_override_colors/font_color = Color(0.1, 0.1, 0.1, 1) -theme_override_font_sizes/font_size = 20 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 22 text = "HOST" horizontal_alignment = 1 vertical_alignment = 1 @@ -435,7 +445,8 @@ alignment = 1 [node name="PlayerName1" type="Label" parent="LobbyPanel/PlayersContainer/PlayerSlot1" unique_id=19773465] layout_mode = 2 theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_font_sizes/font_size = 16 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 18 text = "Player 1" horizontal_alignment = 1 @@ -460,6 +471,7 @@ text = "◀" custom_minimum_size = Vector2(80, 0) layout_mode = 2 theme_override_colors/font_color = Color(0.992, 0.796, 0.047, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 14 text = "Bob" horizontal_alignment = 1 @@ -475,6 +487,7 @@ text = "▶" custom_minimum_size = Vector2(80, 0) layout_mode = 2 theme_override_colors/font_color = Color(0.992, 0.796, 0.047, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 14 text = "Bob" horizontal_alignment = 1 @@ -482,7 +495,8 @@ horizontal_alignment = 1 [node name="ReadyStatus1" type="Label" parent="LobbyPanel/PlayersContainer/PlayerSlot1" unique_id=1382214476] layout_mode = 2 theme_override_colors/font_color = Color(0.6, 0.6, 0.6, 1) -theme_override_font_sizes/font_size = 12 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 14 text = "NOT READY" horizontal_alignment = 1 @@ -495,7 +509,8 @@ alignment = 1 [node name="PlayerName2" type="Label" parent="LobbyPanel/PlayersContainer/PlayerSlot2" unique_id=878869724] layout_mode = 2 theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_font_sizes/font_size = 16 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 18 text = "Player 2" horizontal_alignment = 1 @@ -536,6 +551,7 @@ text = "▶" custom_minimum_size = Vector2(80, 0) layout_mode = 2 theme_override_colors/font_color = Color(0.992, 0.796, 0.047, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 14 text = "Bob" horizontal_alignment = 1 @@ -543,7 +559,8 @@ horizontal_alignment = 1 [node name="ReadyStatus2" type="Label" parent="LobbyPanel/PlayersContainer/PlayerSlot2" unique_id=1248116760] layout_mode = 2 theme_override_colors/font_color = Color(0.6, 0.6, 0.6, 1) -theme_override_font_sizes/font_size = 12 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 14 text = "NOT READY" horizontal_alignment = 1 @@ -556,7 +573,8 @@ alignment = 1 [node name="PlayerName3" type="Label" parent="LobbyPanel/PlayersContainer/PlayerSlot3" unique_id=1647715021] layout_mode = 2 theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_font_sizes/font_size = 16 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 18 text = "Player 3" horizontal_alignment = 1 @@ -597,6 +615,7 @@ text = "▶" custom_minimum_size = Vector2(80, 0) layout_mode = 2 theme_override_colors/font_color = Color(0.992, 0.796, 0.047, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 14 text = "Bob" horizontal_alignment = 1 @@ -604,7 +623,8 @@ horizontal_alignment = 1 [node name="ReadyStatus3" type="Label" parent="LobbyPanel/PlayersContainer/PlayerSlot3" unique_id=822843162] layout_mode = 2 theme_override_colors/font_color = Color(0.6, 0.6, 0.6, 1) -theme_override_font_sizes/font_size = 12 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 14 text = "NOT READY" horizontal_alignment = 1 @@ -617,7 +637,8 @@ alignment = 1 [node name="PlayerName4" type="Label" parent="LobbyPanel/PlayersContainer/PlayerSlot4" unique_id=601920855] layout_mode = 2 theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_font_sizes/font_size = 16 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 18 text = "Player 4" horizontal_alignment = 1 @@ -658,6 +679,7 @@ text = "▶" custom_minimum_size = Vector2(80, 0) layout_mode = 2 theme_override_colors/font_color = Color(0.992, 0.796, 0.047, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 14 text = "Bob" horizontal_alignment = 1 @@ -665,7 +687,8 @@ horizontal_alignment = 1 [node name="ReadyStatus4" type="Label" parent="LobbyPanel/PlayersContainer/PlayerSlot4" unique_id=1335401655] layout_mode = 2 theme_override_colors/font_color = Color(0.6, 0.6, 0.6, 1) -theme_override_font_sizes/font_size = 12 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 14 text = "NOT READY" horizontal_alignment = 1 @@ -692,7 +715,8 @@ alignment = 1 [node name="PlayerName5" type="Label" parent="LobbyPanel/PlayersContainer2/PlayerSlot5" unique_id=1274835923] layout_mode = 2 theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_font_sizes/font_size = 16 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 18 text = "Player 5" horizontal_alignment = 1 @@ -733,6 +757,7 @@ text = "▶" custom_minimum_size = Vector2(80, 0) layout_mode = 2 theme_override_colors/font_color = Color(0.992, 0.796, 0.047, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 14 text = "Bob" horizontal_alignment = 1 @@ -740,7 +765,8 @@ horizontal_alignment = 1 [node name="ReadyStatus5" type="Label" parent="LobbyPanel/PlayersContainer2/PlayerSlot5" unique_id=1075029896] layout_mode = 2 theme_override_colors/font_color = Color(0.6, 0.6, 0.6, 1) -theme_override_font_sizes/font_size = 12 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 14 text = "NOT READY" horizontal_alignment = 1 @@ -753,7 +779,8 @@ alignment = 1 [node name="PlayerName6" type="Label" parent="LobbyPanel/PlayersContainer2/PlayerSlot6" unique_id=2146003972] layout_mode = 2 theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_font_sizes/font_size = 16 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 18 text = "Player 6" horizontal_alignment = 1 @@ -794,6 +821,7 @@ text = "▶" custom_minimum_size = Vector2(80, 0) layout_mode = 2 theme_override_colors/font_color = Color(0.992, 0.796, 0.047, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 14 text = "Bob" horizontal_alignment = 1 @@ -801,7 +829,8 @@ horizontal_alignment = 1 [node name="ReadyStatus6" type="Label" parent="LobbyPanel/PlayersContainer2/PlayerSlot6" unique_id=1888412229] layout_mode = 2 theme_override_colors/font_color = Color(0.6, 0.6, 0.6, 1) -theme_override_font_sizes/font_size = 12 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 14 text = "NOT READY" horizontal_alignment = 1 @@ -814,7 +843,8 @@ alignment = 1 [node name="PlayerName7" type="Label" parent="LobbyPanel/PlayersContainer2/PlayerSlot7" unique_id=705333888] layout_mode = 2 theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_font_sizes/font_size = 16 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 18 text = "Player 4" horizontal_alignment = 1 @@ -855,6 +885,7 @@ text = "▶" custom_minimum_size = Vector2(80, 0) layout_mode = 2 theme_override_colors/font_color = Color(0.992, 0.796, 0.047, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 14 text = "Bob" horizontal_alignment = 1 @@ -862,7 +893,8 @@ horizontal_alignment = 1 [node name="ReadyStatus7" type="Label" parent="LobbyPanel/PlayersContainer2/PlayerSlot7" unique_id=2098796095] layout_mode = 2 theme_override_colors/font_color = Color(0.6, 0.6, 0.6, 1) -theme_override_font_sizes/font_size = 12 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 14 text = "NOT READY" horizontal_alignment = 1 @@ -875,7 +907,8 @@ alignment = 1 [node name="PlayerName8" type="Label" parent="LobbyPanel/PlayersContainer2/PlayerSlot8" unique_id=13133480] layout_mode = 2 theme_override_colors/font_color = Color(1, 1, 1, 1) -theme_override_font_sizes/font_size = 16 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 18 text = "Player 4" horizontal_alignment = 1 @@ -916,6 +949,7 @@ text = "▶" custom_minimum_size = Vector2(80, 0) layout_mode = 2 theme_override_colors/font_color = Color(0.992, 0.796, 0.047, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 14 text = "Bob" horizontal_alignment = 1 @@ -923,7 +957,8 @@ horizontal_alignment = 1 [node name="ReadyStatus8" type="Label" parent="LobbyPanel/PlayersContainer2/PlayerSlot8" unique_id=434057613] layout_mode = 2 theme_override_colors/font_color = Color(0.6, 0.6, 0.6, 1) -theme_override_font_sizes/font_size = 12 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 14 text = "NOT READY" horizontal_alignment = 1 @@ -945,6 +980,7 @@ grow_vertical = 0 [node name="AreaLabel" type="Label" parent="LobbyPanel/AreaSelector" unique_id=1925038296] layout_mode = 2 theme_override_colors/font_color = Color(0.69, 0.529, 0.357, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 13 text = "AREA: " @@ -958,6 +994,7 @@ text = "◀" custom_minimum_size = Vector2(100, 0) layout_mode = 2 theme_override_colors/font_color = Color(0.647, 0.996, 0.224, 1) +theme_override_fonts/font = ExtResource("5_pc087") theme_override_font_sizes/font_size = 16 text = "Desert" horizontal_alignment = 1 @@ -986,7 +1023,8 @@ theme_override_constants/separation = 20 [node name="LeaveBtn" type="Button" parent="LobbyPanel/BottomBar" unique_id=1447825960] custom_minimum_size = Vector2(120, 44) layout_mode = 2 -theme_override_font_sizes/font_size = 14 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 18 text = "LEAVE" [node name="Spacer" type="Control" parent="LobbyPanel/BottomBar" unique_id=1050617828] @@ -996,14 +1034,16 @@ size_flags_horizontal = 3 [node name="ReadyBtn" type="Button" parent="LobbyPanel/BottomBar" unique_id=2026272478] custom_minimum_size = Vector2(140, 50) layout_mode = 2 -theme_override_font_sizes/font_size = 16 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 18 toggle_mode = true text = "READY" [node name="StartGameBtn" type="Button" parent="LobbyPanel/BottomBar" unique_id=121485973] custom_minimum_size = Vector2(140, 50) layout_mode = 2 -theme_override_font_sizes/font_size = 16 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 18 disabled = true text = "MATCH" @@ -1046,7 +1086,8 @@ grow_vertical = 0 [node name="ConnectionStatus" type="Label" parent="StatusBar" unique_id=1991909918] layout_mode = 2 theme_override_colors/font_color = Color(0.69, 0.529, 0.357, 1) -theme_override_font_sizes/font_size = 12 +theme_override_fonts/font = ExtResource("5_pc087") +theme_override_font_sizes/font_size = 14 text = "NOT CONNECTED" horizontal_alignment = 1 diff --git a/scenes/main.tscn b/scenes/main.tscn index ee52913..a8ad381 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -18,6 +18,7 @@ [ext_resource type="Texture2D" uid="uid://c74sy60aew8xv" path="res://assets/textures/player_board_and_blue_print/tile_star_goals.tres" id="9_i0gbs"] [ext_resource type="Texture2D" uid="uid://dn26fllyitnr1" path="res://assets/textures/player_board_and_blue_print/tile_coin_goals.tres" id="10_my1qp"] [ext_resource type="Texture2D" uid="uid://xknm2v6lgxwi" path="res://assets/textures/mission_player_2.png" id="13_ahjgs"] +[ext_resource type="FontFile" uid="uid://xnjx058n4tsw" path="res://assets/fonts/Nougat-ExtraBlack.ttf" id="13_j8jky"] [ext_resource type="Texture2D" uid="uid://cv2v4i6ipkpv1" path="res://assets/textures/player_board_and_blue_print/tile_null_24px.tres" id="17_hh6ui"] [ext_resource type="Texture2D" uid="uid://butrfmdp6wsck" path="res://assets/textures/player_board_and_blue_print/tiles_null_24px.png" id="18_p3nmx"] [ext_resource type="StyleBox" uid="uid://d3ruc8gytoovx" path="res://assets/styles/ribbon_selected_gui.tres" id="18_u5x6e"] @@ -72,6 +73,23 @@ texture = ExtResource("13_ahjgs") [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_s1l63"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kmb1v"] +content_margin_left = 16.0 +content_margin_top = 16.0 +content_margin_right = 16.0 +content_margin_bottom = 16.0 +bg_color = Color(0, 0, 0, 0.49803922) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0.992, 0.796, 0.047, 1) +corner_radius_top_left = 36 +corner_radius_top_right = 36 +corner_radius_bottom_right = 36 +corner_radius_bottom_left = 36 +corner_detail = 12 + [node name="Main" type="Node3D" unique_id=1566673391] script = ExtResource("1_xcpe3") @@ -1906,10 +1924,11 @@ anchors_preset = 4 anchor_top = 0.5 anchor_bottom = 0.5 offset_left = 261.0 -offset_top = -113.0 +offset_top = -104.0 offset_right = 301.0 offset_bottom = -68.0 grow_vertical = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 32 text = "X0" @@ -1956,6 +1975,7 @@ offset_bottom = 333.0 [node name="TimerLabel" type="Label" parent="GoalsTimer" unique_id=466345203] layout_mode = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "00" horizontal_alignment = 1 @@ -10403,10 +10423,10 @@ theme_override_constants/separation = 4 anchors_preset = 1 anchor_left = 1.0 anchor_right = 1.0 -offset_left = -211.0 +offset_left = -187.0 offset_top = 15.0 -offset_right = -18.0 -offset_bottom = 166.0 +offset_right = -15.0 +offset_bottom = 142.0 grow_horizontal = 0 size_flags_horizontal = 3 size_flags_vertical = 3 @@ -10424,6 +10444,7 @@ theme_override_constants/separation = 4 [node name="Title" type="Label" parent="LeaderboardPanel/MarginContainer/VBox" unique_id=1810699363] layout_mode = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 16 text = "🏆 LEADERBOARD" horizontal_alignment = 1 @@ -10437,12 +10458,14 @@ layout_mode = 2 [node name="RankLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry1" unique_id=828754165] custom_minimum_size = Vector2(35, 0) layout_mode = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "1st" [node name="NameLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry1" unique_id=777741978] custom_minimum_size = Vector2(100, 0) layout_mode = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "Player 1" clip_text = true @@ -10450,6 +10473,7 @@ clip_text = true [node name="ScoreLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry1" unique_id=163441394] layout_mode = 2 size_flags_horizontal = 3 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "0" horizontal_alignment = 2 @@ -10460,12 +10484,14 @@ layout_mode = 2 [node name="RankLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry2" unique_id=276085006] custom_minimum_size = Vector2(35, 0) layout_mode = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "2nd" [node name="NameLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry2" unique_id=980063105] custom_minimum_size = Vector2(100, 0) layout_mode = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "Player 2" clip_text = true @@ -10473,6 +10499,7 @@ clip_text = true [node name="ScoreLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry2" unique_id=630589738] layout_mode = 2 size_flags_horizontal = 3 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "0" horizontal_alignment = 2 @@ -10483,12 +10510,14 @@ layout_mode = 2 [node name="RankLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry3" unique_id=940102589] custom_minimum_size = Vector2(35, 0) layout_mode = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "3rd" [node name="NameLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry3" unique_id=872999463] custom_minimum_size = Vector2(100, 0) layout_mode = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "Player 3" clip_text = true @@ -10496,6 +10525,7 @@ clip_text = true [node name="ScoreLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry3" unique_id=508325054] layout_mode = 2 size_flags_horizontal = 3 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "0" horizontal_alignment = 2 @@ -10506,12 +10536,14 @@ layout_mode = 2 [node name="RankLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry4" unique_id=539805932] custom_minimum_size = Vector2(35, 0) layout_mode = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "4th" [node name="NameLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry4" unique_id=379355680] custom_minimum_size = Vector2(100, 0) layout_mode = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "Player 4" clip_text = true @@ -10519,6 +10551,7 @@ clip_text = true [node name="ScoreLabel" type="Label" parent="LeaderboardPanel/MarginContainer/VBox/Entry4" unique_id=560418594] layout_mode = 2 size_flags_horizontal = 3 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 14 text = "0" horizontal_alignment = 2 @@ -10527,11 +10560,12 @@ horizontal_alignment = 2 anchors_preset = 5 anchor_left = 0.5 anchor_right = 0.5 -offset_left = -75.0 -offset_top = 18.0 -offset_right = 85.0 -offset_bottom = 68.0 +offset_left = -74.0 +offset_top = 21.0 +offset_right = 74.0 +offset_bottom = 92.0 grow_horizontal = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_kmb1v") [node name="VBox" type="VBoxContainer" parent="GlobalMatchTimer" unique_id=24429117] layout_mode = 2 @@ -10539,6 +10573,7 @@ alignment = 1 [node name="TimerLabel" type="Label" parent="GlobalMatchTimer/VBox" unique_id=689385799] layout_mode = 2 +theme_override_fonts/font = ExtResource("13_j8jky") theme_override_font_sizes/font_size = 28 text = "3:00" horizontal_alignment = 1 diff --git a/scenes/player.tscn b/scenes/player.tscn index f51a22e..c6e5e2c 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -9,6 +9,7 @@ [ext_resource type="AnimationLibrary" uid="uid://c3pyopnwibckj" path="res://assets/characters/animations/animation-pack.res" id="6_5oq5w"] [ext_resource type="Script" uid="uid://cwwwixc07jc86" path="res://scripts/bot_controller.gd" id="7_botctrl"] [ext_resource type="Texture2D" uid="uid://y4l3c6305ier" path="res://assets/models/character_pointer/character_pointer_Char Pointer_color.png" id="7_ur7pv"] +[ext_resource type="FontFile" uid="uid://xnjx058n4tsw" path="res://assets/fonts/Nougat-ExtraBlack.ttf" id="8_y4r1p"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_83jal"] resource_name = "Material.001" @@ -102,7 +103,7 @@ shape = SubResource("SphereShape3D_3oo5r") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0281162, 0) billboard = 1 text = "username" -font = SubResource("FontVariation_q2tkp") +font = ExtResource("8_y4r1p") font_size = 48 outline_size = 26 uppercase = true @@ -113,7 +114,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.83275956, 1.5372815, 0) billboard = 1 modulate = Color(0.32, 0.614667, 1, 1) text = "1st" -font = SubResource("FontVariation_q2tkp") +font = ExtResource("8_y4r1p") font_size = 62 outline_size = 26 autowrap_mode = 2 diff --git a/scenes/ui/profile_panel.tscn b/scenes/ui/profile_panel.tscn index 891a622..620d389 100644 --- a/scenes/ui/profile_panel.tscn +++ b/scenes/ui/profile_panel.tscn @@ -1,147 +1,163 @@ -[gd_scene load_steps=3 format=3 uid="uid://dyx0upokhsh2e"] +[gd_scene format=3 uid="uid://dyx0upokhsh2e"] [ext_resource type="Script" uid="uid://y6wswtalyiho" path="res://scripts/ui/profile_panel.gd" id="1"] [ext_resource type="Theme" uid="uid://da337sh5qxi0s" path="res://assets/themes/ui_theme.tres" id="2"] +[ext_resource type="FontFile" uid="uid://xnjx058n4tsw" path="res://assets/fonts/Nougat-ExtraBlack.ttf" id="3_e13i6"] -[node name="ProfilePanel" type="PanelContainer"] +[node name="ProfilePanel" type="PanelContainer" unique_id=229091481] offset_right = 380.0 offset_bottom = 480.0 theme = ExtResource("2") script = ExtResource("1") -[node name="VBox" type="VBoxContainer" parent="."] +[node name="VBox" type="VBoxContainer" parent="." unique_id=953819957] layout_mode = 2 theme_override_constants/separation = 14 -[node name="Header" type="HBoxContainer" parent="VBox"] +[node name="Header" type="HBoxContainer" parent="VBox" unique_id=485959454] layout_mode = 2 -[node name="Title" type="Label" parent="VBox/Header"] +[node name="Title" type="Label" parent="VBox/Header" unique_id=19242315] layout_mode = 2 size_flags_horizontal = 3 -theme_override_colors/font_color = Color(0.647, 0.996, 0.224, 1) +theme_override_colors/font_color = Color(0.41568628, 0.6392157, 0.14117648, 1) +theme_override_fonts/font = ExtResource("3_e13i6") theme_override_font_sizes/font_size = 22 text = "Profile" -[node name="CloseButton" type="Button" parent="VBox/Header"] +[node name="CloseButton" type="Button" parent="VBox/Header" unique_id=448699205] unique_name_in_owner = true custom_minimum_size = Vector2(36, 36) layout_mode = 2 text = "✕" -[node name="AvatarSection" type="HBoxContainer" parent="VBox"] +[node name="AvatarSection" type="HBoxContainer" parent="VBox" unique_id=501593330] layout_mode = 2 theme_override_constants/separation = 16 alignment = 1 -[node name="AvatarDisplay" type="TextureRect" parent="VBox/AvatarSection"] +[node name="AvatarDisplay" type="TextureRect" parent="VBox/AvatarSection" unique_id=173716070] unique_name_in_owner = true custom_minimum_size = Vector2(88, 88) layout_mode = 2 expand_mode = 1 stretch_mode = 5 -[node name="AvatarButtons" type="VBoxContainer" parent="VBox/AvatarSection"] +[node name="AvatarButtons" type="VBoxContainer" parent="VBox/AvatarSection" unique_id=1408685281] layout_mode = 2 theme_override_constants/separation = 8 -[node name="ChangeAvatarBtn" type="Button" parent="VBox/AvatarSection/AvatarButtons"] +[node name="ChangeAvatarBtn" type="Button" parent="VBox/AvatarSection/AvatarButtons" unique_id=1502182238] unique_name_in_owner = true custom_minimum_size = Vector2(0, 44) layout_mode = 2 +theme_override_fonts/font = ExtResource("3_e13i6") text = "Change Avatar" -[node name="DisplayNameSection" type="VBoxContainer" parent="VBox"] +[node name="DisplayNameSection" type="VBoxContainer" parent="VBox" unique_id=545753874] layout_mode = 2 theme_override_constants/separation = 8 -[node name="Label" type="Label" parent="VBox/DisplayNameSection"] +[node name="Label" type="Label" parent="VBox/DisplayNameSection" unique_id=1868331382] layout_mode = 2 theme_override_colors/font_color = Color(0.69, 0.529, 0.357, 1) +theme_override_fonts/font = ExtResource("3_e13i6") text = "Display Name" -[node name="HBox" type="HBoxContainer" parent="VBox/DisplayNameSection"] +[node name="HBox" type="HBoxContainer" parent="VBox/DisplayNameSection" unique_id=1124739186] layout_mode = 2 theme_override_constants/separation = 8 -[node name="DisplayNameInput" type="LineEdit" parent="VBox/DisplayNameSection/HBox"] +[node name="DisplayNameInput" type="LineEdit" parent="VBox/DisplayNameSection/HBox" unique_id=527983746] unique_name_in_owner = true custom_minimum_size = Vector2(0, 44) layout_mode = 2 size_flags_horizontal = 3 +theme_override_fonts/font = ExtResource("3_e13i6") max_length = 50 -[node name="SaveNameBtn" type="Button" parent="VBox/DisplayNameSection/HBox"] +[node name="SaveNameBtn" type="Button" parent="VBox/DisplayNameSection/HBox" unique_id=843919725] unique_name_in_owner = true custom_minimum_size = Vector2(80, 44) layout_mode = 2 +theme_override_fonts/font = ExtResource("3_e13i6") text = "Save" -[node name="Separator1" type="HSeparator" parent="VBox"] +[node name="Separator1" type="HSeparator" parent="VBox" unique_id=1702408710] layout_mode = 2 -[node name="StatsSection" type="VBoxContainer" parent="VBox"] +[node name="StatsSection" type="VBoxContainer" parent="VBox" unique_id=1972383442] layout_mode = 2 theme_override_constants/separation = 6 -[node name="StatsTitle" type="Label" parent="VBox/StatsSection"] +[node name="StatsTitle" type="Label" parent="VBox/StatsSection" unique_id=1851168520] layout_mode = 2 -theme_override_colors/font_color = Color(0.647, 0.996, 0.224, 1) +theme_override_colors/font_color = Color(0.41536003, 0.64, 0.14080001, 1) +theme_override_fonts/font = ExtResource("3_e13i6") theme_override_font_sizes/font_size = 16 text = "Statistics" -[node name="GamesPlayed" type="Label" parent="VBox/StatsSection"] +[node name="GamesPlayed" type="Label" parent="VBox/StatsSection" unique_id=1727349753] unique_name_in_owner = true layout_mode = 2 +theme_override_colors/font_color = Color(0.57, 0.32090998, 0.1767, 1) +theme_override_fonts/font = ExtResource("3_e13i6") text = "Games Played: 0" -[node name="WinRate" type="Label" parent="VBox/StatsSection"] +[node name="WinRate" type="Label" parent="VBox/StatsSection" unique_id=1229711691] unique_name_in_owner = true layout_mode = 2 +theme_override_colors/font_color = Color(0.57, 0.32090998, 0.1767, 1) +theme_override_fonts/font = ExtResource("3_e13i6") text = "Win Rate: 0%" -[node name="HighScore" type="Label" parent="VBox/StatsSection"] +[node name="HighScore" type="Label" parent="VBox/StatsSection" unique_id=443769119] unique_name_in_owner = true layout_mode = 2 +theme_override_colors/font_color = Color(0.57, 0.32090998, 0.1767, 1) +theme_override_fonts/font = ExtResource("3_e13i6") text = "High Score: 0" -[node name="Separator2" type="HSeparator" parent="VBox"] +[node name="Separator2" type="HSeparator" parent="VBox" unique_id=307036203] layout_mode = 2 -[node name="AccountSection" type="VBoxContainer" parent="VBox"] +[node name="AccountSection" type="VBoxContainer" parent="VBox" unique_id=1297099357] layout_mode = 2 theme_override_constants/separation = 8 -[node name="AccountType" type="Label" parent="VBox/AccountSection"] +[node name="AccountType" type="Label" parent="VBox/AccountSection" unique_id=332392487] unique_name_in_owner = true layout_mode = 2 theme_override_colors/font_color = Color(0.69, 0.529, 0.357, 1) +theme_override_fonts/font = ExtResource("3_e13i6") text = "Account: Guest" -[node name="LinkAccountBtn" type="Button" parent="VBox/AccountSection"] +[node name="LinkAccountBtn" type="Button" parent="VBox/AccountSection" unique_id=1719857784] unique_name_in_owner = true custom_minimum_size = Vector2(0, 44) layout_mode = 2 +theme_override_fonts/font = ExtResource("3_e13i6") text = "Link Email (Keep Progress)" -[node name="LogoutBtn" type="Button" parent="VBox/AccountSection"] +[node name="LogoutBtn" type="Button" parent="VBox/AccountSection" unique_id=1335420017] unique_name_in_owner = true custom_minimum_size = Vector2(0, 44) layout_mode = 2 +theme_override_fonts/font = ExtResource("3_e13i6") text = "Logout" -[node name="StatusLabel" type="Label" parent="VBox"] +[node name="StatusLabel" type="Label" parent="VBox" unique_id=2080837765] unique_name_in_owner = true layout_mode = 2 theme_override_font_sizes/font_size = 12 horizontal_alignment = 1 -[node name="AvatarSelectionPopup" type="PopupPanel" parent="."] +[node name="AvatarSelectionPopup" type="PopupPanel" parent="." unique_id=14363298] unique_name_in_owner = true title = "Select Avatar" size = Vector2i(320, 220) -[node name="GridContainer" type="GridContainer" parent="AvatarSelectionPopup"] +[node name="GridContainer" type="GridContainer" parent="AvatarSelectionPopup" unique_id=183560389] unique_name_in_owner = true offset_left = 4.0 offset_top = 4.0 diff --git a/scripts/managers/lobby_manager.gd b/scripts/managers/lobby_manager.gd index 63bf189..c213d0a 100644 --- a/scripts/managers/lobby_manager.gd +++ b/scripts/managers/lobby_manager.gd @@ -39,7 +39,7 @@ var scarcity_mode: String = "Normal" # Normal, Aggressive, Chaos signal scarcity_mode_changed(mode: String) # Character and area selection -var available_characters: Array[String] = ["Bob", "Gatot", "Masbro", "Oldpop"] +var available_characters: Array[String] = ["Copper", "Dabro", "Gatot", "Pip", "Random"] var available_areas: Array[String] = ["Desert", "Forest", "City", "Factory"] var selected_area: String = "Desert" # Host-controlled var local_character_index: int = 0 # Local player's character index @@ -259,6 +259,13 @@ func cycle_character(direction: int) -> void: local_character_index = wrapi(local_character_index + direction, 0, available_characters.size()) set_character(available_characters[local_character_index]) +func select_random_character() -> void: + """Select a random character (excluding 'Randomized' option itself).""" + # Pick from indices 0-3 (Copper, Dabro, Gatot, Pip) + var random_idx = randi() % 4 + local_character_index = random_idx + set_character(available_characters[local_character_index]) + @rpc("any_peer", "call_local", "reliable") func sync_character(player_id: int, character_name: String) -> void: """Sync character selection across all clients.""" @@ -444,5 +451,5 @@ func reset() -> void: _all_ready = false match_duration = 180 # Reset to default 3 minutes selected_area = "Desert" - local_character_index = 0 + local_character_index = 0 # Default to "Copper" enable_cycle_timer = false