From f257a5df68ee27ebb17406ef47d7323c918dc560 Mon Sep 17 00:00:00 2001 From: Lexi Quinn Date: Wed, 5 Nov 2025 08:28:07 +1100 Subject: [PATCH] more work on the ui theme and changing the hud --- Assets/Textures/place_icon.png | Bin 0 -> 632 bytes .../Textures/place_icon.png.import | 8 +- Classes/Engineer/plan.tscn | 2 +- Classes/Engineer/podium.tscn | 2 +- Classes/Mage/podium.tscn | 2 +- Classes/Mage/scroll.tscn | 2 +- Classes/NewHero3/podium.tscn | 2 +- Classes/NewHero4/podium.tscn | 2 +- Enemies/BabyEyeDog/baby_eye_dog.tscn | 2 +- Enemies/ElderEyeDog/elder_eye_dog.tscn | 2 +- Enemies/EyeDog/eye_dog.tscn | 2 +- Locales/en.mo | Bin 9865 -> 9924 bytes Locales/en.po | 3 + Locales/translation_template.pot | 3 + PCs/FSM/carding_state.gd | 1 + PCs/FSM/fighting_state.gd | 5 +- PCs/hero.gd | 57 +++-- PCs/hero.tscn | 210 ++++++++---------- PCs/hud.gd | 37 ++- Scenes/CardPrinter/card_printer.tscn | 2 +- Scenes/Menus/alert_popup.tscn | 2 +- Scenes/Menus/confirmation_popup.tscn | 18 +- Scenes/Menus/multiplayer_lobby.tscn | 16 +- Scenes/Menus/server_form.tscn | 2 +- Scenes/Menus/singleplayer_lobby.tscn | 17 +- Scenes/Menus/text_input_popup.tscn | 2 +- .../MixingTable/remix_table.gd | 0 .../MixingTable/remix_table.gd.uid | 0 .../MixingTable/remix_table.tscn | 4 +- Scenes/ShopStand/shop_stand.tscn | 2 +- Scenes/UI/drop_003.ogg.import | 19 -- Scripts/confirmation_popup.gd | 6 +- Scripts/game.gd | 2 +- Scripts/pickup_notification.gd | 23 +- Scripts/status_effector.gd | 2 +- .../crt_harrison.gdshader | 0 .../crt_harrison.gdshader.uid | 0 .../DamageParticle}/damage_particle.gd | 0 .../DamageParticle}/damage_particle.gd.uid | 0 .../DamageParticle}/damage_particle.tscn | 2 +- {Scripts => UI/EnemyHealthBar}/health_bar.gd | 0 .../EnemyHealthBar}/health_bar.gd.uid | 0 {Scenes => UI/EnemyHealthBar}/health_bar.tscn | 4 +- .../health_bar_gradient.tres | 0 UI/Enemy_icon.png | Bin 0 -> 395 bytes .../Enemy_icon.png.import | 8 +- .../EnergyPipUI/energy_pips.gd | 0 .../EnergyPipUI/energy_pips.gd.uid | 0 .../EnergyPipUI/energy_pips.tscn | 4 +- .../EnergyPipUI/energy_sheet.png | Bin .../EnergyPipUI/energy_sheet.png.import | 6 +- feature_ui.gd => UI/FeatureUI/feature_ui.gd | 0 .../FeatureUI/feature_ui.gd.uid | 0 .../FeatureUI/feature_ui.tscn | 2 +- UI/HotWheelUI/hot_wheel.gd | 39 ++++ .../HotWheelUI/hot_wheel.gd.uid | 0 UI/HotWheelUI/hot_wheel.tscn | 54 +++++ .../Menus/CharacterSelect/character_podium.gd | 0 .../CharacterSelect/character_podium.gd.uid | 0 .../CharacterSelect/character_preview.gd | 0 .../CharacterSelect/character_preview.gd.uid | 0 .../Menus/CharacterSelect/character_select.gd | 0 .../CharacterSelect/character_select.gd.uid | 0 .../CharacterSelect/character_select.tscn | 4 +- .../GameEndScreen/enemy_row.gd} | 0 .../GameEndScreen/enemy_row.gd.uid} | 0 .../GameEndScreen/enemy_row.tscn} | 6 +- .../Menus/GameEndScreen/game_end_screen.gd | 5 + .../GameEndScreen/game_end_screen.gd.uid | 0 .../Menus/GameEndScreen/game_end_screen.tscn | 6 +- .../Menus/MainMenu/achievements_menu.gd | 0 .../Menus/MainMenu/achievements_menu.gd.uid | 0 {Scenes => UI}/Menus/MainMenu/main_menu.gd | 4 +- .../Menus/MainMenu/main_menu.gd.uid | 0 {Scenes => UI}/Menus/MainMenu/main_menu.tscn | 9 +- .../Menus/MixingMenu/price_panel.gd | 0 .../Menus/MixingMenu/price_panel.gd.uid | 0 .../Menus/MixingMenu/price_panel.tscn | 2 +- .../Menus/MixingMenu/track_editor.gd | 0 .../Menus/MixingMenu/track_editor.gd.uid | 0 .../Menus/MixingMenu/track_editor.tscn | 74 +++--- .../Menus/OptionsMenu}/audio_options.gd | 0 .../Menus/OptionsMenu}/audio_options.gd.uid | 0 .../Menus/OptionsMenu}/audio_options.tscn | 2 +- .../Menus/OptionsMenu}/gameplay_options.gd | 0 .../OptionsMenu}/gameplay_options.gd.uid | 0 .../Menus/OptionsMenu}/gameplay_options.tscn | 6 +- .../Menus/OptionsMenu}/graphics_options.gd | 0 .../OptionsMenu}/graphics_options.gd.uid | 0 .../Menus/OptionsMenu}/graphics_options.tscn | 2 +- .../OptionsMenu/keybind_entry.gd} | 0 .../OptionsMenu/keybind_entry.gd.uid} | 0 .../Menus/OptionsMenu}/keybind_entry.tscn | 2 +- .../Menus/OptionsMenu}/keybind_options.gd | 4 +- .../Menus/OptionsMenu}/keybind_options.gd.uid | 0 .../Menus/OptionsMenu}/keybind_options.tscn | 8 +- .../OptionsMenu/keybind_popup.gd} | 0 .../OptionsMenu/keybind_popup.gd.uid} | 0 .../Menus/OptionsMenu}/keybind_popup.tscn | 4 +- .../Menus/OptionsMenu}/keymap_data.gd | 0 .../Menus/OptionsMenu}/keymap_data.gd.uid | 0 .../Menus/OptionsMenu}/options_menu.gd | 0 .../Menus/OptionsMenu}/options_menu.gd.uid | 0 .../Menus/OptionsMenu}/options_menu.tscn | 12 +- {Scenes => UI}/Menus/PauseMenu/pause_menu.gd | 2 +- .../Menus/PauseMenu/pause_menu.gd.uid | 0 .../Menus/PauseMenu/pause_menu.tscn | 4 +- .../Menus/RadioMenu/choose_card_screen.gd | 0 .../Menus/RadioMenu/choose_card_screen.gd.uid | 0 .../Menus/RadioMenu/choose_card_screen.tscn | 4 +- .../ShieldUI/health-Sheet.png | Bin .../ShieldUI/health-Sheet.png.import | 6 +- .../ShieldUI/health_border.png | Bin .../ShieldUI/health_border.png.import | 6 +- .../ShieldUI/health_hit-Sheet.png | Bin .../ShieldUI/health_hit-Sheet.png.import | 6 +- ShieldUI.gd => UI/ShieldUI/shield_ui.gd | 0 .../ShieldUI/shield_ui.gd.uid | 0 shield_ui.tscn => UI/ShieldUI/shield_ui.tscn | 8 +- UI/Themes/Scale1/button_disabled.tres | 18 ++ UI/Themes/Scale1/button_focus.tres | 18 ++ UI/Themes/Scale1/button_hover.tres | 18 ++ UI/Themes/Scale1/button_normal.tres | 18 ++ UI/Themes/Scale1/button_pressed.tres | 18 ++ UI/Themes/Scale1/grabber_area.tres | 12 + .../Themes/Scale1/pane_style_box.tres | 2 +- .../Themes/Scale1/panel_patch.png | Bin .../Themes/Scale1/panel_patch.png.import | 6 +- UI/Themes/Scale1/psx_ui.tres | 164 ++++++++++++++ UI/Themes/Scale1/scroll_grabber.tres | 15 ++ .../Themes/Scale1/sidea_patch.png | Bin .../Themes/Scale1/sidea_patch.png.import | 6 +- .../Themes/Scale1/sideb_patch.png | Bin .../Themes/Scale1/sideb_patch.png.import | 6 +- UI/Themes/Scale1/slider.tres | 13 ++ .../Scale1/switch_side_a_style_box.tres | 2 +- .../Scale1/switch_side_b_style_box.tres | 2 +- .../Themes/Scale1/track_one_patch.png | Bin .../Themes/Scale1/track_one_patch.png.import | 6 +- .../Themes/Scale1/track_two_patch.png | Bin .../Themes/Scale1/track_two_patch.png.import | 6 +- .../card_description_ui.gd | 0 .../card_description_ui.gd.uid | 0 .../card_description_ui.tscn | 4 +- {Scenes/UI => UI}/card_hand.tscn | 0 {Scenes/UI => UI}/chatbox.tscn | 12 +- {Scenes/UI => UI}/drop_003.ogg | Bin UI/drop_003.ogg.import | 19 ++ {Scenes/UI => UI}/hero_card.tscn | 0 {Scenes/UI => UI}/lifebar_segment.tscn | 0 {Scenes/UI => UI}/lives_bar.tscn | 2 +- {Scenes/UI => UI}/pickup_notification.tscn | 15 +- UI/psx_ui.tres | 50 ----- {Scenes/UI => UI}/scoreboard.tscn | 2 +- {Scenes/UI => UI}/scoreboard_entry.tscn | 0 {Scenes => UI}/status_icon.tscn | 0 Worlds/GreenPlanet/Enemies/air_enemy.tscn | 2 +- .../GreenPlanet/Enemies/enemy_controller.gd | 2 +- Worlds/GreenPlanet/Enemies/land_enemy.tscn | 2 +- Worlds/GreenPlanet/Enemies/leaping_enemy.tscn | 4 +- Worlds/GreenPlanet/Levels/Bridge/bridge.tscn | 2 +- Worlds/TestingRange/Enemies/target_dummy.tscn | 2 +- blk-nx64-1x.png | Bin 305 -> 0 bytes blk-nx64-1x.png.import | 34 --- button_patch.png | Bin 133 -> 0 bytes button_style_box_normal.tres | 10 - card_model/3d_card.tscn | 2 +- card_placing_tool.gd | 2 + hot_wheel.gd | 13 -- hot_wheel.tscn | 7 - lost-century-1x.png | Bin 133 -> 0 bytes lost-century-1x.png.import | 34 --- main.gd | 2 +- panel_tex.png | Bin 914 -> 0 bytes project.godot | 2 + remix_menu.gd | 75 ------- remix_menu.gd.uid | 1 - remix_menu.tscn | 81 ------- resurrect-64-1x.png | Bin 312 -> 0 bytes resurrect-64-1x.png.import | 34 --- screencap.png | Bin 51661 -> 0 bytes shield_ui_test.gd | 24 -- shield_ui_test.gd.uid | 1 - shield_ui_test.tscn | 61 ----- test_ui.tscn | 2 +- ui_atlas.png | Bin 0 -> 923 bytes panel_tex.png.import => ui_atlas.png.import | 8 +- 187 files changed, 806 insertions(+), 799 deletions(-) create mode 100644 Assets/Textures/place_icon.png rename button_patch.png.import => Assets/Textures/place_icon.png.import (73%) rename remix_table.gd => Scenes/MixingTable/remix_table.gd (100%) rename remix_table.gd.uid => Scenes/MixingTable/remix_table.gd.uid (100%) rename remix_table.tscn => Scenes/MixingTable/remix_table.tscn (92%) delete mode 100644 Scenes/UI/drop_003.ogg.import rename crt_harrison.gdshader => Shaders/crt_harrison.gdshader (100%) rename crt_harrison.gdshader.uid => Shaders/crt_harrison.gdshader.uid (100%) rename {Scripts => UI/DamageParticle}/damage_particle.gd (100%) rename {Scripts => UI/DamageParticle}/damage_particle.gd.uid (100%) rename {Scenes => UI/DamageParticle}/damage_particle.tscn (94%) rename {Scripts => UI/EnemyHealthBar}/health_bar.gd (100%) rename {Scripts => UI/EnemyHealthBar}/health_bar.gd.uid (100%) rename {Scenes => UI/EnemyHealthBar}/health_bar.tscn (88%) rename UI/{ => EnemyHealthBar}/health_bar_gradient.tres (100%) create mode 100644 UI/Enemy_icon.png rename screencap.png.import => UI/Enemy_icon.png.import (74%) rename energy_pips.gd => UI/EnergyPipUI/energy_pips.gd (100%) rename energy_pips.gd.uid => UI/EnergyPipUI/energy_pips.gd.uid (100%) rename energy_pips.tscn => UI/EnergyPipUI/energy_pips.tscn (88%) rename energy_sheet.png => UI/EnergyPipUI/energy_sheet.png (100%) rename energy_sheet.png.import => UI/EnergyPipUI/energy_sheet.png.import (76%) rename feature_ui.gd => UI/FeatureUI/feature_ui.gd (100%) rename feature_ui.gd.uid => UI/FeatureUI/feature_ui.gd.uid (100%) rename feature_ui.tscn => UI/FeatureUI/feature_ui.tscn (95%) create mode 100644 UI/HotWheelUI/hot_wheel.gd rename hot_wheel.gd.uid => UI/HotWheelUI/hot_wheel.gd.uid (100%) create mode 100644 UI/HotWheelUI/hot_wheel.tscn rename {Scenes => UI}/Menus/CharacterSelect/character_podium.gd (100%) rename {Scenes => UI}/Menus/CharacterSelect/character_podium.gd.uid (100%) rename {Scenes => UI}/Menus/CharacterSelect/character_preview.gd (100%) rename {Scenes => UI}/Menus/CharacterSelect/character_preview.gd.uid (100%) rename {Scenes => UI}/Menus/CharacterSelect/character_select.gd (100%) rename {Scenes => UI}/Menus/CharacterSelect/character_select.gd.uid (100%) rename {Scenes => UI}/Menus/CharacterSelect/character_select.tscn (96%) rename UI/{enemybox.gd => Menus/GameEndScreen/enemy_row.gd} (100%) rename UI/{enemybox.gd.uid => Menus/GameEndScreen/enemy_row.gd.uid} (100%) rename UI/{h_box_container.tscn => Menus/GameEndScreen/enemy_row.tscn} (61%) rename {Scenes => UI}/Menus/GameEndScreen/game_end_screen.gd (96%) rename {Scenes => UI}/Menus/GameEndScreen/game_end_screen.gd.uid (100%) rename {Scenes => UI}/Menus/GameEndScreen/game_end_screen.tscn (96%) rename {Scenes => UI}/Menus/MainMenu/achievements_menu.gd (100%) rename {Scenes => UI}/Menus/MainMenu/achievements_menu.gd.uid (100%) rename {Scenes => UI}/Menus/MainMenu/main_menu.gd (97%) rename {Scenes => UI}/Menus/MainMenu/main_menu.gd.uid (100%) rename {Scenes => UI}/Menus/MainMenu/main_menu.tscn (98%) rename price_panel.gd => UI/Menus/MixingMenu/price_panel.gd (100%) rename price_panel.gd.uid => UI/Menus/MixingMenu/price_panel.gd.uid (100%) rename price_panel.tscn => UI/Menus/MixingMenu/price_panel.tscn (93%) rename track_editor.gd => UI/Menus/MixingMenu/track_editor.gd (100%) rename track_editor.gd.uid => UI/Menus/MixingMenu/track_editor.gd.uid (100%) rename track_editor.tscn => UI/Menus/MixingMenu/track_editor.tscn (82%) rename {Scripts => UI/Menus/OptionsMenu}/audio_options.gd (100%) rename {Scripts => UI/Menus/OptionsMenu}/audio_options.gd.uid (100%) rename {Scenes/Menus => UI/Menus/OptionsMenu}/audio_options.tscn (98%) rename {Scripts => UI/Menus/OptionsMenu}/gameplay_options.gd (100%) rename {Scripts => UI/Menus/OptionsMenu}/gameplay_options.gd.uid (100%) rename {Scenes/Menus => UI/Menus/OptionsMenu}/gameplay_options.tscn (98%) rename {Scripts => UI/Menus/OptionsMenu}/graphics_options.gd (100%) rename {Scripts => UI/Menus/OptionsMenu}/graphics_options.gd.uid (100%) rename {Scenes/Menus => UI/Menus/OptionsMenu}/graphics_options.tscn (98%) rename UI/{KeybindEntry.gd => Menus/OptionsMenu/keybind_entry.gd} (100%) rename UI/{KeybindEntry.gd.uid => Menus/OptionsMenu/keybind_entry.gd.uid} (100%) rename {Scenes/UI => UI/Menus/OptionsMenu}/keybind_entry.tscn (94%) rename {Scripts => UI/Menus/OptionsMenu}/keybind_options.gd (91%) rename {Scripts => UI/Menus/OptionsMenu}/keybind_options.gd.uid (100%) rename {Scenes/Menus => UI/Menus/OptionsMenu}/keybind_options.tscn (54%) rename UI/{keybind_screen.gd => Menus/OptionsMenu/keybind_popup.gd} (100%) rename UI/{keybind_screen.gd.uid => Menus/OptionsMenu/keybind_popup.gd.uid} (100%) rename {Scenes/UI => UI/Menus/OptionsMenu}/keybind_popup.tscn (89%) rename {Scripts => UI/Menus/OptionsMenu}/keymap_data.gd (100%) rename {Scripts => UI/Menus/OptionsMenu}/keymap_data.gd.uid (100%) rename {Scripts => UI/Menus/OptionsMenu}/options_menu.gd (100%) rename {Scripts => UI/Menus/OptionsMenu}/options_menu.gd.uid (100%) rename {Scenes/Menus => UI/Menus/OptionsMenu}/options_menu.tscn (89%) rename {Scenes => UI}/Menus/PauseMenu/pause_menu.gd (93%) rename {Scenes => UI}/Menus/PauseMenu/pause_menu.gd.uid (100%) rename {Scenes => UI}/Menus/PauseMenu/pause_menu.tscn (96%) rename choose_card_screen.gd => UI/Menus/RadioMenu/choose_card_screen.gd (100%) rename choose_card_screen.gd.uid => UI/Menus/RadioMenu/choose_card_screen.gd.uid (100%) rename choose_card_screen.tscn => UI/Menus/RadioMenu/choose_card_screen.tscn (96%) rename health-Sheet.png => UI/ShieldUI/health-Sheet.png (100%) rename health-Sheet.png.import => UI/ShieldUI/health-Sheet.png.import (76%) rename health_border.png => UI/ShieldUI/health_border.png (100%) rename health_border.png.import => UI/ShieldUI/health_border.png.import (76%) rename health_hit-Sheet.png => UI/ShieldUI/health_hit-Sheet.png (100%) rename health_hit-Sheet.png.import => UI/ShieldUI/health_hit-Sheet.png.import (75%) rename ShieldUI.gd => UI/ShieldUI/shield_ui.gd (100%) rename ShieldUI.gd.uid => UI/ShieldUI/shield_ui.gd.uid (100%) rename shield_ui.tscn => UI/ShieldUI/shield_ui.tscn (96%) create mode 100644 UI/Themes/Scale1/button_disabled.tres create mode 100644 UI/Themes/Scale1/button_focus.tres create mode 100644 UI/Themes/Scale1/button_hover.tres create mode 100644 UI/Themes/Scale1/button_normal.tres create mode 100644 UI/Themes/Scale1/button_pressed.tres create mode 100644 UI/Themes/Scale1/grabber_area.tres rename pane_style_box.tres => UI/Themes/Scale1/pane_style_box.tres (85%) rename panel_patch.png => UI/Themes/Scale1/panel_patch.png (100%) rename panel_patch.png.import => UI/Themes/Scale1/panel_patch.png.import (76%) create mode 100644 UI/Themes/Scale1/psx_ui.tres create mode 100644 UI/Themes/Scale1/scroll_grabber.tres rename sidea_patch.png => UI/Themes/Scale1/sidea_patch.png (100%) rename sidea_patch.png.import => UI/Themes/Scale1/sidea_patch.png.import (76%) rename sideb_patch.png => UI/Themes/Scale1/sideb_patch.png (100%) rename sideb_patch.png.import => UI/Themes/Scale1/sideb_patch.png.import (76%) create mode 100644 UI/Themes/Scale1/slider.tres rename switch_side_a_style_box.tres => UI/Themes/Scale1/switch_side_a_style_box.tres (85%) rename switch_side_b_style_box.tres => UI/Themes/Scale1/switch_side_b_style_box.tres (85%) rename track_one_patch.png => UI/Themes/Scale1/track_one_patch.png (100%) rename track_one_patch.png.import => UI/Themes/Scale1/track_one_patch.png.import (75%) rename track_two_patch.png => UI/Themes/Scale1/track_two_patch.png (100%) rename track_two_patch.png.import => UI/Themes/Scale1/track_two_patch.png.import (75%) rename card_description_ui.gd => UI/card_description_ui.gd (100%) rename card_description_ui.gd.uid => UI/card_description_ui.gd.uid (100%) rename card_description_ui.tscn => UI/card_description_ui.tscn (94%) rename {Scenes/UI => UI}/card_hand.tscn (100%) rename {Scenes/UI => UI}/chatbox.tscn (92%) rename {Scenes/UI => UI}/drop_003.ogg (100%) create mode 100644 UI/drop_003.ogg.import rename {Scenes/UI => UI}/hero_card.tscn (100%) rename {Scenes/UI => UI}/lifebar_segment.tscn (100%) rename {Scenes/UI => UI}/lives_bar.tscn (98%) rename {Scenes/UI => UI}/pickup_notification.tscn (68%) delete mode 100644 UI/psx_ui.tres rename {Scenes/UI => UI}/scoreboard.tscn (94%) rename {Scenes/UI => UI}/scoreboard_entry.tscn (100%) rename {Scenes => UI}/status_icon.tscn (100%) delete mode 100644 blk-nx64-1x.png delete mode 100644 blk-nx64-1x.png.import delete mode 100644 button_patch.png delete mode 100644 button_style_box_normal.tres delete mode 100644 hot_wheel.gd delete mode 100644 hot_wheel.tscn delete mode 100644 lost-century-1x.png delete mode 100644 lost-century-1x.png.import delete mode 100644 panel_tex.png delete mode 100644 remix_menu.gd delete mode 100644 remix_menu.gd.uid delete mode 100644 remix_menu.tscn delete mode 100644 resurrect-64-1x.png delete mode 100644 resurrect-64-1x.png.import delete mode 100644 screencap.png delete mode 100644 shield_ui_test.gd delete mode 100644 shield_ui_test.gd.uid delete mode 100644 shield_ui_test.tscn create mode 100644 ui_atlas.png rename panel_tex.png.import => ui_atlas.png.import (75%) diff --git a/Assets/Textures/place_icon.png b/Assets/Textures/place_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc8d5e2167fc8f85aafc49969d0b206590ad894 GIT binary patch literal 632 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANNfxtY$+0h!6k3=A3*ODFF2 zb_$d@R-YBPgjZkx@9jH1_hgimMOEu^lfydPr%hbUPqjUgedxG$ z!YK}UZgyYEfFEuzU$X7jI%obPc;n2D^Nqn@zdXHdarao%!7HuIhwAo5T%7fJh5pAB z?{4m(_SF6aL3Jky`An@fflGWmvOJAmzmZ=5`&p!Tzgm8?)-sDvB1fb}wkpML4k})h z{!}w4bm#xGmrwcnne3`Qbm4E(ZTZC)HnVSyz5UN}-7~Z@24Ro;3x&&BZFJHODLlezrD_Dd&LRi3-4tYY?5{O+NH ziajT5-@nrTTb#j>rQ2=5z`$_K)5S3)qV;LmL9qq}j^OzJ|4)~#damrswwUkjvWwfq zCNBLWTe|6b!Mmw`hJoq_jpdHm={w*gdx6aJI^qFKnrOE**#1B>W%lnlCoL zy<5|+sEFH^t!%M{_nj7>kH4oX*(;lEW7b^!QSaWIM>=+GodL7v``EH^?rp!&?0G7E rk8*3PZ98-21_wUXkR?a|X!%ufIlc+HHN$~{fq}u()z4*}Q$iB}rrIXb literal 0 HcmV?d00001 diff --git a/button_patch.png.import b/Assets/Textures/place_icon.png.import similarity index 73% rename from button_patch.png.import rename to Assets/Textures/place_icon.png.import index f0c7941..10c3c17 100644 --- a/button_patch.png.import +++ b/Assets/Textures/place_icon.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://broabvnrwp73t" -path="res://.godot/imported/button_patch.png-22aba966b297663456907901b6cbce38.ctex" +uid="uid://deelc254ct7ae" +path="res://.godot/imported/place_icon.png-ad3a74931c0ccf2fbff4749d1f6da64b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://button_patch.png" -dest_files=["res://.godot/imported/button_patch.png-22aba966b297663456907901b6cbce38.ctex"] +source_file="res://Assets/Textures/place_icon.png" +dest_files=["res://.godot/imported/place_icon.png-ad3a74931c0ccf2fbff4749d1f6da64b.ctex"] [params] diff --git a/Classes/Engineer/plan.tscn b/Classes/Engineer/plan.tscn index 0467768..3827a2f 100644 --- a/Classes/Engineer/plan.tscn +++ b/Classes/Engineer/plan.tscn @@ -4,7 +4,7 @@ [ext_resource type="Script" uid="uid://cl2mi4bnpatwk" path="res://Scripts/float_and_spin.gd" id="3_b2a1t"] [ext_resource type="Texture2D" uid="uid://dds48gjgiyjp6" path="res://Classes/Engineer/plan_plan_tex.png" id="4_75s6s"] [ext_resource type="Material" uid="uid://dq30v3hgyi4da" path="res://Classes/Engineer/mouse_hover_material.tres" id="5_2u312"] -[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="6_etati"] +[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://UI/card_hand.tscn" id="6_etati"] [sub_resource type="BoxShape3D" id="BoxShape3D_2u312"] size = Vector3(0.436279, 1.47153, 1.05554) diff --git a/Classes/Engineer/podium.tscn b/Classes/Engineer/podium.tscn index 94078f9..da9d328 100644 --- a/Classes/Engineer/podium.tscn +++ b/Classes/Engineer/podium.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=9 format=3 uid="uid://ciagj1hfn4gou"] -[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://Scenes/Menus/CharacterSelect/character_podium.gd" id="1_fo804"] +[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://UI/Menus/CharacterSelect/character_podium.gd" id="1_fo804"] [ext_resource type="Texture2D" uid="uid://d4jd718brpsed" path="res://Classes/Engineer/doe.png" id="2_4b5pd"] [ext_resource type="PackedScene" uid="uid://ddbbwx0yy16lh" path="res://Scenes/TowerBase/tower_base.tscn" id="3_pmyku"] [ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://Towers/Assault/assaultmod.res" id="4_1jafm"] diff --git a/Classes/Mage/podium.tscn b/Classes/Mage/podium.tscn index 0f31ba7..e813143 100644 --- a/Classes/Mage/podium.tscn +++ b/Classes/Mage/podium.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=9 format=3 uid="uid://bd4k48bdgiddy"] -[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://Scenes/Menus/CharacterSelect/character_podium.gd" id="1_0wn84"] +[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://UI/Menus/CharacterSelect/character_podium.gd" id="1_0wn84"] [ext_resource type="Texture2D" uid="uid://bvybr3fwnw46p" path="res://Classes/Mage/yeen.png" id="2_skplt"] [ext_resource type="PackedScene" uid="uid://ddbbwx0yy16lh" path="res://Scenes/TowerBase/tower_base.tscn" id="3_m1210"] [ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://Towers/Assault/assaultmod.res" id="4_5wuy8"] diff --git a/Classes/Mage/scroll.tscn b/Classes/Mage/scroll.tscn index 37ee297..5e54861 100644 --- a/Classes/Mage/scroll.tscn +++ b/Classes/Mage/scroll.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=12 format=4 uid="uid://bfxgtf1v1okat"] [ext_resource type="Script" uid="uid://bj7oafusrrsk" path="res://Scripts/card_item.gd" id="1_rlle2"] -[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="2_aiko0"] +[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://UI/card_hand.tscn" id="2_aiko0"] [ext_resource type="Script" uid="uid://cl2mi4bnpatwk" path="res://Scripts/float_and_spin.gd" id="3_jjaja"] [ext_resource type="Texture2D" uid="uid://b0sl2tvwle1m7" path="res://Classes/Mage/scroll2_paper.png" id="4_aiko0"] [ext_resource type="Material" uid="uid://0273wjmwcpa5" path="res://Classes/Mage/mouse_hover_material2.tres" id="5_jjaja"] diff --git a/Classes/NewHero3/podium.tscn b/Classes/NewHero3/podium.tscn index aa5fa73..e3266d9 100644 --- a/Classes/NewHero3/podium.tscn +++ b/Classes/NewHero3/podium.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=7 format=3 uid="uid://busdu5na4rf4e"] -[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://Scenes/Menus/CharacterSelect/character_podium.gd" id="1_nxj67"] +[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://UI/Menus/CharacterSelect/character_podium.gd" id="1_nxj67"] [ext_resource type="Texture2D" uid="uid://d4jd718brpsed" path="res://Classes/Engineer/doe.png" id="2_05uii"] [ext_resource type="PackedScene" uid="uid://ddbbwx0yy16lh" path="res://Scenes/TowerBase/tower_base.tscn" id="3_il1ej"] [ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://Towers/Assault/assaultmod.res" id="4_mrig3"] diff --git a/Classes/NewHero4/podium.tscn b/Classes/NewHero4/podium.tscn index 08de417..a31b8a3 100644 --- a/Classes/NewHero4/podium.tscn +++ b/Classes/NewHero4/podium.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=7 format=3 uid="uid://6givglesbjef"] -[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://Scenes/Menus/CharacterSelect/character_podium.gd" id="1_h2nqs"] +[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://UI/Menus/CharacterSelect/character_podium.gd" id="1_h2nqs"] [ext_resource type="Texture2D" uid="uid://bvybr3fwnw46p" path="res://Classes/Mage/yeen.png" id="2_e7ajb"] [ext_resource type="PackedScene" uid="uid://ddbbwx0yy16lh" path="res://Scenes/TowerBase/tower_base.tscn" id="3_brui3"] [ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://Towers/Assault/assaultmod.res" id="4_6igfd"] diff --git a/Enemies/BabyEyeDog/baby_eye_dog.tscn b/Enemies/BabyEyeDog/baby_eye_dog.tscn index a18a7e5..98aaa37 100644 --- a/Enemies/BabyEyeDog/baby_eye_dog.tscn +++ b/Enemies/BabyEyeDog/baby_eye_dog.tscn @@ -4,7 +4,7 @@ [ext_resource type="PackedScene" uid="uid://canrxnpxcugc2" path="res://Scenes/corpse.tscn" id="2_vl30x"] [ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="5_f7xim"] [ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="6_lbm5h"] -[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://Scenes/health_bar.tscn" id="7_o1784"] +[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://UI/EnemyHealthBar/health_bar.tscn" id="7_o1784"] [ext_resource type="Script" uid="uid://b62xnsbki8axa" path="res://Scripts/EnemyAI/pathing_controller.gd" id="8_1fak8"] [ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="9_yrbee"] [ext_resource type="PackedScene" uid="uid://bgxr27by7jruo" path="res://Enemies/BabyEyeDog/baby_eyedog.glb" id="10_8k5ts"] diff --git a/Enemies/ElderEyeDog/elder_eye_dog.tscn b/Enemies/ElderEyeDog/elder_eye_dog.tscn index 2ec8353..7d331a4 100644 --- a/Enemies/ElderEyeDog/elder_eye_dog.tscn +++ b/Enemies/ElderEyeDog/elder_eye_dog.tscn @@ -4,7 +4,7 @@ [ext_resource type="PackedScene" uid="uid://canrxnpxcugc2" path="res://Scenes/corpse.tscn" id="2_lirjc"] [ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="5_bi7k0"] [ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="6_k6khd"] -[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://Scenes/health_bar.tscn" id="7_wko6w"] +[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://UI/EnemyHealthBar/health_bar.tscn" id="7_wko6w"] [ext_resource type="Script" uid="uid://b62xnsbki8axa" path="res://Scripts/EnemyAI/pathing_controller.gd" id="8_2jssq"] [ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="9_2x8lp"] [ext_resource type="PackedScene" uid="uid://r2s4pd42y0ma" path="res://Enemies/ElderEyeDog/elder_eyedog.glb" id="10_17xxt"] diff --git a/Enemies/EyeDog/eye_dog.tscn b/Enemies/EyeDog/eye_dog.tscn index a686e19..6181f7a 100644 --- a/Enemies/EyeDog/eye_dog.tscn +++ b/Enemies/EyeDog/eye_dog.tscn @@ -4,7 +4,7 @@ [ext_resource type="PackedScene" uid="uid://canrxnpxcugc2" path="res://Scenes/corpse.tscn" id="2_1dh2f"] [ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="6_3v8fr"] [ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="7_bkkhh"] -[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://Scenes/health_bar.tscn" id="8_k2835"] +[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://UI/EnemyHealthBar/health_bar.tscn" id="8_k2835"] [ext_resource type="Script" uid="uid://b62xnsbki8axa" path="res://Scripts/EnemyAI/pathing_controller.gd" id="9_t4oco"] [ext_resource type="PackedScene" uid="uid://dlhx6r23m5ceg" path="res://Enemies/EyeDog/eyedog.glb" id="10_h25mw"] [ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="11_kpdsm"] diff --git a/Locales/en.mo b/Locales/en.mo index 6de698d68d1bbecb340acae9e63d76c6dc1c4f26..8f856ad6d4c7fb8ca158e4da62c74e5bfa3e9fa3 100644 GIT binary patch delta 2487 zcmeD5J>pw`Pl#nI0|NuYLJAs2Wd4!Fn5z#z)N!0?%ufkBXgfq|2cfkB9YfkB!NWNtkJgB~B) zB@A|a5DSB#3KIDsE-&GOXzYf{&xNXA!^glN&cMKMfDht<8&L6=Q2t*i&BxEcAj!bM zAkPo6$C4jpF$04yKLdk6Jp%(nEI-7hc~FUFsKUwo5DS*`LtMNcDt`&8{t-U|g9HNu z!*_m&0|f*i<|qk3_~uaBQ-Fa%ih+S48phNag!p*5AjE;&q3X^EGSq_; z-F>LRf1na#LXfD?6oN#7g%HF+{z8xtNfv_muv!S>kX|7M1~~=>h6O?pi}wpb($a0H z{^vpr3_J`B4F90|xrHGPQ5LR;7-S*Lz`(`8z~Cheu`pB^VnB{CM7{z_cR|(75r$a2 zTo{trc0t8YK-FD_(odlleTULKA`pueMIa$#Rxbhx8V3=GMFAoV3h6bwwc-T8Ki_IYH&?!$cu*oGA)% zSrt@6Ka@WUs$sn-BxDYYLW1&^D8%8+=z`$@$4C0Vg;t-1tibH&KQ5@p1r{W9@ zEDQ_`pTrp$*g&~MoPmKI6!+o`46FRJ0!q9XP5&L2j&0u zAO-^i!#1b|d!ZVSN(3ECiPzBWm(hLk<3=9mF(hLk)3=9lMpyK*63=Dn@3=E+%5cwrC3=ANTzL#NO z2xVYk$d_ecuwY%@l)mK2(*FpK6DiDYFL+Sb%P{u+PNC>Qg@^?TDKBxl8uUDb+&s88H z^c89_t12Yz2&h5~7KPGss*psft_tz7o+`ux_NojF%nS?+uBr?SOrT`p36=1H8WaRo z5DqmU8p=;ng*Y$`s=h=O;*ct+x-O{26ICHmG)t9%L7#zvVVNoegEj*L!!=b%9l@jq zDPa}WK$V#_1A~(qB#2|wAVFH82FahTY7n2zP=kcPTs26Xu2+NjWZz~WsaUCvtl;c1^y^t<2gF zYIbdA<&ouL2@LfN*(@b?hF{LHC{>{{zf_^P6v`-1%qvkS$yX>W%`CB>{8V)b0OzOl ABLDyZ delta 2435 zcmX@&+v!_>Pl#nI0|NuY1O^5M83qQ1IV=ne2SIF3kSGI#0uKX&A_D`1A`b(DJOcxR zGY>>vG7kfTFarZa0}lfOHv>v$L#L>L$t_VO?=h%qoQ zT!N~9$-}@P&A`C$7s9V+kmO}x5MW?n(B*{~WCx|acp(Ob@iH**GcYiuLd8pYAr?16 z#iv5WmqOKVU+u9`iCV2r@7*{N!a|5Mp3p;N}CFThG8C#|JS` zj}Ky@6CXrDARol#DSQx()lm6fsQNj43=HB73=A9iARagY6~77PzlGBO_!t-@85kJ& z`62db@`Eg9V6f$9U=XNhU|{g&hqyEjDp3qo*vt>HU^+j}1|krP97Grx6c`v7fwwBn7J)cysR$(KH$v&-B9IWeD*}nak0KBUa*0Cp%ZfrQ)DVTJGZKZ!*Sm>A;y6+i zVqq3kLp_w=1=TQL6cRFrjK9L(TaG73UU%I8Yi&8;U_Z=q?7aI8qF( zzn&pS4C2BXF^JFF#UMdCSq$Q^g<=d0w;321HiRVf&l{lPlR-2n z|IdP2un?+or354dwm>aBB*6eqy{Dn{4XFH6kO2$~44agA_;LYuO!4nqLL7Y z$V2&Rk`Rv=NHQ?ggM!Rbl7ZnE0|SGdBm+Yj0|NuA6a#}Z0|P^h6azyJs7#k)V9;b> zVBnQzU{GaXU@(_vVDMsKV2G7wV8~)%U|0ba7nWgQ@MBsbYeg^v^%7)%%#7z`B|7-|_97}69W9(kh3zyPYcJ6I1j=pt0&7S!TL%8-)m1(eUC0&y{y3dBHB z6-c5|g7VE&Ao<=|1>*1+sQM%*KUW3f@M0)k1EuR*RUj_!g9^-n8oX2ml3#a1|3=ygjhr~hE<*7n^R;mh#qB>Ou27LwwhAveG25klghFz+V z67`uXq>f=%gM_T28Ym>S85nHUAoaYn|D$&Osb zj9rtra%nSmPkzXy&Db}YmpfXpp8=8vO&J&%3K@ VVwkX5lt-3pvz^!x{>h4Jivf@j;t>D< diff --git a/Locales/en.po b/Locales/en.po index 6d50ac4..858a4a3 100644 --- a/Locales/en.po +++ b/Locales/en.po @@ -624,6 +624,9 @@ msgstr "Cost: $" msgid "LABEL_REMIX_CURRENCY" msgstr "Coins: $" +msgid "PROMPT_QUIT" +msgstr "Are you sure you want to quit?" + #, fuzzy #~| msgid "LABEL_DISPLAY_NAME" #~ msgid "LABEL_CARD_NAME" diff --git a/Locales/translation_template.pot b/Locales/translation_template.pot index 5f7e8c9..992937d 100644 --- a/Locales/translation_template.pot +++ b/Locales/translation_template.pot @@ -587,3 +587,6 @@ msgstr "" msgid "LABEL_REMIX_CURRENCY" msgstr "" + +msgid "PROMPT_QUIT" +msgstr "" diff --git a/PCs/FSM/carding_state.gd b/PCs/FSM/carding_state.gd index a215206..b8e0e83 100644 --- a/PCs/FSM/carding_state.gd +++ b/PCs/FSM/carding_state.gd @@ -63,3 +63,4 @@ func swap_to_slot(num: int) -> void: if hero.hand.size >= num: hero.hand_selected_index = num - 1 hero.swap_card_audio.play() + hero.hud.hot_wheel.update_cassettes(hero.get_wheel_cards()) diff --git a/PCs/FSM/fighting_state.gd b/PCs/FSM/fighting_state.gd index 153516b..e6325b7 100644 --- a/PCs/FSM/fighting_state.gd +++ b/PCs/FSM/fighting_state.gd @@ -15,8 +15,9 @@ func enter_state() -> void: hero.weapons[hero.equipped_weapon].current_energy = hero.weapons[hero.equipped_weapon].max_energy #this had to be commented out coz the new energy bar thinks "energy changed" is "energy used" #weapons[equipped_weapon].energy_changed.emit(weapons[equipped_weapon].current_energy) - for x: int in hero.hand.contents.size(): - hero.discard_pile.add(hero.hand.remove_at(hero.hand.contents.size() - 1)) + if hero.game_manager.card_gameplay: + for x: int in hero.hand.contents.size(): + hero.discard_pile.add(hero.hand.remove_at(hero.hand.contents.size() - 1)) hero.weapon_swap_timer.start() hero.hud.energy_label.visible = false diff --git a/PCs/hero.gd b/PCs/hero.gd index cd33614..1621acf 100644 --- a/PCs/hero.gd +++ b/PCs/hero.gd @@ -15,7 +15,6 @@ signal ready_state_changed(state: bool) @export var draw_pile: Inventory @export var hand: Inventory @export var discard_pile: Inventory -@export var gauntlet_cards: Array[CardInHand] @export var pause_menu_scene: PackedScene @export var hud: HUD @export var movement: PlayerMovement @@ -41,7 +40,7 @@ signal ready_state_changed(state: bool) var current_state: HeroState var pre_fighting_state: HeroState -var hand_card_scene: PackedScene = preload("res://Scenes/UI/card_hand.tscn") +var hand_card_scene: PackedScene = preload("res://UI/card_hand.tscn") var card_sprites: Array[CardInHand] var game_manager: GameManager var hovering_item: InteractButton = null @@ -184,6 +183,7 @@ func increment_selected() -> void: hand_selected_index += 1 if hand_selected_index >= hand.size: hand_selected_index = 0 + hud.hot_wheel.update_cassettes(get_wheel_cards()) func decrement_selected() -> void: @@ -193,20 +193,43 @@ func decrement_selected() -> void: hand_selected_index -= 1 if hand_selected_index < 0: hand_selected_index = hand.size - 1 + hud.hot_wheel.update_cassettes(get_wheel_cards()) + + +func get_wheel_cards() -> Array[Card]: + var wheel_cards: Array[Card] = [] + if hand.size > 0: + wheel_cards.append(hand.contents[hand_selected_index]) + var left_searches: int = floori((min(5, hand.size) - 1) / 2.0) + var right_searches: int = ceili((min(5, hand.size) - 1) / 2.0) + while left_searches > 0 or right_searches > 0: + for x: int in left_searches: + if hand_selected_index - (x + 1) >= 0: + wheel_cards.append(hand.contents[hand_selected_index - (x + 1)]) + left_searches -= 1 + else: + right_searches += left_searches + left_searches = 0 + for x: int in right_searches: + if hand_selected_index + (x + 1) < hand.size: + wheel_cards.append(hand.contents[hand_selected_index + (x + 1)]) + right_searches -= 1 + else: + left_searches += right_searches + right_searches = 0 + return wheel_cards + func set_card_elements_visibility(value: bool) -> void: if value: hud.show_hot_wheel() + hud.hot_wheel.update_cassettes(get_wheel_cards()) + hud.show_slots() else: hud.hide_hot_wheel() + hud.hide_slots() $FirstPersonViewport/Head2/LeftHand.visible = value - $HUD/PlaceIcon.visible = value - $HUD/SwapIcon.visible = value - if cards[0]: - $HUD/PlaceIcon.visible = false - if cards[1]: - $HUD/SwapIcon.visible = false func _unhandled_input(event: InputEvent) -> void: @@ -226,8 +249,6 @@ func ready_self() -> void: edit_tool.interact_key_held = false if !ready_state: ready_state = true - hud.place_icon.set_visible(false) - hud.swap_icon.set_visible(false) hud.shrink_wave_start_label() ready_audio.play() @@ -243,6 +264,7 @@ func add_card(new_card: Card) -> void: hand.add(new_card) hud.pickup(new_card) place_card_audio.play() + hud.hot_wheel.update_cassettes(get_wheel_cards()) func unpause() -> void: @@ -301,6 +323,8 @@ func equip_weapon(slot: int = 0) -> void: energy -= energy_cost place_card_audio.play() cards[slot] = hand.remove_at(hand.contents.find(selected_card)) + decrement_selected() + hud.hot_wheel.update_cassettes(get_wheel_cards()) #card_sprites[hand_selected_index].queue_free() #card_sprites.remove_at(hand_selected_index) if game_manager.card_gameplay: @@ -314,13 +338,10 @@ func equip_weapon(slot: int = 0) -> void: weapons[slot].duration = 1 weapons_spawn_count += 1 weapons[slot].set_multiplayer_authority(multiplayer.get_unique_id()) - gauntlet_cards[slot].set_card(cards[slot]) if slot == 0: - hud.place_icon.visible = false + hud.set_primary_button(cards[slot]) else: - hud.swap_icon.visible = false - gauntlet_cards[slot].view_weapon() - gauntlet_cards[slot].visible = true + hud.set_secondary_button(cards[slot]) weapons[slot].set_hero(self) weapons[slot].visible = false right_hand.add_child(weapons[slot]) @@ -364,14 +385,14 @@ func _on_timer_timeout() -> void: func unequip_weapon(slot: int = 0) -> void: - gauntlet_cards[slot].visible = false if slot == 0: - hud.place_icon.visible = true + hud.set_primary_button(null) else: - hud.swap_icon.visible = true + hud.set_secondary_button(null) weapons[slot].queue_free() weapons[slot] = null if !game_manager.card_gameplay: add_card(cards[slot]) cards[slot] = null place_card_audio.play() + hud.hot_wheel.update_cassettes(get_wheel_cards()) diff --git a/PCs/hero.tscn b/PCs/hero.tscn index 0d6941d..2c59b04 100644 --- a/PCs/hero.tscn +++ b/PCs/hero.tscn @@ -1,12 +1,11 @@ -[gd_scene load_steps=69 format=3 uid="uid://dxgxbtf68lcv5"] +[gd_scene load_steps=67 format=3 uid="uid://dxgxbtf68lcv5"] [ext_resource type="Script" uid="uid://1fqpoegbdm6n" path="res://PCs/hero.gd" id="1_pihpe"] [ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="2_dbyo0"] [ext_resource type="PackedScene" uid="uid://ri8r03wqy80t" path="res://Scenes/8_direction_sprite.tscn" id="2_ib0t5"] -[ext_resource type="PackedScene" uid="uid://buvgdem68wtev" path="res://Scenes/Menus/PauseMenu/pause_menu.tscn" id="3_avnsx"] +[ext_resource type="PackedScene" uid="uid://buvgdem68wtev" path="res://UI/Menus/PauseMenu/pause_menu.tscn" id="3_avnsx"] [ext_resource type="PackedScene" uid="uid://n8ab1cy7ordc" path="res://card_model/3d_card.tscn" id="4_2mqvj"] [ext_resource type="Script" uid="uid://cij76at0nbs1v" path="res://PCs/view_movement.gd" id="4_mhexa"] -[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="4_mwtvp"] [ext_resource type="PackedScene" uid="uid://gdd1xupf4oxx" path="res://UI/CardSelectionBox/card_selection_box.tscn" id="5_h82f6"] [ext_resource type="PackedScene" uid="uid://dqt1ggtkpkuhs" path="res://PCs/PathEditTool/path_edit_tool.tscn" id="5_jlxb3"] [ext_resource type="Script" uid="uid://do24iuot0j7d7" path="res://Scripts/inventory.gd" id="6_cf5ap"] @@ -20,10 +19,10 @@ [ext_resource type="Texture2D" uid="uid://c60fh34ttgcvh" path="res://Assets/Textures/minimap_player.png" id="15_nhlam"] [ext_resource type="Texture2D" uid="uid://chhmkmlfrobhu" path="res://Assets/Textures/bubble.png" id="15_q3yot"] [ext_resource type="Texture2D" uid="uid://cqnapc8cscl7i" path="res://Assets/Textures/border.png" id="16_x1xjr"] -[ext_resource type="PackedScene" uid="uid://chnj376d3lcjd" path="res://Scenes/UI/pickup_notification.tscn" id="17_oyeww"] +[ext_resource type="PackedScene" uid="uid://chnj376d3lcjd" path="res://UI/pickup_notification.tscn" id="17_oyeww"] [ext_resource type="PackedScene" uid="uid://d17c77pqsi8oy" path="res://UI/EnemyCard/enemy_card_ui.tscn" id="18_dfkac"] -[ext_resource type="Texture2D" uid="uid://cvjcu3hofahr6" path="res://Assets/Textures/place_slot.png" id="18_okmpi"] [ext_resource type="Script" uid="uid://b5wle8f6rv3e7" path="res://PCs/player_movement.gd" id="20_cfhw8"] +[ext_resource type="Texture2D" uid="uid://deelc254ct7ae" path="res://Assets/Textures/place_icon.png" id="22_o55s8"] [ext_resource type="AudioStream" uid="uid://csu2hce4bfoki" path="res://Audio/cardPlace1.ogg" id="24_8ch4w"] [ext_resource type="AudioStream" uid="uid://dxq8b77wa41os" path="res://Audio/cardPlace2.ogg" id="25_awl6m"] [ext_resource type="Texture2D" uid="uid://bs2mskoyvyehv" path="res://Assets/Textures/crosshair159.png" id="25_l7gpx"] @@ -36,9 +35,10 @@ [ext_resource type="AudioStream" uid="uid://val5n418yebw" path="res://Audio/cardSlide3.ogg" id="30_djhlg"] [ext_resource type="Texture2D" uid="uid://up7omskwg0yx" path="res://Assets/Textures/battery.png" id="30_rim6q"] [ext_resource type="AudioStream" uid="uid://ck6g061w7i6ro" path="res://Audio/cardSlide4.ogg" id="31_546e6"] -[ext_resource type="PackedScene" uid="uid://ga21hoa8fxmm" path="res://hot_wheel.tscn" id="31_h1yfy"] -[ext_resource type="PackedScene" uid="uid://cqslp83lf0ku0" path="res://shield_ui.tscn" id="31_o55s8"] -[ext_resource type="PackedScene" uid="uid://q73cllewm7pj" path="res://energy_pips.tscn" id="32_o55s8"] +[ext_resource type="PackedScene" uid="uid://ga21hoa8fxmm" path="res://UI/HotWheelUI/hot_wheel.tscn" id="31_h1yfy"] +[ext_resource type="PackedScene" uid="uid://cqslp83lf0ku0" path="res://UI/ShieldUI/shield_ui.tscn" id="31_o55s8"] +[ext_resource type="PackedScene" uid="uid://q73cllewm7pj" path="res://UI/EnergyPipUI/energy_pips.tscn" id="32_o55s8"] +[ext_resource type="Texture2D" uid="uid://doqfkinrjw4mt" path="res://UI/Enemy_icon.png" id="32_r2yb6"] [ext_resource type="AudioStream" uid="uid://bj8eitlsjdotb" path="res://Audio/cardSlide5.ogg" id="32_tg7y0"] [ext_resource type="AudioStream" uid="uid://d0620p56ad34a" path="res://Audio/cardSlide6.ogg" id="33_2v5co"] [ext_resource type="AudioStream" uid="uid://uvoxbl1fbtu0" path="res://Audio/cardSlide7.ogg" id="34_6acmc"] @@ -59,12 +59,6 @@ radius = 0.3 height = 1.8 -[sub_resource type="ViewportTexture" id="ViewportTexture_v8f6r"] -viewport_path = NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport2") - -[sub_resource type="ViewportTexture" id="ViewportTexture_xme80"] -viewport_path = NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport3") - [sub_resource type="Environment" id="Environment_cilxe"] background_mode = 1 background_color = Color(0.282353, 0.615686, 0.278431, 1) @@ -120,7 +114,7 @@ stream_0/stream = ExtResource("36_lsvj8") streams_count = 1 stream_0/stream = ExtResource("37_kv1mg") -[node name="Hero" type="CharacterBody3D" node_paths=PackedStringArray("camera", "gun_camera", "left_hand", "right_hand", "edit_tool", "carding_tool", "sprite", "interaction_raycast", "draw_pile", "hand", "discard_pile", "gauntlet_cards", "hud", "movement", "player_name_tag", "weapon_swap_timer", "editing_states", "fighting_state", "default_state", "ears", "place_card_audio", "swap_card_audio", "ready_audio", "unready_audio", "fullpower_audio", "zeropower_audio", "swap_off_audio", "swap_on_audio")] +[node name="Hero" type="CharacterBody3D" node_paths=PackedStringArray("camera", "gun_camera", "left_hand", "right_hand", "edit_tool", "carding_tool", "sprite", "interaction_raycast", "draw_pile", "hand", "discard_pile", "hud", "movement", "player_name_tag", "weapon_swap_timer", "editing_states", "fighting_state", "default_state", "ears", "place_card_audio", "swap_card_audio", "ready_audio", "unready_audio", "fullpower_audio", "zeropower_audio", "swap_off_audio", "swap_on_audio")] collision_layer = 2 collision_mask = 37 script = ExtResource("1_pihpe") @@ -136,7 +130,6 @@ interaction_raycast = NodePath("ViewMovement/Head/RayCast3D") draw_pile = NodePath("DrawPile") hand = NodePath("Hand") discard_pile = NodePath("DiscardPile") -gauntlet_cards = [NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport2/Node2D"), NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport3/Node2D")] pause_menu_scene = ExtResource("3_avnsx") hud = NodePath("HUD") movement = NodePath("PlayerMovement") @@ -214,35 +207,6 @@ weapon_rotation_amount = 0.001 [node name="LeftHand" type="Node3D" parent="FirstPersonViewport/Head2"] transform = Transform3D(0.235, 0, 0, 0, 0.235, 0, 0, 0, 0.235, -0.645, -0.26, -1.04) -visible = false - -[node name="SubViewport2" type="SubViewport" parent="FirstPersonViewport/Head2/LeftHand"] -transparent_bg = true -render_target_update_mode = 4 - -[node name="Node2D" parent="FirstPersonViewport/Head2/LeftHand/SubViewport2" instance=ExtResource("4_mwtvp")] -visible = false - -[node name="SubViewport3" type="SubViewport" parent="FirstPersonViewport/Head2/LeftHand"] -transparent_bg = true -render_target_update_mode = 4 - -[node name="Node2D" parent="FirstPersonViewport/Head2/LeftHand/SubViewport3" instance=ExtResource("4_mwtvp")] -visible = false - -[node name="Sprite3D2" type="Sprite3D" parent="FirstPersonViewport/Head2/LeftHand"] -transform = Transform3D(0.35, 0, 0, 0, 0.35, 0, 0, 0, 0.35, 4.72, -0.145, 1.581) -layers = 2 -sorting_offset = 1.0 -texture_filter = 0 -texture = SubResource("ViewportTexture_v8f6r") - -[node name="Sprite3D3" type="Sprite3D" parent="FirstPersonViewport/Head2/LeftHand"] -transform = Transform3D(0.35, 0, 0, 0, 0.35, 0, 0, 0, 0.35, 6.01, -0.145, 1.581) -layers = 2 -sorting_offset = 1.0 -texture_filter = 0 -texture = SubResource("ViewportTexture_xme80") [node name="card_hand_model" parent="FirstPersonViewport/Head2/LeftHand" instance=ExtResource("11_h82f6")] transform = Transform3D(-4.16989, -0.848374, -3.61733e-07, -0.824933, 4.05468, -0.993384, 0.198049, -0.973442, -4.13774, 1.56596, 0.519149, 3.37051) @@ -321,7 +285,7 @@ max_look_up_angle = 80.0 enable_jumping = true weapon_holder = NodePath("../FirstPersonViewport/Head2/RightHand") -[node name="HUD" type="CanvasLayer" parent="." node_paths=PackedStringArray("player", "wave_count", "currency_count", "minimap_outline", "minimap", "minimap_cam", "minimap_viewport", "fps_label", "hover_text", "enemy_sprites", "enemy_counts", "wave_start_label", "place_icon", "swap_icon", "place_text", "swap_text", "energy_label", "blank_cassette_label", "feature_preview", "hot_wheel", "shield_ui", "currencies", "energy_pips")] +[node name="HUD" type="CanvasLayer" parent="." node_paths=PackedStringArray("player", "wave_count", "currency_count", "minimap_outline", "minimap", "minimap_cam", "minimap_viewport", "fps_label", "hover_text", "enemy_sprites", "enemy_counts", "wave_start_label", "place_text", "swap_text", "energy_label", "blank_cassette_label", "feature_preview", "hot_wheel", "shield_ui", "currencies", "energy_pips", "enemy_count_label", "primary_button", "secondary_button", "slots")] script = ExtResource("8_yl6ka") player = NodePath("..") wave_count = NodePath("EnemyTracker/WaveCount") @@ -336,10 +300,8 @@ enemy_sprites = [NodePath("EnemyTracker/TextureRect"), NodePath("EnemyTracker/Te enemy_counts = [NodePath("EnemyTracker/TextureRect/Label"), NodePath("EnemyTracker/TextureRect2/Label2"), NodePath("EnemyTracker/TextureRect3/Label3"), NodePath("EnemyTracker/TextureRect4/Label4"), NodePath("EnemyTracker/TextureRect5/Label5")] pickup_notif_scene = ExtResource("17_oyeww") wave_start_label = NodePath("StartWaveLabel") -place_icon = NodePath("PlaceIcon") -swap_icon = NodePath("SwapIcon") -place_text = NodePath("PlaceIcon/RichTextLabel") -swap_text = NodePath("SwapIcon/RichTextLabel") +place_text = NodePath("VBoxContainer2/HBoxContainer/RichTextLabel") +swap_text = NodePath("VBoxContainer2/HBoxContainer2/RichTextLabel") enemy_card_scene = ExtResource("18_dfkac") energy_label = NodePath("Currencies/HBoxContainer/EnergyLabel") blank_cassette_label = NodePath("Currencies/BlankCassetteLabel") @@ -348,6 +310,11 @@ hot_wheel = NodePath("HotWheel") shield_ui = NodePath("ShieldUI") currencies = NodePath("Currencies") energy_pips = NodePath("EnergyPips") +enemy_count_label = NodePath("HBoxContainer/Label") +primary_button = NodePath("VBoxContainer2/HBoxContainer/Button") +secondary_button = NodePath("VBoxContainer2/HBoxContainer2/Button2") +null_icon = ExtResource("22_o55s8") +slots = NodePath("VBoxContainer2") [node name="FirstPersonCam" type="TextureRect" parent="HUD"] anchors_preset = 15 @@ -358,60 +325,6 @@ grow_vertical = 2 mouse_filter = 2 texture = SubResource("ViewportTexture_mk87g") -[node name="PlaceIcon" type="TextureRect" parent="HUD"] -visible = false -anchors_preset = -1 -anchor_left = 0.75 -anchor_top = 0.95 -anchor_right = 0.8 -anchor_bottom = 0.95 -grow_horizontal = 0 -grow_vertical = 0 -mouse_filter = 2 -texture = ExtResource("18_okmpi") -stretch_mode = 5 - -[node name="RichTextLabel" type="RichTextLabel" parent="HUD/PlaceIcon"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -bbcode_enabled = true -text = "%Primary Fire%" -scroll_active = false -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="SwapIcon" type="TextureRect" parent="HUD"] -visible = false -anchors_preset = -1 -anchor_left = 0.95 -anchor_top = 0.95 -anchor_right = 0.95 -anchor_bottom = 0.95 -grow_horizontal = 0 -grow_vertical = 0 -mouse_filter = 2 -texture = ExtResource("18_okmpi") -stretch_mode = 5 - -[node name="RichTextLabel" type="RichTextLabel" parent="HUD/SwapIcon"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -bbcode_enabled = true -text = "%Secondary Fire%" -scroll_active = false -horizontal_alignment = 1 -vertical_alignment = 1 - [node name="Minimap" type="TextureRect" parent="HUD"] visible = false anchors_preset = 1 @@ -452,6 +365,7 @@ horizontal_alignment = 2 vertical_alignment = 1 [node name="EnemyTracker" type="TextureRect" parent="HUD"] +visible = false texture_filter = 1 anchors_preset = -1 anchor_left = 0.5 @@ -601,19 +515,18 @@ vertical_alignment = 1 anchors_preset = 4 anchor_top = 0.5 anchor_bottom = 0.5 -offset_left = 15.0 -offset_top = -295.0 -offset_right = 445.0 -offset_bottom = -40.0 -grow_vertical = 0 +offset_top = -10.0 +offset_right = 104.0 +offset_bottom = 10.0 +grow_vertical = 2 mouse_filter = 2 alignment = 2 [node name="StartWaveLabel" type="RichTextLabel" parent="HUD"] anchors_preset = -1 -anchor_top = 0.261 +anchor_top = 0.136 anchor_right = 1.0 -anchor_bottom = 0.395 +anchor_bottom = 0.252 grow_horizontal = 2 mouse_filter = 2 bbcode_enabled = true @@ -729,9 +642,9 @@ vertical_alignment = 1 visible = false anchors_preset = -1 anchor_left = 0.5 -anchor_top = 0.893 +anchor_top = 0.973 anchor_right = 0.5 -anchor_bottom = 0.893 +anchor_bottom = 0.973 grow_horizontal = 2 grow_vertical = 0 @@ -762,6 +675,77 @@ anchor_bottom = 0.97 grow_horizontal = 0 grow_vertical = 0 +[node name="HBoxContainer" type="HBoxContainer" parent="HUD"] +anchors_preset = 5 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -20.0 +offset_right = 20.0 +offset_bottom = 40.0 +grow_horizontal = 2 +rotation = 0.008726646 + +[node name="TextureRect" type="TextureRect" parent="HUD/HBoxContainer"] +layout_mode = 2 +texture = ExtResource("32_r2yb6") +stretch_mode = 3 + +[node name="Label" type="Label" parent="HUD/HBoxContainer"] +layout_mode = 2 +text = "15" +vertical_alignment = 1 + +[node name="VBoxContainer2" type="VBoxContainer" parent="HUD"] +visible = false +anchors_preset = -1 +anchor_left = 0.98 +anchor_top = 0.768 +anchor_right = 0.98 +anchor_bottom = 0.768 +grow_horizontal = 0 +grow_vertical = 0 +alignment = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="HUD/VBoxContainer2"] +layout_mode = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="HUD/VBoxContainer2/HBoxContainer"] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +mouse_filter = 2 +bbcode_enabled = true +text = "%Primary Fire%" +scroll_active = false +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Button" type="Button" parent="HUD/VBoxContainer2/HBoxContainer"] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +icon = ExtResource("22_o55s8") +icon_alignment = 1 +expand_icon = true + +[node name="HBoxContainer2" type="HBoxContainer" parent="HUD/VBoxContainer2"] +layout_mode = 2 + +[node name="RichTextLabel" type="RichTextLabel" parent="HUD/VBoxContainer2/HBoxContainer2"] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +mouse_filter = 2 +bbcode_enabled = true +text = "%Secondary Fire%" +scroll_active = false +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Button2" type="Button" parent="HUD/VBoxContainer2/HBoxContainer2"] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +icon = ExtResource("22_o55s8") +icon_alignment = 1 +expand_icon = true + [node name="WeaponSwapTimer" type="Timer" parent="."] wait_time = 0.4 one_shot = true diff --git a/PCs/hud.gd b/PCs/hud.gd index e570b93..af41403 100644 --- a/PCs/hud.gd +++ b/PCs/hud.gd @@ -15,8 +15,6 @@ extends CanvasLayer @export var enemy_counts: Array[Label] @export var pickup_notif_scene: PackedScene @export var wave_start_label: RichTextLabel -@export var place_icon: TextureRect -@export var swap_icon: TextureRect @export var place_text: RichTextLabel @export var swap_text: RichTextLabel @export var enemy_card_scene: PackedScene @@ -29,12 +27,18 @@ extends CanvasLayer @export var shield_ui: ShieldUI @export var currencies: VBoxContainer @export var energy_pips: EnergyPips +@export var enemy_count_label: Label +@export var primary_button: Button +@export var secondary_button: Button +@export var null_icon: Texture +@export var slots: VBoxContainer var last_lives_count: int = Data.starting_lives var enemy_names: Array[String] var map_anchor: Node3D var cards: Array[EnemyCardUI] = [] var feature_preview_tween: Tween +var enemy_count: int = 0 func _ready() -> void: @@ -52,6 +56,28 @@ func hide_hot_wheel() -> void: hot_wheel.visible = false +func show_slots() -> void: + slots.visible = true + + +func hide_slots() -> void: + slots.visible = false + + +func set_primary_button(card: Card) -> void: + if card: + primary_button.icon = card.icon + else: + primary_button.icon = null_icon + + +func set_secondary_button(card: Card) -> void: + if card: + secondary_button.icon = card.icon + else: + secondary_button.icon = null_icon + + func set_blank_cassette_count(value: int) -> void: blank_cassette_label.text = str(value) @@ -100,6 +126,7 @@ func _process(_delta: float) -> void: func show_features(cassette: Card) -> void: + print("shown features") for child: Node in feature_preview.get_children(): child.queue_free() var cols: int = max(cassette.tower_stats.features.size(), cassette.weapon_stats.features.size()) @@ -184,9 +211,12 @@ func enemy_count_down(enemy: Enemy) -> void: if num == 0: enemy_counts[index].set_visible(false) enemy_sprites[index].set_visible(false) + enemy_count -= 1 + enemy_count_label.text = str(enemy_count) func set_upcoming_wave(value: Dictionary) -> void: + enemy_count = 0 var frame_count: int = 0 enemy_names = [] var wave: Dictionary = {} @@ -196,6 +226,7 @@ func set_upcoming_wave(value: Dictionary) -> void: if enemy.title == key: new_enemy = enemy wave[new_enemy] = value[key] + enemy_count += value[key] for x: int in enemy_sprites.size(): enemy_sprites[x].set_visible(false) enemy_counts[x].set_visible(false) @@ -206,6 +237,7 @@ func set_upcoming_wave(value: Dictionary) -> void: enemy_sprites[frame_count].set_visible(true) enemy_counts[frame_count].set_visible(true) frame_count += 1 + enemy_count_label.text = str(enemy_count) func set_currency_count(value: int) -> void: @@ -255,7 +287,6 @@ func minimize_minimap() -> void: func pickup(card: Card) -> void: - hot_wheel.add_cassette(card) var notif: PickupNotification = pickup_notif_scene.instantiate() notif.set_card(card) $VBoxContainer.add_child(notif) diff --git a/Scenes/CardPrinter/card_printer.tscn b/Scenes/CardPrinter/card_printer.tscn index ab6a34d..4992bde 100644 --- a/Scenes/CardPrinter/card_printer.tscn +++ b/Scenes/CardPrinter/card_printer.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=9 format=3 uid="uid://1b2ikdanl66b"] [ext_resource type="Script" uid="uid://bivtfdl3p1brv" path="res://Scenes/CardPrinter/card_printer.gd" id="1_qft15"] -[ext_resource type="PackedScene" uid="uid://bcvjgl0s1wp8y" path="res://choose_card_screen.tscn" id="2_kpujb"] +[ext_resource type="PackedScene" uid="uid://bcvjgl0s1wp8y" path="res://UI/Menus/RadioMenu/choose_card_screen.tscn" id="2_kpujb"] [ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="4_eavi1"] [ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="5_m033a"] diff --git a/Scenes/Menus/alert_popup.tscn b/Scenes/Menus/alert_popup.tscn index 1527de3..f62fc48 100644 --- a/Scenes/Menus/alert_popup.tscn +++ b/Scenes/Menus/alert_popup.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=3 uid="uid://6a277g802os0"] [ext_resource type="Script" uid="uid://4uwd40mavufi" path="res://Scripts/alert_popup.gd" id="1_cac03"] -[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_2mbtt"] +[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="2_2mbtt"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_veol0"] random_pitch = 1.1 diff --git a/Scenes/Menus/confirmation_popup.tscn b/Scenes/Menus/confirmation_popup.tscn index e1b5804..794b0ac 100644 --- a/Scenes/Menus/confirmation_popup.tscn +++ b/Scenes/Menus/confirmation_popup.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=3 uid="uid://f46qh73hrk4y"] [ext_resource type="Script" uid="uid://bjt72v1wym5ie" path="res://Scripts/confirmation_popup.gd" id="1_x7akt"] -[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_3w36n"] +[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="2_3w36n"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_22wuj"] random_pitch = 1.1 @@ -27,24 +27,28 @@ layout_mode = 2 [node name="Label" type="Label" parent="VBoxContainer"] layout_mode = 2 +size_flags_vertical = 3 text = "Some Text?" +horizontal_alignment = 1 +vertical_alignment = 1 [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] layout_mode = 2 - -[node name="Confirm" type="Button" parent="VBoxContainer/HBoxContainer"] -layout_mode = 2 -text = "Confirm" +alignment = 2 [node name="Cancel" type="Button" parent="VBoxContainer/HBoxContainer"] layout_mode = 2 text = "Cancel" +[node name="Confirm" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Confirm" + [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = SubResource("AudioStreamRandomizer_22wuj") bus = &"SFX" -[connection signal="mouse_entered" from="VBoxContainer/HBoxContainer/Confirm" to="." method="_on_button_mouse_entered"] -[connection signal="pressed" from="VBoxContainer/HBoxContainer/Confirm" to="." method="_on_confirm_pressed"] [connection signal="mouse_entered" from="VBoxContainer/HBoxContainer/Cancel" to="." method="_on_button_mouse_entered"] [connection signal="pressed" from="VBoxContainer/HBoxContainer/Cancel" to="." method="_on_cancel_pressed"] +[connection signal="mouse_entered" from="VBoxContainer/HBoxContainer/Confirm" to="." method="_on_button_mouse_entered"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/Confirm" to="." method="_on_confirm_pressed"] diff --git a/Scenes/Menus/multiplayer_lobby.tscn b/Scenes/Menus/multiplayer_lobby.tscn index 23054c9..784692b 100644 --- a/Scenes/Menus/multiplayer_lobby.tscn +++ b/Scenes/Menus/multiplayer_lobby.tscn @@ -1,19 +1,18 @@ -[gd_scene load_steps=9 format=3 uid="uid://cwvprrvk4l2k0"] +[gd_scene load_steps=8 format=3 uid="uid://cwvprrvk4l2k0"] -[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://UI/new_theme.tres" id="1_l1spu"] [ext_resource type="Script" uid="uid://cvm4lyhx1uh0w" path="res://Scripts/multiplayer_lobby.gd" id="2_nb860"] -[ext_resource type="PackedScene" uid="uid://dpt3kpixawyby" path="res://Scenes/UI/scoreboard.tscn" id="3_f6bia"] +[ext_resource type="PackedScene" uid="uid://dpt3kpixawyby" path="res://UI/scoreboard.tscn" id="3_f6bia"] [ext_resource type="PackedScene" uid="uid://bvfit0sy2tnw4" path="res://Scenes/Menus/server_form.tscn" id="5_bqbwv"] -[ext_resource type="PackedScene" uid="uid://ddmg342ff2qaq" path="res://Scenes/UI/chatbox.tscn" id="6_wtqwd"] -[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="7_6mhre"] -[ext_resource type="PackedScene" uid="uid://bc6m3cluulpis" path="res://Scenes/Menus/CharacterSelect/character_select.tscn" id="7_kawp7"] +[ext_resource type="PackedScene" uid="uid://ddmg342ff2qaq" path="res://UI/chatbox.tscn" id="6_wtqwd"] +[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="7_6mhre"] +[ext_resource type="PackedScene" uid="uid://bc6m3cluulpis" path="res://UI/Menus/CharacterSelect/character_select.tscn" id="7_kawp7"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_cwnde"] random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("7_6mhre") -[node name="multiplayer_lobby" type="Control" node_paths=PackedStringArray("server_form", "scoreboard", "chatbox", "ready_button", "audio_player")] +[node name="multiplayer_lobby" type="Control" node_paths=PackedStringArray("server_form", "chatbox", "audio_player")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -21,13 +20,10 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -theme = ExtResource("1_l1spu") script = ExtResource("2_nb860") server_form = NodePath("ServerForm") character_select_screen = ExtResource("7_kawp7") -scoreboard = NodePath("Scoreboard") chatbox = NodePath("Chatbox") -ready_button = NodePath("ReadyButton") audio_player = NodePath("AudioStreamPlayer") [node name="ServerForm" parent="." instance=ExtResource("5_bqbwv")] diff --git a/Scenes/Menus/server_form.tscn b/Scenes/Menus/server_form.tscn index a59bcda..c26f6d0 100644 --- a/Scenes/Menus/server_form.tscn +++ b/Scenes/Menus/server_form.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=3 uid="uid://bvfit0sy2tnw4"] [ext_resource type="Script" uid="uid://dyyhbd2pbfygi" path="res://Scripts/server_form.gd" id="1_43oaq"] -[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_hirre"] +[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="2_hirre"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_3o7ni"] random_pitch = 1.1 diff --git a/Scenes/Menus/singleplayer_lobby.tscn b/Scenes/Menus/singleplayer_lobby.tscn index b036526..1a699c2 100644 --- a/Scenes/Menus/singleplayer_lobby.tscn +++ b/Scenes/Menus/singleplayer_lobby.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=7 format=3 uid="uid://176c6fuhg5ic"] +[gd_scene load_steps=6 format=3 uid="uid://176c6fuhg5ic"] -[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://UI/new_theme.tres" id="1_2aur6"] [ext_resource type="Script" uid="uid://e5gf7hd5jsw3" path="res://Scripts/singleplayer_lobby.gd" id="1_nd17k"] -[ext_resource type="PackedScene" uid="uid://ddmg342ff2qaq" path="res://Scenes/UI/chatbox.tscn" id="3_l8xy3"] -[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="6_6nu57"] -[ext_resource type="PackedScene" uid="uid://bc6m3cluulpis" path="res://Scenes/Menus/CharacterSelect/character_select.tscn" id="6_ltm04"] +[ext_resource type="PackedScene" uid="uid://ddmg342ff2qaq" path="res://UI/chatbox.tscn" id="3_l8xy3"] +[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="6_6nu57"] +[ext_resource type="PackedScene" uid="uid://bc6m3cluulpis" path="res://UI/Menus/CharacterSelect/character_select.tscn" id="6_ltm04"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_g5har"] random_pitch = 1.1 @@ -19,7 +18,6 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -theme = ExtResource("1_2aur6") script = ExtResource("1_nd17k") character_select_screen = ExtResource("6_ltm04") chatbox = NodePath("Chatbox") @@ -27,6 +25,13 @@ audio_player = NodePath("AudioStreamPlayer") [node name="Chatbox" parent="." instance=ExtResource("3_l8xy3")] layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.02 +anchor_top = 0.65 +anchor_right = 0.4 +anchor_bottom = 0.98 +grow_horizontal = 1 +grow_vertical = 1 [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = SubResource("AudioStreamRandomizer_g5har") diff --git a/Scenes/Menus/text_input_popup.tscn b/Scenes/Menus/text_input_popup.tscn index a82dd51..b46b9a6 100644 --- a/Scenes/Menus/text_input_popup.tscn +++ b/Scenes/Menus/text_input_popup.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=3 uid="uid://dccsyymk4uko6"] [ext_resource type="Script" uid="uid://b0asb3pmu8pqb" path="res://Scripts/text_input_popup.gd" id="1_ve6eb"] -[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_mec4u"] +[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="2_mec4u"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_w0x7l"] random_pitch = 1.1 diff --git a/remix_table.gd b/Scenes/MixingTable/remix_table.gd similarity index 100% rename from remix_table.gd rename to Scenes/MixingTable/remix_table.gd diff --git a/remix_table.gd.uid b/Scenes/MixingTable/remix_table.gd.uid similarity index 100% rename from remix_table.gd.uid rename to Scenes/MixingTable/remix_table.gd.uid diff --git a/remix_table.tscn b/Scenes/MixingTable/remix_table.tscn similarity index 92% rename from remix_table.tscn rename to Scenes/MixingTable/remix_table.tscn index ae037d8..c117c96 100644 --- a/remix_table.tscn +++ b/Scenes/MixingTable/remix_table.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=6 format=3 uid="uid://c6isprnkaliqr"] -[ext_resource type="Script" uid="uid://bpvmvx10q4ayd" path="res://remix_table.gd" id="1_q8doq"] -[ext_resource type="PackedScene" uid="uid://bajli4d3nqwll" path="res://track_editor.tscn" id="2_ibyhf"] +[ext_resource type="Script" uid="uid://bpvmvx10q4ayd" path="res://Scenes/MixingTable/remix_table.gd" id="1_q8doq"] +[ext_resource type="PackedScene" uid="uid://bajli4d3nqwll" path="res://UI/Menus/MixingMenu/track_editor.tscn" id="2_ibyhf"] [ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="2_mjah6"] [sub_resource type="BoxShape3D" id="BoxShape3D_ibyhf"] diff --git a/Scenes/ShopStand/shop_stand.tscn b/Scenes/ShopStand/shop_stand.tscn index e7062af..000a630 100644 --- a/Scenes/ShopStand/shop_stand.tscn +++ b/Scenes/ShopStand/shop_stand.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://colk6js4wet11" path="res://Scenes/ShopStand/shop_stand.gd" id="1_4in53"] [ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="1_x8sts"] [ext_resource type="PackedScene" uid="uid://dsasunnk47n8o" path="res://Scenes/item_card.tscn" id="2_qh00w"] -[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="3_u7x2f"] +[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://UI/card_hand.tscn" id="3_u7x2f"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lhc2g"] albedo_color = Color(0.313726, 0.180392, 0.00392157, 1) diff --git a/Scenes/UI/drop_003.ogg.import b/Scenes/UI/drop_003.ogg.import deleted file mode 100644 index 04b26ea..0000000 --- a/Scenes/UI/drop_003.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://cp6ph4ra7u5rk" -path="res://.godot/imported/drop_003.ogg-b1448cf24bb17e683ffb9af8ac49fa5f.oggvorbisstr" - -[deps] - -source_file="res://Scenes/UI/drop_003.ogg" -dest_files=["res://.godot/imported/drop_003.ogg-b1448cf24bb17e683ffb9af8ac49fa5f.oggvorbisstr"] - -[params] - -loop=false -loop_offset=0 -bpm=0 -beat_count=0 -bar_beats=4 diff --git a/Scripts/confirmation_popup.gd b/Scripts/confirmation_popup.gd index 539afbf..10de507 100644 --- a/Scripts/confirmation_popup.gd +++ b/Scripts/confirmation_popup.gd @@ -4,9 +4,9 @@ extends PanelContainer signal completed(outcome: bool) func set_popup(prompt_text: String, confirm_text: String, cancel_text: String) -> void: - $VBoxContainer/Label.text = prompt_text - $VBoxContainer/HBoxContainer/Confirm.text = confirm_text - $VBoxContainer/HBoxContainer/Cancel.text = cancel_text + $VBoxContainer/Label.text = tr(prompt_text) + $VBoxContainer/HBoxContainer/Confirm.text = tr(confirm_text) + $VBoxContainer/HBoxContainer/Cancel.text = tr(cancel_text) func _on_confirm_pressed() -> void: diff --git a/Scripts/game.gd b/Scripts/game.gd index 2d716dd..4ee71c7 100644 --- a/Scripts/game.gd +++ b/Scripts/game.gd @@ -168,7 +168,7 @@ func set_upcoming_wave() -> void: func temp_set_upcoming_wave(new_wave: Wave, coins: int) -> void: pot = coins - connected_players_nodes[multiplayer.get_unique_id()].hud.show_wave_generation_anim(new_wave) + #connected_players_nodes[multiplayer.get_unique_id()].hud.show_wave_generation_anim(new_wave) connected_players_nodes[multiplayer.get_unique_id()].hud.set_upcoming_wave(new_wave.to_dict()) #TODO: You'll probably have to write a to_dict function for the new wave system diff --git a/Scripts/pickup_notification.gd b/Scripts/pickup_notification.gd index 07b2f51..a82e0e9 100644 --- a/Scripts/pickup_notification.gd +++ b/Scripts/pickup_notification.gd @@ -2,7 +2,6 @@ class_name PickupNotification extends PanelContainer @export var fade_out_time: float -@export var style: StyleBoxFlat @export var text_style: Color @export var common_background: Color @export var uncommon_background: Color @@ -15,19 +14,17 @@ var fading: bool = false func _ready() -> void: - add_theme_stylebox_override("panel", style) - $HBoxContainer/Label.add_theme_color_override("font_color", text_style) - $HBoxContainer/Label2.add_theme_color_override("font_color", text_style) $Timer.start() func _process(delta: float) -> void: if fading: fade_time += delta - style.bg_color.a = lerp(200.0 / 255.0, 0.0, fade_time / fade_out_time) - text_style.a = lerp(220.0 / 255.0, 0.0, fade_time / fade_out_time) - $HBoxContainer/Label.add_theme_color_override("font_color", text_style) - $HBoxContainer/Label2.add_theme_color_override("font_color", text_style) + var mod_color: Color = Color.WHITE + mod_color.a = 1.0 - (fade_time / fade_out_time) + modulate = mod_color + #$HBoxContainer/Label.add_theme_color_override("font_color", text_style) + #$HBoxContainer/Label2.add_theme_color_override("font_color", text_style) if fade_time >= fade_out_time: queue_free() @@ -36,15 +33,15 @@ func set_card(card: Card) -> void: $HBoxContainer/Label.text = tr(card.display_name) match(card.rarity): Data.Rarity.COMMON: - style.bg_color = common_background + $HBoxContainer/Label.add_theme_color_override("font_color", common_background) Data.Rarity.UNCOMMON: - style.bg_color = uncommon_background + $HBoxContainer/Label.add_theme_color_override("font_color", uncommon_background) Data.Rarity.RARE: - style.bg_color = rare_background + $HBoxContainer/Label.add_theme_color_override("font_color", rare_background) Data.Rarity.EPIC: - style.bg_color = epic_background + $HBoxContainer/Label.add_theme_color_override("font_color", epic_background) Data.Rarity.LEGENDARY: - style.bg_color = legendary_background + $HBoxContainer/Label.add_theme_color_override("font_color", legendary_background) func _on_timer_timeout() -> void: diff --git a/Scripts/status_effector.gd b/Scripts/status_effector.gd index f3deeb0..0416d90 100644 --- a/Scripts/status_effector.gd +++ b/Scripts/status_effector.gd @@ -4,7 +4,7 @@ extends Node @export var sprite_container: Container ## Container that effect icons should be instantiated under var enemy: EnemyController ## Enemy Controller that this node should affect -var icon_scene: PackedScene = preload("res://Scenes/status_icon.tscn") +var icon_scene: PackedScene = preload("res://UI/status_icon.tscn") var immunities: Array[StatusEffect] = [] ## The set of status effects that this effector shouldn't apply var effects: Dictionary[StatusEffect, int] = {} var icons: Dictionary[StatusEffect, TextureRect] = {} diff --git a/crt_harrison.gdshader b/Shaders/crt_harrison.gdshader similarity index 100% rename from crt_harrison.gdshader rename to Shaders/crt_harrison.gdshader diff --git a/crt_harrison.gdshader.uid b/Shaders/crt_harrison.gdshader.uid similarity index 100% rename from crt_harrison.gdshader.uid rename to Shaders/crt_harrison.gdshader.uid diff --git a/Scripts/damage_particle.gd b/UI/DamageParticle/damage_particle.gd similarity index 100% rename from Scripts/damage_particle.gd rename to UI/DamageParticle/damage_particle.gd diff --git a/Scripts/damage_particle.gd.uid b/UI/DamageParticle/damage_particle.gd.uid similarity index 100% rename from Scripts/damage_particle.gd.uid rename to UI/DamageParticle/damage_particle.gd.uid diff --git a/Scenes/damage_particle.tscn b/UI/DamageParticle/damage_particle.tscn similarity index 94% rename from Scenes/damage_particle.tscn rename to UI/DamageParticle/damage_particle.tscn index ae43cd4..6a51419 100644 --- a/Scenes/damage_particle.tscn +++ b/UI/DamageParticle/damage_particle.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://cqtew0t8sttpm"] -[ext_resource type="Script" uid="uid://blt7umrgo3tfh" path="res://Scripts/damage_particle.gd" id="1_lgvaq"] +[ext_resource type="Script" uid="uid://blt7umrgo3tfh" path="res://UI/DamageParticle/damage_particle.gd" id="1_lgvaq"] [sub_resource type="ViewportTexture" id="ViewportTexture_ppqlh"] viewport_path = NodePath("SubViewport") diff --git a/Scripts/health_bar.gd b/UI/EnemyHealthBar/health_bar.gd similarity index 100% rename from Scripts/health_bar.gd rename to UI/EnemyHealthBar/health_bar.gd diff --git a/Scripts/health_bar.gd.uid b/UI/EnemyHealthBar/health_bar.gd.uid similarity index 100% rename from Scripts/health_bar.gd.uid rename to UI/EnemyHealthBar/health_bar.gd.uid diff --git a/Scenes/health_bar.tscn b/UI/EnemyHealthBar/health_bar.tscn similarity index 88% rename from Scenes/health_bar.tscn rename to UI/EnemyHealthBar/health_bar.tscn index d962dbf..80ed802 100644 --- a/Scenes/health_bar.tscn +++ b/UI/EnemyHealthBar/health_bar.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=4 format=3 uid="uid://hjq3nrnumklp"] [ext_resource type="Texture2D" uid="uid://r202vo47jw1q" path="res://Assets/Textures/enemyhealth.png" id="1_x8m88"] -[ext_resource type="Script" uid="uid://bf06es50d0flv" path="res://Scripts/health_bar.gd" id="2_m8c1f"] -[ext_resource type="Gradient" uid="uid://dx7auy3oqw82t" path="res://UI/health_bar_gradient.tres" id="3_dpmma"] +[ext_resource type="Script" uid="uid://bf06es50d0flv" path="res://UI/EnemyHealthBar/health_bar.gd" id="2_m8c1f"] +[ext_resource type="Gradient" uid="uid://dx7auy3oqw82t" path="res://UI/EnemyHealthBar/health_bar_gradient.tres" id="3_dpmma"] [node name="HealthBar" type="TextureProgressBar"] offset_right = 200.0 diff --git a/UI/health_bar_gradient.tres b/UI/EnemyHealthBar/health_bar_gradient.tres similarity index 100% rename from UI/health_bar_gradient.tres rename to UI/EnemyHealthBar/health_bar_gradient.tres diff --git a/UI/Enemy_icon.png b/UI/Enemy_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..afd73cb50dd2223c27abf9758f0dfc0a267a4e13 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0y~yU=U(pV36iuV_;w?Ja~UT0|NtNage(c!@6@aFBupZ zT|HeKLo9mVhHT7YHsq<@cX~q4%sj1>ovITy3Y?g-H~9bJV7o=Z|I~i_HaZ-4nC_q{ z!ew5%$HDT>LYwfgC&kRNztwJ6RZUAd$;Y+(=AGi&@4w#EWf#x7QliRdk$iui(xRix z4Y}1Njv3~&tEJjpmPq^*(QcDj*LeBW&J{s5#*0*sMTBm>{(Kt8$MTg=^P>EJZP;d^ zb6Df4i@Vi&^}h>VxXRz%zn|st+b?Y1JC_Y3i9DP!PyaXdz<_5N2alz?U}i5 z3=F@&JxTelzI;won3R}(565qhy11R*Pf`-7$<>B`1TPGWXHv#uRqHury_>^=thZRb`f#F#`eFfcH9y85}Sb4q9e E09in-$^ZZW literal 0 HcmV?d00001 diff --git a/screencap.png.import b/UI/Enemy_icon.png.import similarity index 74% rename from screencap.png.import rename to UI/Enemy_icon.png.import index b1daa84..5f6ae5e 100644 --- a/screencap.png.import +++ b/UI/Enemy_icon.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://d1v5d8goaf7mu" -path="res://.godot/imported/screencap.png-3297cf7556450392792667332cdef39f.ctex" +uid="uid://doqfkinrjw4mt" +path="res://.godot/imported/Enemy_icon.png-e3ec1e1b7e954feb5c5ab49627db4832.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://screencap.png" -dest_files=["res://.godot/imported/screencap.png-3297cf7556450392792667332cdef39f.ctex"] +source_file="res://UI/Enemy_icon.png" +dest_files=["res://.godot/imported/Enemy_icon.png-e3ec1e1b7e954feb5c5ab49627db4832.ctex"] [params] diff --git a/energy_pips.gd b/UI/EnergyPipUI/energy_pips.gd similarity index 100% rename from energy_pips.gd rename to UI/EnergyPipUI/energy_pips.gd diff --git a/energy_pips.gd.uid b/UI/EnergyPipUI/energy_pips.gd.uid similarity index 100% rename from energy_pips.gd.uid rename to UI/EnergyPipUI/energy_pips.gd.uid diff --git a/energy_pips.tscn b/UI/EnergyPipUI/energy_pips.tscn similarity index 88% rename from energy_pips.tscn rename to UI/EnergyPipUI/energy_pips.tscn index 986f736..f9b232b 100644 --- a/energy_pips.tscn +++ b/UI/EnergyPipUI/energy_pips.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=3 uid="uid://q73cllewm7pj"] -[ext_resource type="Script" uid="uid://cvdb5y5wmkvmm" path="res://energy_pips.gd" id="1_6l017"] -[ext_resource type="Texture2D" uid="uid://h1m3ss2ln5hq" path="res://energy_sheet.png" id="2_q2m70"] +[ext_resource type="Script" uid="uid://cvdb5y5wmkvmm" path="res://UI/EnergyPipUI/energy_pips.gd" id="1_6l017"] +[ext_resource type="Texture2D" uid="uid://h1m3ss2ln5hq" path="res://UI/EnergyPipUI/energy_sheet.png" id="2_q2m70"] [sub_resource type="AtlasTexture" id="AtlasTexture_46jyx"] atlas = ExtResource("2_q2m70") diff --git a/energy_sheet.png b/UI/EnergyPipUI/energy_sheet.png similarity index 100% rename from energy_sheet.png rename to UI/EnergyPipUI/energy_sheet.png diff --git a/energy_sheet.png.import b/UI/EnergyPipUI/energy_sheet.png.import similarity index 76% rename from energy_sheet.png.import rename to UI/EnergyPipUI/energy_sheet.png.import index 512a03a..60116c6 100644 --- a/energy_sheet.png.import +++ b/UI/EnergyPipUI/energy_sheet.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://h1m3ss2ln5hq" -path="res://.godot/imported/energy_sheet.png-cce4e01dae5f3c3cc83f0e4b096ce208.ctex" +path="res://.godot/imported/energy_sheet.png-3d8e008c2b32340e3af87512f5cd5773.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://energy_sheet.png" -dest_files=["res://.godot/imported/energy_sheet.png-cce4e01dae5f3c3cc83f0e4b096ce208.ctex"] +source_file="res://UI/EnergyPipUI/energy_sheet.png" +dest_files=["res://.godot/imported/energy_sheet.png-3d8e008c2b32340e3af87512f5cd5773.ctex"] [params] diff --git a/feature_ui.gd b/UI/FeatureUI/feature_ui.gd similarity index 100% rename from feature_ui.gd rename to UI/FeatureUI/feature_ui.gd diff --git a/feature_ui.gd.uid b/UI/FeatureUI/feature_ui.gd.uid similarity index 100% rename from feature_ui.gd.uid rename to UI/FeatureUI/feature_ui.gd.uid diff --git a/feature_ui.tscn b/UI/FeatureUI/feature_ui.tscn similarity index 95% rename from feature_ui.tscn rename to UI/FeatureUI/feature_ui.tscn index 6d5f937..5c188ff 100644 --- a/feature_ui.tscn +++ b/UI/FeatureUI/feature_ui.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://c8xdsg6gtwvh3"] -[ext_resource type="Script" uid="uid://o668c5lfhgm5" path="res://feature_ui.gd" id="1_tms0v"] +[ext_resource type="Script" uid="uid://o668c5lfhgm5" path="res://UI/FeatureUI/feature_ui.gd" id="1_tms0v"] [ext_resource type="Texture2D" uid="uid://cps7onfe2s1gi" path="res://Scripts/Features/Radar/radar_icon.png" id="2_w6jf0"] [node name="FeatureUI" type="VBoxContainer" node_paths=PackedStringArray("icon", "name_label")] diff --git a/UI/HotWheelUI/hot_wheel.gd b/UI/HotWheelUI/hot_wheel.gd new file mode 100644 index 0000000..4dc5eb1 --- /dev/null +++ b/UI/HotWheelUI/hot_wheel.gd @@ -0,0 +1,39 @@ +class_name HotWheel +extends HBoxContainer + +@export var buttons: Array[Button] + + +func update_cassettes(cassettes: Array[Card]) -> void: + var entry_count: int = cassettes.size() + buttons[0].visible = true + buttons[1].visible = true + buttons[2].visible = true + buttons[3].visible = true + buttons[4].visible = true + if entry_count < 1: + buttons[0].visible = false + buttons[1].visible = false + buttons[2].visible = false + buttons[3].visible = false + buttons[4].visible = false + elif entry_count < 2: + buttons[0].visible = false + buttons[1].visible = false + buttons[3].visible = false + buttons[4].visible = false + elif entry_count < 4: + buttons[0].visible = false + buttons[4].visible = false + if entry_count >= 1: + buttons[2].icon = cassettes[0].icon + if entry_count >= 2: + buttons[1].icon = cassettes[1].icon + buttons[3].icon = cassettes[1].icon + if entry_count >= 3: + buttons[3].icon = cassettes[2].icon + if entry_count >= 4: + buttons[0].icon = cassettes[3].icon + buttons[4].icon = cassettes[3].icon + if entry_count >= 5: + buttons[4].icon = cassettes[4].icon diff --git a/hot_wheel.gd.uid b/UI/HotWheelUI/hot_wheel.gd.uid similarity index 100% rename from hot_wheel.gd.uid rename to UI/HotWheelUI/hot_wheel.gd.uid diff --git a/UI/HotWheelUI/hot_wheel.tscn b/UI/HotWheelUI/hot_wheel.tscn new file mode 100644 index 0000000..b4d09b4 --- /dev/null +++ b/UI/HotWheelUI/hot_wheel.tscn @@ -0,0 +1,54 @@ +[gd_scene load_steps=3 format=3 uid="uid://ga21hoa8fxmm"] + +[ext_resource type="Script" uid="uid://laoxiep4e5x0" path="res://UI/HotWheelUI/hot_wheel.gd" id="1_2sjpl"] +[ext_resource type="Texture2D" uid="uid://bpcyxdpog3w85" path="res://Assets/Textures/assault_icon.png" id="2_7sdlw"] + +[node name="HotWheel" type="HBoxContainer" node_paths=PackedStringArray("buttons")] +alignment = 1 +script = ExtResource("1_2sjpl") +buttons = [NodePath("Button4"), NodePath("Button5"), NodePath("Button"), NodePath("Button2"), NodePath("Button3")] + +[node name="Button4" type="Button" parent="."] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +size_flags_vertical = 8 +toggle_mode = true +icon = ExtResource("2_7sdlw") +icon_alignment = 1 +expand_icon = true + +[node name="Button5" type="Button" parent="."] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +size_flags_vertical = 8 +toggle_mode = true +icon = ExtResource("2_7sdlw") +icon_alignment = 1 +expand_icon = true + +[node name="Button" type="Button" parent="."] +custom_minimum_size = Vector2(48, 48) +layout_mode = 2 +toggle_mode = true +button_pressed = true +icon = ExtResource("2_7sdlw") +icon_alignment = 1 +expand_icon = true + +[node name="Button2" type="Button" parent="."] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +size_flags_vertical = 8 +toggle_mode = true +icon = ExtResource("2_7sdlw") +icon_alignment = 1 +expand_icon = true + +[node name="Button3" type="Button" parent="."] +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +size_flags_vertical = 8 +toggle_mode = true +icon = ExtResource("2_7sdlw") +icon_alignment = 1 +expand_icon = true diff --git a/Scenes/Menus/CharacterSelect/character_podium.gd b/UI/Menus/CharacterSelect/character_podium.gd similarity index 100% rename from Scenes/Menus/CharacterSelect/character_podium.gd rename to UI/Menus/CharacterSelect/character_podium.gd diff --git a/Scenes/Menus/CharacterSelect/character_podium.gd.uid b/UI/Menus/CharacterSelect/character_podium.gd.uid similarity index 100% rename from Scenes/Menus/CharacterSelect/character_podium.gd.uid rename to UI/Menus/CharacterSelect/character_podium.gd.uid diff --git a/Scenes/Menus/CharacterSelect/character_preview.gd b/UI/Menus/CharacterSelect/character_preview.gd similarity index 100% rename from Scenes/Menus/CharacterSelect/character_preview.gd rename to UI/Menus/CharacterSelect/character_preview.gd diff --git a/Scenes/Menus/CharacterSelect/character_preview.gd.uid b/UI/Menus/CharacterSelect/character_preview.gd.uid similarity index 100% rename from Scenes/Menus/CharacterSelect/character_preview.gd.uid rename to UI/Menus/CharacterSelect/character_preview.gd.uid diff --git a/Scenes/Menus/CharacterSelect/character_select.gd b/UI/Menus/CharacterSelect/character_select.gd similarity index 100% rename from Scenes/Menus/CharacterSelect/character_select.gd rename to UI/Menus/CharacterSelect/character_select.gd diff --git a/Scenes/Menus/CharacterSelect/character_select.gd.uid b/UI/Menus/CharacterSelect/character_select.gd.uid similarity index 100% rename from Scenes/Menus/CharacterSelect/character_select.gd.uid rename to UI/Menus/CharacterSelect/character_select.gd.uid diff --git a/Scenes/Menus/CharacterSelect/character_select.tscn b/UI/Menus/CharacterSelect/character_select.tscn similarity index 96% rename from Scenes/Menus/CharacterSelect/character_select.tscn rename to UI/Menus/CharacterSelect/character_select.tscn index 6d2d7e3..b0a34d8 100644 --- a/Scenes/Menus/CharacterSelect/character_select.tscn +++ b/UI/Menus/CharacterSelect/character_select.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=7 format=3 uid="uid://bc6m3cluulpis"] -[ext_resource type="Script" uid="uid://plrd0ckxrabh" path="res://Scenes/Menus/CharacterSelect/character_select.gd" id="1_lqqhx"] -[ext_resource type="Script" uid="uid://b1ucgfqilvr67" path="res://Scenes/Menus/CharacterSelect/character_preview.gd" id="9_8d0rx"] +[ext_resource type="Script" uid="uid://plrd0ckxrabh" path="res://UI/Menus/CharacterSelect/character_select.gd" id="1_lqqhx"] +[ext_resource type="Script" uid="uid://b1ucgfqilvr67" path="res://UI/Menus/CharacterSelect/character_preview.gd" id="9_8d0rx"] [ext_resource type="PackedScene" uid="uid://clabkhnbn75rf" path="res://UI/tower_label.tscn" id="10_jdigy"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_tlgw2"] diff --git a/UI/enemybox.gd b/UI/Menus/GameEndScreen/enemy_row.gd similarity index 100% rename from UI/enemybox.gd rename to UI/Menus/GameEndScreen/enemy_row.gd diff --git a/UI/enemybox.gd.uid b/UI/Menus/GameEndScreen/enemy_row.gd.uid similarity index 100% rename from UI/enemybox.gd.uid rename to UI/Menus/GameEndScreen/enemy_row.gd.uid diff --git a/UI/h_box_container.tscn b/UI/Menus/GameEndScreen/enemy_row.tscn similarity index 61% rename from UI/h_box_container.tscn rename to UI/Menus/GameEndScreen/enemy_row.tscn index c1000da..8335029 100644 --- a/UI/h_box_container.tscn +++ b/UI/Menus/GameEndScreen/enemy_row.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=2 format=3 uid="uid://b5hp43bm07b8a"] -[ext_resource type="Script" uid="uid://b0h5oewxd48lv" path="res://UI/enemybox.gd" id="1_lcu0c"] +[ext_resource type="Script" uid="uid://b0h5oewxd48lv" path="res://UI/Menus/GameEndScreen/enemy_row.gd" id="1_th4b3"] -[node name="HBoxContainer" type="HBoxContainer"] -script = ExtResource("1_lcu0c") +[node name="EnemyRow" type="HBoxContainer"] +script = ExtResource("1_th4b3") [node name="WaveLabel" type="Label" parent="."] layout_mode = 2 diff --git a/Scenes/Menus/GameEndScreen/game_end_screen.gd b/UI/Menus/GameEndScreen/game_end_screen.gd similarity index 96% rename from Scenes/Menus/GameEndScreen/game_end_screen.gd rename to UI/Menus/GameEndScreen/game_end_screen.gd index 74a688b..dfa757b 100644 --- a/Scenes/Menus/GameEndScreen/game_end_screen.gd +++ b/UI/Menus/GameEndScreen/game_end_screen.gd @@ -17,6 +17,11 @@ func _ready() -> void: total_games_label.text = str(Data.save_data.wins + Data.save_data.losses) total_wins_label.text = str(Data.save_data.wins) total_losses_label.text = str(Data.save_data.losses) + if game_manager: + set_wave() + + +func set_wave() -> void: for wave_key: int in game_manager.stats.enemies_undefeated: var spawned_box: EnemyBox = box.instantiate() as EnemyBox undefeated_enemies.add_child(spawned_box) diff --git a/Scenes/Menus/GameEndScreen/game_end_screen.gd.uid b/UI/Menus/GameEndScreen/game_end_screen.gd.uid similarity index 100% rename from Scenes/Menus/GameEndScreen/game_end_screen.gd.uid rename to UI/Menus/GameEndScreen/game_end_screen.gd.uid diff --git a/Scenes/Menus/GameEndScreen/game_end_screen.tscn b/UI/Menus/GameEndScreen/game_end_screen.tscn similarity index 96% rename from Scenes/Menus/GameEndScreen/game_end_screen.tscn rename to UI/Menus/GameEndScreen/game_end_screen.tscn index b987019..4d40671 100644 --- a/Scenes/Menus/GameEndScreen/game_end_screen.tscn +++ b/UI/Menus/GameEndScreen/game_end_screen.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=5 format=3 uid="uid://ce0m8vbjbng6o"] -[ext_resource type="Script" uid="uid://bdknvktw033g3" path="res://Scenes/Menus/GameEndScreen/game_end_screen.gd" id="1_oa7nq"] -[ext_resource type="PackedScene" uid="uid://b5hp43bm07b8a" path="res://UI/h_box_container.tscn" id="2_xm8em"] -[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="3_ro1yg"] +[ext_resource type="Script" uid="uid://bdknvktw033g3" path="res://UI/Menus/GameEndScreen/game_end_screen.gd" id="1_oa7nq"] +[ext_resource type="PackedScene" uid="uid://b5hp43bm07b8a" path="res://UI/Menus/GameEndScreen/enemy_row.tscn" id="2_xm8em"] +[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="3_ro1yg"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_dram5"] random_pitch = 1.1 diff --git a/Scenes/Menus/MainMenu/achievements_menu.gd b/UI/Menus/MainMenu/achievements_menu.gd similarity index 100% rename from Scenes/Menus/MainMenu/achievements_menu.gd rename to UI/Menus/MainMenu/achievements_menu.gd diff --git a/Scenes/Menus/MainMenu/achievements_menu.gd.uid b/UI/Menus/MainMenu/achievements_menu.gd.uid similarity index 100% rename from Scenes/Menus/MainMenu/achievements_menu.gd.uid rename to UI/Menus/MainMenu/achievements_menu.gd.uid diff --git a/Scenes/Menus/MainMenu/main_menu.gd b/UI/Menus/MainMenu/main_menu.gd similarity index 97% rename from Scenes/Menus/MainMenu/main_menu.gd rename to UI/Menus/MainMenu/main_menu.gd index 37a0f7f..915d6b1 100644 --- a/Scenes/Menus/MainMenu/main_menu.gd +++ b/UI/Menus/MainMenu/main_menu.gd @@ -16,7 +16,7 @@ var gamemode: GameMode = GameMode.new() var confirmation_popup_scene: PackedScene = preload("res://Scenes/Menus/confirmation_popup.tscn") var text_input_popup_scene: PackedScene = preload("res://Scenes/Menus/text_input_popup.tscn") var multiplayer_lobby_scene_path: String = "res://Scenes/multiplayer_lobby.tscn" -var options_menu_scene: PackedScene = preload("res://Scenes/Menus/options_menu.tscn") +var options_menu_scene: PackedScene = preload("res://UI/Menus/OptionsMenu/options_menu.tscn") var temp_data: SaveData @@ -58,7 +58,7 @@ func change_profile_display_name(display_name: String) -> void: func _on_quit_button_pressed() -> void: var popup: ConfirmationPopup = confirmation_popup_scene.instantiate() as ConfirmationPopup - popup.set_popup("Are you sure you want to quit?", "Yes", "No") + popup.set_popup("PROMPT_QUIT", "BUTTON_CONFIRM", "BUTTON_CANCEL") popup.completed.connect(quit_game) add_child(popup) diff --git a/Scenes/Menus/MainMenu/main_menu.gd.uid b/UI/Menus/MainMenu/main_menu.gd.uid similarity index 100% rename from Scenes/Menus/MainMenu/main_menu.gd.uid rename to UI/Menus/MainMenu/main_menu.gd.uid diff --git a/Scenes/Menus/MainMenu/main_menu.tscn b/UI/Menus/MainMenu/main_menu.tscn similarity index 98% rename from Scenes/Menus/MainMenu/main_menu.tscn rename to UI/Menus/MainMenu/main_menu.tscn index 1593a60..b10e4e1 100644 --- a/Scenes/Menus/MainMenu/main_menu.tscn +++ b/UI/Menus/MainMenu/main_menu.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=12 format=3 uid="uid://8yv7excojcg0"] -[ext_resource type="Script" uid="uid://ci8vq73u23viy" path="res://Scenes/Menus/MainMenu/main_menu.gd" id="2_ivytu"] -[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="5_cwn2i"] +[ext_resource type="Script" uid="uid://ci8vq73u23viy" path="res://UI/Menus/MainMenu/main_menu.gd" id="2_ivytu"] +[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="5_cwn2i"] [ext_resource type="Texture2D" uid="uid://cr1ucbuw3iotp" path="res://Assets/Textures/first_win_achievements.png" id="15_74epv"] -[ext_resource type="Script" uid="uid://cjr0pbqisd51v" path="res://Scenes/Menus/MainMenu/achievements_menu.gd" id="15_sv1gy"] +[ext_resource type="Script" uid="uid://cjr0pbqisd51v" path="res://UI/Menus/MainMenu/achievements_menu.gd" id="15_sv1gy"] [ext_resource type="Texture2D" uid="uid://cpa1hl36xfplg" path="res://Assets/Textures/first_scroll_seen.png" id="16_sv1gy"] [ext_resource type="Texture2D" uid="uid://ctbi3gm1me1t5" path="res://Assets/Textures/unlock_mage_achievement.png" id="17_6t4jd"] [ext_resource type="Script" uid="uid://cxrm2naq75jo1" path="res://Scripts/mod_menu.gd" id="19_6t4jd"] @@ -25,7 +25,7 @@ region = Rect2(0, 0, 36, 36) atlas = ExtResource("17_6t4jd") region = Rect2(0, 0, 36, 36) -[node name="MainMenu" type="Control" node_paths=PackedStringArray("bg_level", "game_select_menu", "main_controls", "seed_entry", "profile_controls", "mods_controls")] +[node name="MainMenu" type="Control" node_paths=PackedStringArray("game_select_menu", "main_controls", "seed_entry", "profile_controls", "mods_controls")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -33,7 +33,6 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("2_ivytu") -bg_level = NodePath("") game_select_menu = NodePath("GameSelectMenu") main_controls = NodePath("MainControls") seed_entry = NodePath("GameSelectMenu/VBoxContainer/HBoxContainer2/LineEdit") diff --git a/price_panel.gd b/UI/Menus/MixingMenu/price_panel.gd similarity index 100% rename from price_panel.gd rename to UI/Menus/MixingMenu/price_panel.gd diff --git a/price_panel.gd.uid b/UI/Menus/MixingMenu/price_panel.gd.uid similarity index 100% rename from price_panel.gd.uid rename to UI/Menus/MixingMenu/price_panel.gd.uid diff --git a/price_panel.tscn b/UI/Menus/MixingMenu/price_panel.tscn similarity index 93% rename from price_panel.tscn rename to UI/Menus/MixingMenu/price_panel.tscn index daf854c..328c5e7 100644 --- a/price_panel.tscn +++ b/UI/Menus/MixingMenu/price_panel.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://dekexkjl37dvh"] -[ext_resource type="Script" uid="uid://bs73eocafngiu" path="res://price_panel.gd" id="1_sn84y"] +[ext_resource type="Script" uid="uid://bs73eocafngiu" path="res://UI/Menus/MixingMenu/price_panel.gd" id="1_sn84y"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_517dt"] bg_color = Color(0.2702219, 0.27022195, 0.27022177, 0.09019608) diff --git a/track_editor.gd b/UI/Menus/MixingMenu/track_editor.gd similarity index 100% rename from track_editor.gd rename to UI/Menus/MixingMenu/track_editor.gd diff --git a/track_editor.gd.uid b/UI/Menus/MixingMenu/track_editor.gd.uid similarity index 100% rename from track_editor.gd.uid rename to UI/Menus/MixingMenu/track_editor.gd.uid diff --git a/track_editor.tscn b/UI/Menus/MixingMenu/track_editor.tscn similarity index 82% rename from track_editor.tscn rename to UI/Menus/MixingMenu/track_editor.tscn index 8960094..e9cd821 100644 --- a/track_editor.tscn +++ b/UI/Menus/MixingMenu/track_editor.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=7 format=3 uid="uid://bajli4d3nqwll"] -[ext_resource type="PackedScene" uid="uid://c8xdsg6gtwvh3" path="res://feature_ui.tscn" id="1_y6tpq"] -[ext_resource type="Script" uid="uid://mrv5vrlxfc13" path="res://track_editor.gd" id="1_yrnbk"] -[ext_resource type="PackedScene" uid="uid://dekexkjl37dvh" path="res://price_panel.tscn" id="3_48m6c"] -[ext_resource type="PackedScene" uid="uid://cmlpmr78tmo6p" path="res://card_description_ui.tscn" id="3_q6wwl"] -[ext_resource type="Texture2D" uid="uid://cll2vlvf1h454" path="res://track_one_patch.png" id="4_dya4i"] -[ext_resource type="Texture2D" uid="uid://cvhkk22pxxuqj" path="res://track_two_patch.png" id="5_4gmyw"] +[ext_resource type="PackedScene" uid="uid://c8xdsg6gtwvh3" path="res://UI/FeatureUI/feature_ui.tscn" id="1_y6tpq"] +[ext_resource type="Script" uid="uid://mrv5vrlxfc13" path="res://UI/Menus/MixingMenu/track_editor.gd" id="1_yrnbk"] +[ext_resource type="PackedScene" uid="uid://dekexkjl37dvh" path="res://UI/Menus/MixingMenu/price_panel.tscn" id="3_48m6c"] +[ext_resource type="PackedScene" uid="uid://cmlpmr78tmo6p" path="res://UI/card_description_ui.tscn" id="3_q6wwl"] +[ext_resource type="Texture2D" uid="uid://cll2vlvf1h454" path="res://UI/Themes/Scale1/track_one_patch.png" id="4_dya4i"] +[ext_resource type="Texture2D" uid="uid://cvhkk22pxxuqj" path="res://UI/Themes/Scale1/track_two_patch.png" id="5_4gmyw"] [node name="TrackEditor" type="Control" node_paths=PackedStringArray("drag_feature", "sample_library", "tower_parts", "weapon_parts", "drop_down", "card_desc", "price_label", "money_label", "confirm_button", "switch_button")] layout_mode = 3 @@ -18,8 +18,8 @@ script = ExtResource("1_yrnbk") drag_feature = NodePath("FeatureUI") sample_library = NodePath("PanelContainer/VBoxContainer/InfoPanel/VBoxContainer2/SamplePanel/ScrollContainer/SampleLibrary") feature_scene = ExtResource("1_y6tpq") -tower_parts = NodePath("PanelContainer/VBoxContainer/Tracks/TowerTrack/MarginContainer/MarginContainer/TowerParts") -weapon_parts = NodePath("PanelContainer/VBoxContainer/Tracks/WeaponTrack/MarginContainer/MarginContainer/WeaponParts") +tower_parts = NodePath("PanelContainer/VBoxContainer/Tracks/HBoxContainer/TrackUIs/Tower/MarginContainer/TowerParts") +weapon_parts = NodePath("PanelContainer/VBoxContainer/Tracks/HBoxContainer/TrackUIs/Weapon/MarginContainer/WeaponParts") drop_down = NodePath("PanelContainer/VBoxContainer/Tracks/SourceCartridge/CassetteSelector/OptionButton") card_desc = NodePath("PanelContainer/VBoxContainer/InfoPanel/VBoxContainer/DescriptionVBox") price_panel_scene = ExtResource("3_48m6c") @@ -53,7 +53,6 @@ size_flags_vertical = 3 [node name="SourceCartridge" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks"] layout_mode = 2 -size_flags_vertical = 3 [node name="MarginContainer2" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/SourceCartridge"] layout_mode = 2 @@ -90,23 +89,38 @@ text = "Price: $0" horizontal_alignment = 1 vertical_alignment = 1 -[node name="TowerTrack" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks"] +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks"] layout_mode = 2 -size_flags_vertical = 3 -[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/Tracks/TowerTrack"] +[node name="Labels" type="VBoxContainer" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer"] +layout_mode = 2 + +[node name="Tower" type="Label" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer/Labels"] layout_mode = 2 size_flags_horizontal = 3 +size_flags_vertical = 7 text = "LABEL_TOWER_TRACK" horizontal_alignment = 1 vertical_alignment = 1 -[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/TowerTrack"] +[node name="Weapon" type="Label" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer/Labels"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 7 +text = "LABEL_WEAPON_TRACK" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="TrackUIs" type="VBoxContainer" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Tower" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer/TrackUIs"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 4.0 -[node name="NinePatchRect" type="NinePatchRect" parent="PanelContainer/VBoxContainer/Tracks/TowerTrack/MarginContainer"] +[node name="NinePatchRect" type="NinePatchRect" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer/TrackUIs/Tower"] layout_mode = 2 texture = ExtResource("5_4gmyw") patch_margin_left = 1 @@ -114,39 +128,24 @@ patch_margin_top = 1 patch_margin_right = 1 patch_margin_bottom = 1 -[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/TowerTrack/MarginContainer"] +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer/TrackUIs/Tower"] layout_mode = 2 theme_override_constants/margin_left = 4 theme_override_constants/margin_top = 4 theme_override_constants/margin_right = 4 theme_override_constants/margin_bottom = 4 -[node name="TowerParts" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks/TowerTrack/MarginContainer/MarginContainer"] +[node name="TowerParts" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer/TrackUIs/Tower/MarginContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks"] -layout_mode = 2 -theme_override_constants/margin_top = 10 - -[node name="WeaponTrack" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks"] -layout_mode = 2 -size_flags_vertical = 3 - -[node name="Label2" type="Label" parent="PanelContainer/VBoxContainer/Tracks/WeaponTrack"] -layout_mode = 2 -size_flags_horizontal = 3 -text = "LABEL_WEAPON_TRACK" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/WeaponTrack"] +[node name="Weapon" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer/TrackUIs"] layout_mode = 2 size_flags_horizontal = 3 size_flags_stretch_ratio = 4.0 -[node name="NinePatchRect" type="NinePatchRect" parent="PanelContainer/VBoxContainer/Tracks/WeaponTrack/MarginContainer"] +[node name="NinePatchRect" type="NinePatchRect" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer/TrackUIs/Weapon"] layout_mode = 2 texture = ExtResource("4_dya4i") patch_margin_left = 1 @@ -154,23 +153,18 @@ patch_margin_top = 1 patch_margin_right = 1 patch_margin_bottom = 1 -[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/WeaponTrack/MarginContainer"] +[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer/TrackUIs/Weapon"] layout_mode = 2 theme_override_constants/margin_left = 4 theme_override_constants/margin_top = 4 theme_override_constants/margin_right = 4 theme_override_constants/margin_bottom = 4 -[node name="WeaponParts" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks/WeaponTrack/MarginContainer/MarginContainer"] +[node name="WeaponParts" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Tracks/HBoxContainer/TrackUIs/Weapon/MarginContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 -size_flags_stretch_ratio = 0.1 - [node name="InfoPanel" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] layout_mode = 2 size_flags_vertical = 3 diff --git a/Scripts/audio_options.gd b/UI/Menus/OptionsMenu/audio_options.gd similarity index 100% rename from Scripts/audio_options.gd rename to UI/Menus/OptionsMenu/audio_options.gd diff --git a/Scripts/audio_options.gd.uid b/UI/Menus/OptionsMenu/audio_options.gd.uid similarity index 100% rename from Scripts/audio_options.gd.uid rename to UI/Menus/OptionsMenu/audio_options.gd.uid diff --git a/Scenes/Menus/audio_options.tscn b/UI/Menus/OptionsMenu/audio_options.tscn similarity index 98% rename from Scenes/Menus/audio_options.tscn rename to UI/Menus/OptionsMenu/audio_options.tscn index 2bbb9e5..e07aaf3 100644 --- a/Scenes/Menus/audio_options.tscn +++ b/UI/Menus/OptionsMenu/audio_options.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://bwc45ogto8thn"] -[ext_resource type="Script" uid="uid://c4ljvgrb81du6" path="res://Scripts/audio_options.gd" id="1_avc0j"] +[ext_resource type="Script" uid="uid://c4ljvgrb81du6" path="res://UI/Menus/OptionsMenu/audio_options.gd" id="1_avc0j"] [sub_resource type="ImageTexture" id="ImageTexture_hvvdd"] diff --git a/Scripts/gameplay_options.gd b/UI/Menus/OptionsMenu/gameplay_options.gd similarity index 100% rename from Scripts/gameplay_options.gd rename to UI/Menus/OptionsMenu/gameplay_options.gd diff --git a/Scripts/gameplay_options.gd.uid b/UI/Menus/OptionsMenu/gameplay_options.gd.uid similarity index 100% rename from Scripts/gameplay_options.gd.uid rename to UI/Menus/OptionsMenu/gameplay_options.gd.uid diff --git a/Scenes/Menus/gameplay_options.tscn b/UI/Menus/OptionsMenu/gameplay_options.tscn similarity index 98% rename from Scenes/Menus/gameplay_options.tscn rename to UI/Menus/OptionsMenu/gameplay_options.tscn index 8f676a2..cc6f711 100644 --- a/Scenes/Menus/gameplay_options.tscn +++ b/UI/Menus/OptionsMenu/gameplay_options.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://bjk7jf0bau5lv"] -[ext_resource type="Script" uid="uid://dtrjph756oq1f" path="res://Scripts/gameplay_options.gd" id="1_sy26f"] +[ext_resource type="Script" uid="uid://dtrjph756oq1f" path="res://UI/Menus/OptionsMenu/gameplay_options.gd" id="1_sy26f"] [sub_resource type="ImageTexture" id="ImageTexture_03x6q"] @@ -68,6 +68,7 @@ size_flags_horizontal = 3 [node name="CheckButton" type="CheckButton" parent="ToggleSprint/CenterContainer"] layout_mode = 2 size_flags_horizontal = 3 +flat = true [node name="InvertMouseY" type="HBoxContainer" parent="."] layout_mode = 2 @@ -86,6 +87,7 @@ size_flags_horizontal = 3 [node name="CheckButton" type="CheckButton" parent="InvertMouseY/CenterContainer"] layout_mode = 2 size_flags_horizontal = 3 +flat = true [node name="InvertMouseX" type="HBoxContainer" parent="."] layout_mode = 2 @@ -104,6 +106,7 @@ size_flags_horizontal = 3 [node name="CheckButton" type="CheckButton" parent="InvertMouseX/CenterContainer"] layout_mode = 2 size_flags_horizontal = 3 +flat = true [node name="FixedMinimap" type="HBoxContainer" parent="."] layout_mode = 2 @@ -121,6 +124,7 @@ size_flags_horizontal = 3 [node name="CheckButton" type="CheckButton" parent="FixedMinimap/CenterContainer"] layout_mode = 2 +flat = true [node name="FloatingDamageIndicators" type="HBoxContainer" parent="."] layout_mode = 2 diff --git a/Scripts/graphics_options.gd b/UI/Menus/OptionsMenu/graphics_options.gd similarity index 100% rename from Scripts/graphics_options.gd rename to UI/Menus/OptionsMenu/graphics_options.gd diff --git a/Scripts/graphics_options.gd.uid b/UI/Menus/OptionsMenu/graphics_options.gd.uid similarity index 100% rename from Scripts/graphics_options.gd.uid rename to UI/Menus/OptionsMenu/graphics_options.gd.uid diff --git a/Scenes/Menus/graphics_options.tscn b/UI/Menus/OptionsMenu/graphics_options.tscn similarity index 98% rename from Scenes/Menus/graphics_options.tscn rename to UI/Menus/OptionsMenu/graphics_options.tscn index e291b91..38099ec 100644 --- a/Scenes/Menus/graphics_options.tscn +++ b/UI/Menus/OptionsMenu/graphics_options.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://bmd4mawasoc11"] -[ext_resource type="Script" uid="uid://bpb5c5r1yi8um" path="res://Scripts/graphics_options.gd" id="1_85rh6"] +[ext_resource type="Script" uid="uid://bpb5c5r1yi8um" path="res://UI/Menus/OptionsMenu/graphics_options.gd" id="1_85rh6"] [sub_resource type="ImageTexture" id="ImageTexture_03x6q"] diff --git a/UI/KeybindEntry.gd b/UI/Menus/OptionsMenu/keybind_entry.gd similarity index 100% rename from UI/KeybindEntry.gd rename to UI/Menus/OptionsMenu/keybind_entry.gd diff --git a/UI/KeybindEntry.gd.uid b/UI/Menus/OptionsMenu/keybind_entry.gd.uid similarity index 100% rename from UI/KeybindEntry.gd.uid rename to UI/Menus/OptionsMenu/keybind_entry.gd.uid diff --git a/Scenes/UI/keybind_entry.tscn b/UI/Menus/OptionsMenu/keybind_entry.tscn similarity index 94% rename from Scenes/UI/keybind_entry.tscn rename to UI/Menus/OptionsMenu/keybind_entry.tscn index de0043f..ba65dcf 100644 --- a/Scenes/UI/keybind_entry.tscn +++ b/UI/Menus/OptionsMenu/keybind_entry.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://cb8irvp2y2p6g"] -[ext_resource type="Script" uid="uid://y2pxkfjn0wa2" path="res://UI/KeybindEntry.gd" id="1_it8q2"] +[ext_resource type="Script" uid="uid://y2pxkfjn0wa2" path="res://UI/Menus/OptionsMenu/keybind_entry.gd" id="1_it8q2"] [node name="KeybindEntry" type="HBoxContainer"] anchors_preset = 15 diff --git a/Scripts/keybind_options.gd b/UI/Menus/OptionsMenu/keybind_options.gd similarity index 91% rename from Scripts/keybind_options.gd rename to UI/Menus/OptionsMenu/keybind_options.gd index fd4f65c..2b8e037 100644 --- a/Scripts/keybind_options.gd +++ b/UI/Menus/OptionsMenu/keybind_options.gd @@ -1,8 +1,8 @@ extends VBoxContainer class_name KeybindsOptionsMenu -var keybind_entry_scene: PackedScene = load("res://Scenes/UI/keybind_entry.tscn") -var keybind_popup: PackedScene = load("res://Scenes/UI/keybind_popup.tscn") +@export var keybind_entry_scene: PackedScene +@export var keybind_popup: PackedScene var keybind_boxes: Array[KeybindEntry] = [] var key_event: InputEvent var selected_entry: KeybindEntry diff --git a/Scripts/keybind_options.gd.uid b/UI/Menus/OptionsMenu/keybind_options.gd.uid similarity index 100% rename from Scripts/keybind_options.gd.uid rename to UI/Menus/OptionsMenu/keybind_options.gd.uid diff --git a/Scenes/Menus/keybind_options.tscn b/UI/Menus/OptionsMenu/keybind_options.tscn similarity index 54% rename from Scenes/Menus/keybind_options.tscn rename to UI/Menus/OptionsMenu/keybind_options.tscn index 40fc756..09495b8 100644 --- a/Scenes/Menus/keybind_options.tscn +++ b/UI/Menus/OptionsMenu/keybind_options.tscn @@ -1,6 +1,8 @@ -[gd_scene load_steps=2 format=3 uid="uid://bf2nosqt5f82e"] +[gd_scene load_steps=4 format=3 uid="uid://bf2nosqt5f82e"] -[ext_resource type="Script" uid="uid://cxm67e833baex" path="res://Scripts/keybind_options.gd" id="1_oxg0p"] +[ext_resource type="Script" uid="uid://cxm67e833baex" path="res://UI/Menus/OptionsMenu/keybind_options.gd" id="1_oxg0p"] +[ext_resource type="PackedScene" uid="uid://cb8irvp2y2p6g" path="res://UI/Menus/OptionsMenu/keybind_entry.tscn" id="2_ayiik"] +[ext_resource type="PackedScene" uid="uid://clsdko6ttudu8" path="res://UI/Menus/OptionsMenu/keybind_popup.tscn" id="3_h1scm"] [node name="Keybinds" type="VBoxContainer"] anchors_preset = 15 @@ -9,6 +11,8 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_oxg0p") +keybind_entry_scene = ExtResource("2_ayiik") +keybind_popup = ExtResource("3_h1scm") [node name="HBoxContainer" type="HBoxContainer" parent="."] layout_mode = 2 diff --git a/UI/keybind_screen.gd b/UI/Menus/OptionsMenu/keybind_popup.gd similarity index 100% rename from UI/keybind_screen.gd rename to UI/Menus/OptionsMenu/keybind_popup.gd diff --git a/UI/keybind_screen.gd.uid b/UI/Menus/OptionsMenu/keybind_popup.gd.uid similarity index 100% rename from UI/keybind_screen.gd.uid rename to UI/Menus/OptionsMenu/keybind_popup.gd.uid diff --git a/Scenes/UI/keybind_popup.tscn b/UI/Menus/OptionsMenu/keybind_popup.tscn similarity index 89% rename from Scenes/UI/keybind_popup.tscn rename to UI/Menus/OptionsMenu/keybind_popup.tscn index 37b55c8..1e5eb2d 100644 --- a/Scenes/UI/keybind_popup.tscn +++ b/UI/Menus/OptionsMenu/keybind_popup.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=2 format=3 uid="uid://clsdko6ttudu8"] -[ext_resource type="Script" uid="uid://d25hjwjdwv35i" path="res://UI/keybind_screen.gd" id="1_m5i0b"] +[ext_resource type="Script" uid="uid://d25hjwjdwv35i" path="res://UI/Menus/OptionsMenu/keybind_popup.gd" id="1_m5i0b"] -[node name="Control" type="Control"] +[node name="KeybindPopup" type="Control"] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 diff --git a/Scripts/keymap_data.gd b/UI/Menus/OptionsMenu/keymap_data.gd similarity index 100% rename from Scripts/keymap_data.gd rename to UI/Menus/OptionsMenu/keymap_data.gd diff --git a/Scripts/keymap_data.gd.uid b/UI/Menus/OptionsMenu/keymap_data.gd.uid similarity index 100% rename from Scripts/keymap_data.gd.uid rename to UI/Menus/OptionsMenu/keymap_data.gd.uid diff --git a/Scripts/options_menu.gd b/UI/Menus/OptionsMenu/options_menu.gd similarity index 100% rename from Scripts/options_menu.gd rename to UI/Menus/OptionsMenu/options_menu.gd diff --git a/Scripts/options_menu.gd.uid b/UI/Menus/OptionsMenu/options_menu.gd.uid similarity index 100% rename from Scripts/options_menu.gd.uid rename to UI/Menus/OptionsMenu/options_menu.gd.uid diff --git a/Scenes/Menus/options_menu.tscn b/UI/Menus/OptionsMenu/options_menu.tscn similarity index 89% rename from Scenes/Menus/options_menu.tscn rename to UI/Menus/OptionsMenu/options_menu.tscn index 66b3bc9..207e4cd 100644 --- a/Scenes/Menus/options_menu.tscn +++ b/UI/Menus/OptionsMenu/options_menu.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=8 format=3 uid="uid://clulh7v8c7h85"] -[ext_resource type="Script" uid="uid://48rvmybi18wj" path="res://Scripts/options_menu.gd" id="1_bievw"] -[ext_resource type="PackedScene" uid="uid://bjk7jf0bau5lv" path="res://Scenes/Menus/gameplay_options.tscn" id="3_25wuw"] -[ext_resource type="PackedScene" uid="uid://bmd4mawasoc11" path="res://Scenes/Menus/graphics_options.tscn" id="4_ckcvq"] -[ext_resource type="PackedScene" uid="uid://bf2nosqt5f82e" path="res://Scenes/Menus/keybind_options.tscn" id="5_4k33c"] -[ext_resource type="PackedScene" uid="uid://bwc45ogto8thn" path="res://Scenes/Menus/audio_options.tscn" id="6_4vs8p"] -[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="6_hhyef"] +[ext_resource type="Script" uid="uid://48rvmybi18wj" path="res://UI/Menus/OptionsMenu/options_menu.gd" id="1_bievw"] +[ext_resource type="PackedScene" uid="uid://bjk7jf0bau5lv" path="res://UI/Menus/OptionsMenu/gameplay_options.tscn" id="3_25wuw"] +[ext_resource type="PackedScene" uid="uid://bmd4mawasoc11" path="res://UI/Menus/OptionsMenu/graphics_options.tscn" id="4_ckcvq"] +[ext_resource type="PackedScene" uid="uid://bf2nosqt5f82e" path="res://UI/Menus/OptionsMenu/keybind_options.tscn" id="5_4k33c"] +[ext_resource type="PackedScene" uid="uid://bwc45ogto8thn" path="res://UI/Menus/OptionsMenu/audio_options.tscn" id="6_4vs8p"] +[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="6_hhyef"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_5otwj"] random_pitch = 1.1 diff --git a/Scenes/Menus/PauseMenu/pause_menu.gd b/UI/Menus/PauseMenu/pause_menu.gd similarity index 93% rename from Scenes/Menus/PauseMenu/pause_menu.gd rename to UI/Menus/PauseMenu/pause_menu.gd index 3a5742f..9b8d964 100644 --- a/Scenes/Menus/PauseMenu/pause_menu.gd +++ b/UI/Menus/PauseMenu/pause_menu.gd @@ -4,7 +4,7 @@ signal closed signal quit_to_main_menu_pressed signal quit_to_desktop_pressed -var options_menu_scene: PackedScene = preload("res://Scenes/Menus/options_menu.tscn") +var options_menu_scene: PackedScene = preload("res://UI/Menus/OptionsMenu/options_menu.tscn") var confirmation_popup_scene: PackedScene = preload("res://Scenes/Menus/confirmation_popup.tscn") var game_manager: GameManager diff --git a/Scenes/Menus/PauseMenu/pause_menu.gd.uid b/UI/Menus/PauseMenu/pause_menu.gd.uid similarity index 100% rename from Scenes/Menus/PauseMenu/pause_menu.gd.uid rename to UI/Menus/PauseMenu/pause_menu.gd.uid diff --git a/Scenes/Menus/PauseMenu/pause_menu.tscn b/UI/Menus/PauseMenu/pause_menu.tscn similarity index 96% rename from Scenes/Menus/PauseMenu/pause_menu.tscn rename to UI/Menus/PauseMenu/pause_menu.tscn index d700b5d..27138db 100644 --- a/Scenes/Menus/PauseMenu/pause_menu.tscn +++ b/UI/Menus/PauseMenu/pause_menu.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=3 uid="uid://buvgdem68wtev"] -[ext_resource type="Script" uid="uid://cjyyepxaf4xl8" path="res://Scenes/Menus/PauseMenu/pause_menu.gd" id="2_4pn2l"] -[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="3_0bid7"] +[ext_resource type="Script" uid="uid://cjyyepxaf4xl8" path="res://UI/Menus/PauseMenu/pause_menu.gd" id="2_4pn2l"] +[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://UI/drop_003.ogg" id="3_0bid7"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_n6ixr"] random_pitch = 1.1 diff --git a/choose_card_screen.gd b/UI/Menus/RadioMenu/choose_card_screen.gd similarity index 100% rename from choose_card_screen.gd rename to UI/Menus/RadioMenu/choose_card_screen.gd diff --git a/choose_card_screen.gd.uid b/UI/Menus/RadioMenu/choose_card_screen.gd.uid similarity index 100% rename from choose_card_screen.gd.uid rename to UI/Menus/RadioMenu/choose_card_screen.gd.uid diff --git a/choose_card_screen.tscn b/UI/Menus/RadioMenu/choose_card_screen.tscn similarity index 96% rename from choose_card_screen.tscn rename to UI/Menus/RadioMenu/choose_card_screen.tscn index 427c398..57a0605 100644 --- a/choose_card_screen.tscn +++ b/UI/Menus/RadioMenu/choose_card_screen.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://bcvjgl0s1wp8y"] -[ext_resource type="Script" uid="uid://nc0df5y8tll7" path="res://choose_card_screen.gd" id="1_y4oar"] -[ext_resource type="PackedScene" uid="uid://cmlpmr78tmo6p" path="res://card_description_ui.tscn" id="2_3npvv"] +[ext_resource type="Script" uid="uid://nc0df5y8tll7" path="res://UI/Menus/RadioMenu/choose_card_screen.gd" id="1_y4oar"] +[ext_resource type="PackedScene" uid="uid://cmlpmr78tmo6p" path="res://UI/card_description_ui.tscn" id="2_3npvv"] [node name="ChooseCardScreen" type="Control" node_paths=PackedStringArray("choice_buttons", "card_desc", "card_name_label")] layout_mode = 3 diff --git a/health-Sheet.png b/UI/ShieldUI/health-Sheet.png similarity index 100% rename from health-Sheet.png rename to UI/ShieldUI/health-Sheet.png diff --git a/health-Sheet.png.import b/UI/ShieldUI/health-Sheet.png.import similarity index 76% rename from health-Sheet.png.import rename to UI/ShieldUI/health-Sheet.png.import index 5f41c57..c688382 100644 --- a/health-Sheet.png.import +++ b/UI/ShieldUI/health-Sheet.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://d0yfidlyfyxff" -path="res://.godot/imported/health-Sheet.png-3a0a09780bb7aea652e77e269f0d8b32.ctex" +path="res://.godot/imported/health-Sheet.png-0fdb3ca3bd7269341e0271c38f6c9352.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://health-Sheet.png" -dest_files=["res://.godot/imported/health-Sheet.png-3a0a09780bb7aea652e77e269f0d8b32.ctex"] +source_file="res://UI/ShieldUI/health-Sheet.png" +dest_files=["res://.godot/imported/health-Sheet.png-0fdb3ca3bd7269341e0271c38f6c9352.ctex"] [params] diff --git a/health_border.png b/UI/ShieldUI/health_border.png similarity index 100% rename from health_border.png rename to UI/ShieldUI/health_border.png diff --git a/health_border.png.import b/UI/ShieldUI/health_border.png.import similarity index 76% rename from health_border.png.import rename to UI/ShieldUI/health_border.png.import index f9a7ef1..b824826 100644 --- a/health_border.png.import +++ b/UI/ShieldUI/health_border.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bv3alwpq8esky" -path="res://.godot/imported/health_border.png-138c86d63678f02e052053b45bae13ec.ctex" +path="res://.godot/imported/health_border.png-99006dff11f73b4b2477bea9384c83e2.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://health_border.png" -dest_files=["res://.godot/imported/health_border.png-138c86d63678f02e052053b45bae13ec.ctex"] +source_file="res://UI/ShieldUI/health_border.png" +dest_files=["res://.godot/imported/health_border.png-99006dff11f73b4b2477bea9384c83e2.ctex"] [params] diff --git a/health_hit-Sheet.png b/UI/ShieldUI/health_hit-Sheet.png similarity index 100% rename from health_hit-Sheet.png rename to UI/ShieldUI/health_hit-Sheet.png diff --git a/health_hit-Sheet.png.import b/UI/ShieldUI/health_hit-Sheet.png.import similarity index 75% rename from health_hit-Sheet.png.import rename to UI/ShieldUI/health_hit-Sheet.png.import index 17ac0bc..3584172 100644 --- a/health_hit-Sheet.png.import +++ b/UI/ShieldUI/health_hit-Sheet.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bifqfvhsu4c2f" -path="res://.godot/imported/health_hit-Sheet.png-cf8e317c6327f19733eb29b3a217e682.ctex" +path="res://.godot/imported/health_hit-Sheet.png-dc664b62759c22b42d5c36a63bd92934.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://health_hit-Sheet.png" -dest_files=["res://.godot/imported/health_hit-Sheet.png-cf8e317c6327f19733eb29b3a217e682.ctex"] +source_file="res://UI/ShieldUI/health_hit-Sheet.png" +dest_files=["res://.godot/imported/health_hit-Sheet.png-dc664b62759c22b42d5c36a63bd92934.ctex"] [params] diff --git a/ShieldUI.gd b/UI/ShieldUI/shield_ui.gd similarity index 100% rename from ShieldUI.gd rename to UI/ShieldUI/shield_ui.gd diff --git a/ShieldUI.gd.uid b/UI/ShieldUI/shield_ui.gd.uid similarity index 100% rename from ShieldUI.gd.uid rename to UI/ShieldUI/shield_ui.gd.uid diff --git a/shield_ui.tscn b/UI/ShieldUI/shield_ui.tscn similarity index 96% rename from shield_ui.tscn rename to UI/ShieldUI/shield_ui.tscn index ff1f676..9cbc53a 100644 --- a/shield_ui.tscn +++ b/UI/ShieldUI/shield_ui.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=22 format=3 uid="uid://cqslp83lf0ku0"] -[ext_resource type="Script" uid="uid://kiivev1q63p0" path="res://ShieldUI.gd" id="1_aa64g"] -[ext_resource type="Texture2D" uid="uid://bv3alwpq8esky" path="res://health_border.png" id="2_lvnxo"] -[ext_resource type="Texture2D" uid="uid://d0yfidlyfyxff" path="res://health-Sheet.png" id="3_uoync"] -[ext_resource type="Texture2D" uid="uid://bifqfvhsu4c2f" path="res://health_hit-Sheet.png" id="4_yanml"] +[ext_resource type="Script" uid="uid://kiivev1q63p0" path="res://UI/ShieldUI/shield_ui.gd" id="1_aa64g"] +[ext_resource type="Texture2D" uid="uid://bv3alwpq8esky" path="res://UI/ShieldUI/health_border.png" id="2_lvnxo"] +[ext_resource type="Texture2D" uid="uid://d0yfidlyfyxff" path="res://UI/ShieldUI/health-Sheet.png" id="3_uoync"] +[ext_resource type="Texture2D" uid="uid://bifqfvhsu4c2f" path="res://UI/ShieldUI/health_hit-Sheet.png" id="4_yanml"] [sub_resource type="AtlasTexture" id="AtlasTexture_5gv4u"] atlas = ExtResource("3_uoync") diff --git a/UI/Themes/Scale1/button_disabled.tres b/UI/Themes/Scale1/button_disabled.tres new file mode 100644 index 0000000..ce892b4 --- /dev/null +++ b/UI/Themes/Scale1/button_disabled.tres @@ -0,0 +1,18 @@ +[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://doxcjij1w2ot7"] + +[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_ychim"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_amp6b"] +atlas = ExtResource("1_ychim") +region = Rect2(0, 10, 9, 9) + +[resource] +texture = SubResource("AtlasTexture_amp6b") +texture_margin_left = 3.0 +texture_margin_top = 3.0 +texture_margin_right = 3.0 +texture_margin_bottom = 3.0 +expand_margin_left = 2.0 +expand_margin_top = 1.0 +expand_margin_right = 1.0 +expand_margin_bottom = 1.0 diff --git a/UI/Themes/Scale1/button_focus.tres b/UI/Themes/Scale1/button_focus.tres new file mode 100644 index 0000000..3662cfc --- /dev/null +++ b/UI/Themes/Scale1/button_focus.tres @@ -0,0 +1,18 @@ +[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://buu2yn08s4wc7"] + +[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_axkac"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_xobyj"] +atlas = ExtResource("1_axkac") +region = Rect2(10, 10, 9, 9) + +[resource] +texture = SubResource("AtlasTexture_xobyj") +texture_margin_left = 3.0 +texture_margin_top = 3.0 +texture_margin_right = 3.0 +texture_margin_bottom = 3.0 +expand_margin_left = 2.0 +expand_margin_top = 1.0 +expand_margin_right = 1.0 +expand_margin_bottom = 1.0 diff --git a/UI/Themes/Scale1/button_hover.tres b/UI/Themes/Scale1/button_hover.tres new file mode 100644 index 0000000..56c2a86 --- /dev/null +++ b/UI/Themes/Scale1/button_hover.tres @@ -0,0 +1,18 @@ +[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://srk2hghxkb70"] + +[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_x020y"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_kt4jn"] +atlas = ExtResource("1_x020y") +region = Rect2(10, 0, 9, 9) + +[resource] +texture = SubResource("AtlasTexture_kt4jn") +texture_margin_left = 3.0 +texture_margin_top = 3.0 +texture_margin_right = 3.0 +texture_margin_bottom = 3.0 +expand_margin_left = 2.0 +expand_margin_top = 1.0 +expand_margin_right = 1.0 +expand_margin_bottom = 1.0 diff --git a/UI/Themes/Scale1/button_normal.tres b/UI/Themes/Scale1/button_normal.tres new file mode 100644 index 0000000..4695aa9 --- /dev/null +++ b/UI/Themes/Scale1/button_normal.tres @@ -0,0 +1,18 @@ +[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://esvjdvqih123"] + +[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_rwyhh"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_s7nl3"] +atlas = ExtResource("1_rwyhh") +region = Rect2(0, 0, 9, 9) + +[resource] +texture = SubResource("AtlasTexture_s7nl3") +texture_margin_left = 3.0 +texture_margin_top = 3.0 +texture_margin_right = 3.0 +texture_margin_bottom = 3.0 +expand_margin_left = 2.0 +expand_margin_top = 1.0 +expand_margin_right = 1.0 +expand_margin_bottom = 1.0 diff --git a/UI/Themes/Scale1/button_pressed.tres b/UI/Themes/Scale1/button_pressed.tres new file mode 100644 index 0000000..0b6922f --- /dev/null +++ b/UI/Themes/Scale1/button_pressed.tres @@ -0,0 +1,18 @@ +[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://bfqarik7bi544"] + +[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_u0q6f"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_a57sn"] +atlas = ExtResource("1_u0q6f") +region = Rect2(20, 0, 9, 9) + +[resource] +texture = SubResource("AtlasTexture_a57sn") +texture_margin_left = 3.0 +texture_margin_top = 3.0 +texture_margin_right = 3.0 +texture_margin_bottom = 3.0 +expand_margin_left = 2.0 +expand_margin_top = 1.0 +expand_margin_right = 1.0 +expand_margin_bottom = 1.0 diff --git a/UI/Themes/Scale1/grabber_area.tres b/UI/Themes/Scale1/grabber_area.tres new file mode 100644 index 0000000..cf201a5 --- /dev/null +++ b/UI/Themes/Scale1/grabber_area.tres @@ -0,0 +1,12 @@ +[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://bss3dp7k18rx0"] + +[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_ug2go"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_h3qir"] +atlas = ExtResource("1_ug2go") +region = Rect2(72, 4, 2, 2) + +[resource] +texture = SubResource("AtlasTexture_h3qir") +axis_stretch_horizontal = 1 +axis_stretch_vertical = 1 diff --git a/pane_style_box.tres b/UI/Themes/Scale1/pane_style_box.tres similarity index 85% rename from pane_style_box.tres rename to UI/Themes/Scale1/pane_style_box.tres index ecaa7d3..cece864 100644 --- a/pane_style_box.tres +++ b/UI/Themes/Scale1/pane_style_box.tres @@ -1,6 +1,6 @@ [gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://bfuea1sjymo8g"] -[ext_resource type="Texture2D" uid="uid://b0d2fesjkbawy" path="res://panel_patch.png" id="1_o1mxl"] +[ext_resource type="Texture2D" uid="uid://b0d2fesjkbawy" path="res://UI/Themes/Scale1/panel_patch.png" id="1_o1mxl"] [resource] texture = ExtResource("1_o1mxl") diff --git a/panel_patch.png b/UI/Themes/Scale1/panel_patch.png similarity index 100% rename from panel_patch.png rename to UI/Themes/Scale1/panel_patch.png diff --git a/panel_patch.png.import b/UI/Themes/Scale1/panel_patch.png.import similarity index 76% rename from panel_patch.png.import rename to UI/Themes/Scale1/panel_patch.png.import index c770cbb..a3e444e 100644 --- a/panel_patch.png.import +++ b/UI/Themes/Scale1/panel_patch.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b0d2fesjkbawy" -path="res://.godot/imported/panel_patch.png-0f7e0ebf0ef3857853777c0ea247f46f.ctex" +path="res://.godot/imported/panel_patch.png-3e1921fc1569bba0ed194febf3436a04.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://panel_patch.png" -dest_files=["res://.godot/imported/panel_patch.png-0f7e0ebf0ef3857853777c0ea247f46f.ctex"] +source_file="res://UI/Themes/Scale1/panel_patch.png" +dest_files=["res://.godot/imported/panel_patch.png-3e1921fc1569bba0ed194febf3436a04.ctex"] [params] diff --git a/UI/Themes/Scale1/psx_ui.tres b/UI/Themes/Scale1/psx_ui.tres new file mode 100644 index 0000000..8c8a0c6 --- /dev/null +++ b/UI/Themes/Scale1/psx_ui.tres @@ -0,0 +1,164 @@ +[gd_resource type="Theme" load_steps=36 format=3 uid="uid://jn4qqx5hxc5i"] + +[ext_resource type="StyleBox" uid="uid://doxcjij1w2ot7" path="res://UI/Themes/Scale1/button_disabled.tres" id="1_ts3pc"] +[ext_resource type="StyleBox" uid="uid://buu2yn08s4wc7" path="res://UI/Themes/Scale1/button_focus.tres" id="1_vnhdr"] +[ext_resource type="StyleBox" uid="uid://srk2hghxkb70" path="res://UI/Themes/Scale1/button_hover.tres" id="2_ts3pc"] +[ext_resource type="StyleBox" uid="uid://esvjdvqih123" path="res://UI/Themes/Scale1/button_normal.tres" id="3_43i8g"] +[ext_resource type="StyleBox" uid="uid://bfqarik7bi544" path="res://UI/Themes/Scale1/button_pressed.tres" id="4_845oj"] +[ext_resource type="FontFile" uid="uid://bqy8dm2o3piqm" path="res://Assets/Fonts/Quaver v1.0/quaver.ttf" id="5_o6p3e"] +[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="6_43i8g"] +[ext_resource type="StyleBox" uid="uid://bfuea1sjymo8g" path="res://UI/Themes/Scale1/pane_style_box.tres" id="6_w151p"] +[ext_resource type="StyleBox" uid="uid://jnnnhb3i2265" path="res://UI/Themes/Scale1/switch_side_b_style_box.tres" id="7_w8nmj"] +[ext_resource type="StyleBox" uid="uid://cm3wsvk3woory" path="res://UI/Themes/Scale1/switch_side_a_style_box.tres" id="8_8j1wx"] +[ext_resource type="StyleBox" uid="uid://bss3dp7k18rx0" path="res://UI/Themes/Scale1/grabber_area.tres" id="8_o6p3e"] +[ext_resource type="StyleBox" uid="uid://bpowvv8e13flg" path="res://UI/Themes/Scale1/slider.tres" id="9_w151p"] +[ext_resource type="StyleBox" uid="uid://8s0fgx46n145" path="res://UI/Themes/Scale1/scroll_grabber.tres" id="13_w151p"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_845oj"] +atlas = ExtResource("6_43i8g") +region = Rect2(30, 1, 15, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_o6p3e"] +atlas = ExtResource("6_43i8g") +region = Rect2(46, 1, 15, 8) + +[sub_resource type="FontVariation" id="FontVariation_b02pe"] +base_font = ExtResource("5_o6p3e") +baseline_offset = 0.15 + +[sub_resource type="AtlasTexture" id="AtlasTexture_w8nmj"] +atlas = ExtResource("6_43i8g") +region = Rect2(62, 1, 8, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_t2hcr"] +atlas = ExtResource("6_43i8g") +region = Rect2(79, 1, 8, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8j1wx"] +atlas = ExtResource("6_43i8g") +region = Rect2(62, 1, 8, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_w151p"] +atlas = ExtResource("6_43i8g") +region = Rect2(75, 4, 2, 2) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_t2hcr"] + +[sub_resource type="FontVariation" id="FontVariation_inyly"] +base_font = ExtResource("5_o6p3e") + +[sub_resource type="AtlasTexture" id="AtlasTexture_n5i54"] +atlas = ExtResource("6_43i8g") +region = Rect2(98, 4, 8, 5) + +[sub_resource type="AtlasTexture" id="AtlasTexture_08ul3"] +atlas = ExtResource("6_43i8g") +region = Rect2(98, 16, 8, 5) + +[sub_resource type="AtlasTexture" id="AtlasTexture_b5n6m"] +atlas = ExtResource("6_43i8g") +region = Rect2(98, 10, 8, 5) + +[sub_resource type="AtlasTexture" id="AtlasTexture_xqncf"] +atlas = ExtResource("6_43i8g") +region = Rect2(89, 1, 8, 5) + +[sub_resource type="AtlasTexture" id="AtlasTexture_nis8m"] +atlas = ExtResource("6_43i8g") +region = Rect2(89, 13, 8, 5) + +[sub_resource type="AtlasTexture" id="AtlasTexture_aggbr"] +atlas = ExtResource("6_43i8g") +region = Rect2(89, 7, 8, 5) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_o6p3e"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_w151p"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_w8nmj"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8j1wx"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ts3pc"] +content_margin_top = 2.0 + +[sub_resource type="AtlasTexture" id="AtlasTexture_okcqu"] +atlas = ExtResource("6_43i8g") +region = Rect2(62, 10, 8, 8) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_qa24s"] +texture = SubResource("AtlasTexture_okcqu") +texture_margin_left = 4.0 +texture_margin_top = 2.0 +texture_margin_right = 4.0 +texture_margin_bottom = 2.0 +region_rect = Rect2(0, 0, 8, 8) + +[resource] +Button/colors/font_color = Color(0.85490197, 0.8784314, 0.91764706, 1) +Button/colors/font_disabled_color = Color(0.85882354, 0.6431373, 0.3882353, 1) +Button/colors/font_hover_color = Color(1, 1, 1, 1) +Button/colors/font_outline_color = Color(0.023529412, 0.023529412, 0.03137255, 1) +Button/styles/disabled = ExtResource("1_ts3pc") +Button/styles/focus = ExtResource("1_vnhdr") +Button/styles/hover = ExtResource("2_ts3pc") +Button/styles/normal = ExtResource("3_43i8g") +Button/styles/pressed = ExtResource("4_845oj") +CheckButton/icons/checked = SubResource("AtlasTexture_845oj") +CheckButton/icons/unchecked = SubResource("AtlasTexture_o6p3e") +Control/constants/outline_size = 4 +Control/font_sizes/font_size = 8 +Control/fonts/font = SubResource("FontVariation_b02pe") +HSlider/icons/grabber = SubResource("AtlasTexture_w8nmj") +HSlider/icons/grabber_disabled = SubResource("AtlasTexture_t2hcr") +HSlider/icons/grabber_highlight = SubResource("AtlasTexture_8j1wx") +HSlider/icons/tick = SubResource("AtlasTexture_w151p") +HSlider/styles/grabber_area = ExtResource("8_o6p3e") +HSlider/styles/grabber_area_highlight = ExtResource("8_o6p3e") +HSlider/styles/slider = ExtResource("9_w151p") +InteractLabel/base_type = &"Label" +Label/font_sizes/font_size = 8 +Label/fonts/font = ExtResource("5_o6p3e") +LineEdit/styles/focus = ExtResource("1_vnhdr") +LineEdit/styles/normal = SubResource("StyleBoxEmpty_t2hcr") +PanelContainer/styles/panel = ExtResource("6_w151p") +PopupMenu/constants/outline_size = 4 +PopupMenu/font_sizes/font_size = 8 +PopupMenu/fonts/font = SubResource("FontVariation_inyly") +PopupMenu/styles/panel = ExtResource("6_w151p") +RichTextLabel/font_sizes/normal_font_size = 8 +RichTextLabel/fonts/normal_font = ExtResource("5_o6p3e") +SideCheckButton/base_type = &"Button" +SideCheckButton/colors/font_color = Color(0.8392157, 0.8392157, 0.8392157, 1) +SideCheckButton/colors/font_hover_color = Color(1, 1, 1, 1) +SideCheckButton/colors/font_hover_pressed_color = Color(1, 1, 1, 1) +SideCheckButton/colors/font_pressed_color = Color(0.8392157, 0.8392157, 0.8392157, 1) +SideCheckButton/styles/hover = ExtResource("7_w8nmj") +SideCheckButton/styles/hover_pressed = ExtResource("8_8j1wx") +SideCheckButton/styles/normal = ExtResource("7_w8nmj") +SideCheckButton/styles/pressed = ExtResource("8_8j1wx") +SpinBox/icons/down = SubResource("AtlasTexture_n5i54") +SpinBox/icons/down_disabled = SubResource("AtlasTexture_08ul3") +SpinBox/icons/down_hover = SubResource("AtlasTexture_b5n6m") +SpinBox/icons/up = SubResource("AtlasTexture_xqncf") +SpinBox/icons/up_disabled = SubResource("AtlasTexture_nis8m") +SpinBox/icons/up_hover = SubResource("AtlasTexture_aggbr") +SpinBox/styles/down_background_hovered = SubResource("StyleBoxEmpty_o6p3e") +SpinBox/styles/down_background_pressed = SubResource("StyleBoxEmpty_w151p") +SpinBox/styles/up_background_hovered = SubResource("StyleBoxEmpty_w8nmj") +SpinBox/styles/up_background_pressed = SubResource("StyleBoxEmpty_8j1wx") +StartWaveLabel/base_type = &"Label" +TabContainer/constants/tab_separation = 6 +TabContainer/styles/panel = SubResource("StyleBoxEmpty_ts3pc") +TabContainer/styles/tab_disabled = ExtResource("1_ts3pc") +TabContainer/styles/tab_focus = ExtResource("1_vnhdr") +TabContainer/styles/tab_hovered = ExtResource("2_ts3pc") +TabContainer/styles/tab_selected = ExtResource("4_845oj") +TabContainer/styles/tab_unselected = ExtResource("3_43i8g") +VScrollBar/styles/grabber = ExtResource("13_w151p") +VScrollBar/styles/grabber_highlight = ExtResource("13_w151p") +VScrollBar/styles/grabber_pressed = ExtResource("13_w151p") +VScrollBar/styles/scroll = SubResource("StyleBoxTexture_qa24s") +VersionLabel/base_type = &"Label" +VersionLabel/colors/font_color = Color(0.85, 0.85, 0.85, 0.7) +VersionLabel/font_sizes/font_size = 8 diff --git a/UI/Themes/Scale1/scroll_grabber.tres b/UI/Themes/Scale1/scroll_grabber.tres new file mode 100644 index 0000000..19ea065 --- /dev/null +++ b/UI/Themes/Scale1/scroll_grabber.tres @@ -0,0 +1,15 @@ +[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://8s0fgx46n145"] + +[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_pfcbc"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_noue1"] +atlas = ExtResource("1_pfcbc") +region = Rect2(62, 1, 8, 8) + +[resource] +texture = SubResource("AtlasTexture_noue1") +texture_margin_top = 2.0 +texture_margin_bottom = 2.0 +expand_margin_top = 2.0 +expand_margin_bottom = 2.0 +region_rect = Rect2(0, 0, 8, 8) diff --git a/sidea_patch.png b/UI/Themes/Scale1/sidea_patch.png similarity index 100% rename from sidea_patch.png rename to UI/Themes/Scale1/sidea_patch.png diff --git a/sidea_patch.png.import b/UI/Themes/Scale1/sidea_patch.png.import similarity index 76% rename from sidea_patch.png.import rename to UI/Themes/Scale1/sidea_patch.png.import index 0bbfde4..5271057 100644 --- a/sidea_patch.png.import +++ b/UI/Themes/Scale1/sidea_patch.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cp3yr2676jkjx" -path="res://.godot/imported/sidea_patch.png-6cae89542c56b09a27871bf910466490.ctex" +path="res://.godot/imported/sidea_patch.png-e6077b21c815d458b1ba03ab43740b9a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://sidea_patch.png" -dest_files=["res://.godot/imported/sidea_patch.png-6cae89542c56b09a27871bf910466490.ctex"] +source_file="res://UI/Themes/Scale1/sidea_patch.png" +dest_files=["res://.godot/imported/sidea_patch.png-e6077b21c815d458b1ba03ab43740b9a.ctex"] [params] diff --git a/sideb_patch.png b/UI/Themes/Scale1/sideb_patch.png similarity index 100% rename from sideb_patch.png rename to UI/Themes/Scale1/sideb_patch.png diff --git a/sideb_patch.png.import b/UI/Themes/Scale1/sideb_patch.png.import similarity index 76% rename from sideb_patch.png.import rename to UI/Themes/Scale1/sideb_patch.png.import index 42116dc..1119915 100644 --- a/sideb_patch.png.import +++ b/UI/Themes/Scale1/sideb_patch.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bm3a5gkj0spil" -path="res://.godot/imported/sideb_patch.png-c386755922b23d48adc52790a1e6ca6d.ctex" +path="res://.godot/imported/sideb_patch.png-b275a8e31a250f45a054c6126dd65805.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://sideb_patch.png" -dest_files=["res://.godot/imported/sideb_patch.png-c386755922b23d48adc52790a1e6ca6d.ctex"] +source_file="res://UI/Themes/Scale1/sideb_patch.png" +dest_files=["res://.godot/imported/sideb_patch.png-b275a8e31a250f45a054c6126dd65805.ctex"] [params] diff --git a/UI/Themes/Scale1/slider.tres b/UI/Themes/Scale1/slider.tres new file mode 100644 index 0000000..9c7fd8b --- /dev/null +++ b/UI/Themes/Scale1/slider.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxTexture" load_steps=3 format=3 uid="uid://bpowvv8e13flg"] + +[ext_resource type="Texture2D" uid="uid://b5h32okh8yu6f" path="res://ui_atlas.png" id="1_85syk"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_uj2su"] +atlas = ExtResource("1_85syk") +region = Rect2(75, 4, 2, 2) + +[resource] +content_margin_top = 2.0 +texture = SubResource("AtlasTexture_uj2su") +axis_stretch_horizontal = 1 +axis_stretch_vertical = 1 diff --git a/switch_side_a_style_box.tres b/UI/Themes/Scale1/switch_side_a_style_box.tres similarity index 85% rename from switch_side_a_style_box.tres rename to UI/Themes/Scale1/switch_side_a_style_box.tres index aaf05cd..02e901e 100644 --- a/switch_side_a_style_box.tres +++ b/UI/Themes/Scale1/switch_side_a_style_box.tres @@ -1,6 +1,6 @@ [gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://cm3wsvk3woory"] -[ext_resource type="Texture2D" uid="uid://cp3yr2676jkjx" path="res://sidea_patch.png" id="1_bunl1"] +[ext_resource type="Texture2D" uid="uid://cp3yr2676jkjx" path="res://UI/Themes/Scale1/sidea_patch.png" id="1_bunl1"] [resource] texture = ExtResource("1_bunl1") diff --git a/switch_side_b_style_box.tres b/UI/Themes/Scale1/switch_side_b_style_box.tres similarity index 85% rename from switch_side_b_style_box.tres rename to UI/Themes/Scale1/switch_side_b_style_box.tres index 68953c6..0487b7a 100644 --- a/switch_side_b_style_box.tres +++ b/UI/Themes/Scale1/switch_side_b_style_box.tres @@ -1,6 +1,6 @@ [gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://jnnnhb3i2265"] -[ext_resource type="Texture2D" uid="uid://bm3a5gkj0spil" path="res://sideb_patch.png" id="1_f68ef"] +[ext_resource type="Texture2D" uid="uid://bm3a5gkj0spil" path="res://UI/Themes/Scale1/sideb_patch.png" id="1_f68ef"] [resource] texture = ExtResource("1_f68ef") diff --git a/track_one_patch.png b/UI/Themes/Scale1/track_one_patch.png similarity index 100% rename from track_one_patch.png rename to UI/Themes/Scale1/track_one_patch.png diff --git a/track_one_patch.png.import b/UI/Themes/Scale1/track_one_patch.png.import similarity index 75% rename from track_one_patch.png.import rename to UI/Themes/Scale1/track_one_patch.png.import index 831a2ce..92a3d35 100644 --- a/track_one_patch.png.import +++ b/UI/Themes/Scale1/track_one_patch.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cll2vlvf1h454" -path="res://.godot/imported/track_one_patch.png-5a380010e299cd637294c2754d938c6c.ctex" +path="res://.godot/imported/track_one_patch.png-b8b8fabc6c975ecd3842921215124194.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://track_one_patch.png" -dest_files=["res://.godot/imported/track_one_patch.png-5a380010e299cd637294c2754d938c6c.ctex"] +source_file="res://UI/Themes/Scale1/track_one_patch.png" +dest_files=["res://.godot/imported/track_one_patch.png-b8b8fabc6c975ecd3842921215124194.ctex"] [params] diff --git a/track_two_patch.png b/UI/Themes/Scale1/track_two_patch.png similarity index 100% rename from track_two_patch.png rename to UI/Themes/Scale1/track_two_patch.png diff --git a/track_two_patch.png.import b/UI/Themes/Scale1/track_two_patch.png.import similarity index 75% rename from track_two_patch.png.import rename to UI/Themes/Scale1/track_two_patch.png.import index 41bf975..1077519 100644 --- a/track_two_patch.png.import +++ b/UI/Themes/Scale1/track_two_patch.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cvhkk22pxxuqj" -path="res://.godot/imported/track_two_patch.png-c2aa8b915c0063c9cb99d93fc0c36ee4.ctex" +path="res://.godot/imported/track_two_patch.png-506cead7a321a46145eb40a2aef81093.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://track_two_patch.png" -dest_files=["res://.godot/imported/track_two_patch.png-c2aa8b915c0063c9cb99d93fc0c36ee4.ctex"] +source_file="res://UI/Themes/Scale1/track_two_patch.png" +dest_files=["res://.godot/imported/track_two_patch.png-506cead7a321a46145eb40a2aef81093.ctex"] [params] diff --git a/card_description_ui.gd b/UI/card_description_ui.gd similarity index 100% rename from card_description_ui.gd rename to UI/card_description_ui.gd diff --git a/card_description_ui.gd.uid b/UI/card_description_ui.gd.uid similarity index 100% rename from card_description_ui.gd.uid rename to UI/card_description_ui.gd.uid diff --git a/card_description_ui.tscn b/UI/card_description_ui.tscn similarity index 94% rename from card_description_ui.tscn rename to UI/card_description_ui.tscn index 9bb7ac7..c4480fe 100644 --- a/card_description_ui.tscn +++ b/UI/card_description_ui.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://cmlpmr78tmo6p"] -[ext_resource type="Script" uid="uid://dipne6u86gxth" path="res://card_description_ui.gd" id="1_bxjpl"] -[ext_resource type="PackedScene" uid="uid://c8xdsg6gtwvh3" path="res://feature_ui.tscn" id="2_hr2hd"] +[ext_resource type="Script" uid="uid://dipne6u86gxth" path="res://UI/card_description_ui.gd" id="1_bxjpl"] +[ext_resource type="PackedScene" uid="uid://c8xdsg6gtwvh3" path="res://UI/FeatureUI/feature_ui.tscn" id="2_hr2hd"] [node name="DescriptionVBox" type="VBoxContainer" node_paths=PackedStringArray("card_name_label", "card_description_label", "feature_list", "target_list")] size_flags_horizontal = 3 diff --git a/Scenes/UI/card_hand.tscn b/UI/card_hand.tscn similarity index 100% rename from Scenes/UI/card_hand.tscn rename to UI/card_hand.tscn diff --git a/Scenes/UI/chatbox.tscn b/UI/chatbox.tscn similarity index 92% rename from Scenes/UI/chatbox.tscn rename to UI/chatbox.tscn index 2b66d92..e2b13f6 100644 --- a/Scenes/UI/chatbox.tscn +++ b/UI/chatbox.tscn @@ -20,11 +20,12 @@ text_panel = NodePath("VBoxContainer/PanelContainer") fade_timer = NodePath("Timer") [node name="VBoxContainer" type="VBoxContainer" parent="."] -layout_mode = 2 -offset_left = 40.0 -offset_top = 100.0 -offset_right = 375.0 -offset_bottom = 300.0 +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 mouse_filter = 2 alignment = 2 @@ -36,6 +37,7 @@ theme_override_styles/panel = SubResource("StyleBoxFlat_c3kb6") [node name="RichTextLabel" type="RichTextLabel" parent="VBoxContainer/PanelContainer"] modulate = Color(1, 1, 1, 0) +clip_contents = false layout_mode = 2 size_flags_vertical = 3 mouse_filter = 2 diff --git a/Scenes/UI/drop_003.ogg b/UI/drop_003.ogg similarity index 100% rename from Scenes/UI/drop_003.ogg rename to UI/drop_003.ogg diff --git a/UI/drop_003.ogg.import b/UI/drop_003.ogg.import new file mode 100644 index 0000000..2688b52 --- /dev/null +++ b/UI/drop_003.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://cp6ph4ra7u5rk" +path="res://.godot/imported/drop_003.ogg-17680daa1fe8d8f6b4fc58b6f660917c.oggvorbisstr" + +[deps] + +source_file="res://UI/drop_003.ogg" +dest_files=["res://.godot/imported/drop_003.ogg-17680daa1fe8d8f6b4fc58b6f660917c.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/Scenes/UI/hero_card.tscn b/UI/hero_card.tscn similarity index 100% rename from Scenes/UI/hero_card.tscn rename to UI/hero_card.tscn diff --git a/Scenes/UI/lifebar_segment.tscn b/UI/lifebar_segment.tscn similarity index 100% rename from Scenes/UI/lifebar_segment.tscn rename to UI/lifebar_segment.tscn diff --git a/Scenes/UI/lives_bar.tscn b/UI/lives_bar.tscn similarity index 98% rename from Scenes/UI/lives_bar.tscn rename to UI/lives_bar.tscn index 4fd7533..a145012 100644 --- a/Scenes/UI/lives_bar.tscn +++ b/UI/lives_bar.tscn @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://dvy2lvtotaxb3" path="res://Assets/Textures/lifebar_bg.png" id="1_x27cx"] [ext_resource type="Script" uid="uid://b3g3hofk5pbcp" path="res://Scripts/lives_bar.gd" id="2_lqe7s"] -[ext_resource type="PackedScene" uid="uid://dko38egcaxubd" path="res://Scenes/UI/lifebar_segment.tscn" id="3_6hp86"] +[ext_resource type="PackedScene" uid="uid://dko38egcaxubd" path="res://UI/lifebar_segment.tscn" id="3_6hp86"] [node name="LivesBar" type="TextureRect" node_paths=PackedStringArray("segments")] texture_filter = 1 diff --git a/Scenes/UI/pickup_notification.tscn b/UI/pickup_notification.tscn similarity index 68% rename from Scenes/UI/pickup_notification.tscn rename to UI/pickup_notification.tscn index 3986397..6ab6104 100644 --- a/Scenes/UI/pickup_notification.tscn +++ b/UI/pickup_notification.tscn @@ -1,23 +1,10 @@ -[gd_scene load_steps=3 format=3 uid="uid://chnj376d3lcjd"] +[gd_scene load_steps=2 format=3 uid="uid://chnj376d3lcjd"] [ext_resource type="Script" uid="uid://b6vynawytkd0k" path="res://Scripts/pickup_notification.gd" id="1_cgy5u"] -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cdnv4"] -resource_local_to_scene = true -content_margin_left = 7.0 -content_margin_top = 3.0 -content_margin_right = 7.0 -content_margin_bottom = 3.0 -bg_color = Color(0.717647, 0.0941176, 0.392157, 0.784314) -corner_radius_top_left = 15 -corner_radius_top_right = 15 -corner_radius_bottom_right = 15 -corner_radius_bottom_left = 2 - [node name="PanelContainer" type="PanelContainer"] script = ExtResource("1_cgy5u") fade_out_time = 2.0 -style = SubResource("StyleBoxFlat_cdnv4") text_style = Color(0, 0, 0, 0.862745) common_background = Color(1, 1, 1, 0.784314) uncommon_background = Color(0.196078, 0.8, 0.141176, 0.784314) diff --git a/UI/psx_ui.tres b/UI/psx_ui.tres deleted file mode 100644 index 7feebad..0000000 --- a/UI/psx_ui.tres +++ /dev/null @@ -1,50 +0,0 @@ -[gd_resource type="Theme" load_steps=9 format=3 uid="uid://jn4qqx5hxc5i"] - -[ext_resource type="StyleBox" uid="uid://bgxt37xw4tma6" path="res://button_style_box_normal.tres" id="1_b02pe"] -[ext_resource type="FontFile" uid="uid://bqy8dm2o3piqm" path="res://Assets/Fonts/Quaver v1.0/quaver.ttf" id="1_u5gny"] -[ext_resource type="StyleBox" uid="uid://bfuea1sjymo8g" path="res://pane_style_box.tres" id="3_inyly"] -[ext_resource type="StyleBox" uid="uid://cm3wsvk3woory" path="res://switch_side_a_style_box.tres" id="4_u1sfq"] -[ext_resource type="StyleBox" uid="uid://jnnnhb3i2265" path="res://switch_side_b_style_box.tres" id="5_78ak8"] - -[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_u1sfq"] - -[sub_resource type="FontVariation" id="FontVariation_b02pe"] -base_font = ExtResource("1_u5gny") -baseline_offset = 0.15 - -[sub_resource type="FontVariation" id="FontVariation_inyly"] -base_font = ExtResource("1_u5gny") - -[resource] -Button/colors/font_color = Color(0.8388973, 0.838897, 0.838897, 1) -Button/colors/font_hover_color = Color(0.95, 0.95, 0.95, 1) -Button/styles/focus = SubResource("StyleBoxEmpty_u1sfq") -Button/styles/hover = ExtResource("1_b02pe") -Button/styles/normal = ExtResource("1_b02pe") -Control/constants/outline_size = 4 -Control/font_sizes/font_size = 8 -Control/fonts/font = SubResource("FontVariation_b02pe") -InteractLabel/base_type = &"Label" -Label/font_sizes/font_size = 8 -Label/fonts/font = ExtResource("1_u5gny") -LineEdit/font_sizes/font_size = 8 -LineEdit/fonts/font = ExtResource("1_u5gny") -PanelContainer/styles/panel = ExtResource("3_inyly") -PopupMenu/constants/outline_size = 4 -PopupMenu/font_sizes/font_size = 8 -PopupMenu/fonts/font = SubResource("FontVariation_inyly") -RichTextLabel/font_sizes/normal_font_size = 8 -RichTextLabel/fonts/normal_font = ExtResource("1_u5gny") -SideCheckButton/base_type = &"Button" -SideCheckButton/colors/font_color = Color(0.8392157, 0.8392157, 0.8392157, 1) -SideCheckButton/colors/font_hover_color = Color(1, 1, 1, 1) -SideCheckButton/colors/font_hover_pressed_color = Color(1, 1, 1, 1) -SideCheckButton/colors/font_pressed_color = Color(0.8392157, 0.8392157, 0.8392157, 1) -SideCheckButton/styles/hover = ExtResource("5_78ak8") -SideCheckButton/styles/hover_pressed = ExtResource("4_u1sfq") -SideCheckButton/styles/normal = ExtResource("5_78ak8") -SideCheckButton/styles/pressed = ExtResource("4_u1sfq") -StartWaveLabel/base_type = &"Label" -VersionLabel/base_type = &"Label" -VersionLabel/colors/font_color = Color(0.85, 0.85, 0.85, 0.7) -VersionLabel/font_sizes/font_size = 8 diff --git a/Scenes/UI/scoreboard.tscn b/UI/scoreboard.tscn similarity index 94% rename from Scenes/UI/scoreboard.tscn rename to UI/scoreboard.tscn index f9cb538..2841b27 100644 --- a/Scenes/UI/scoreboard.tscn +++ b/UI/scoreboard.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://dpt3kpixawyby"] [ext_resource type="Script" uid="uid://k0jvsnqw4766" path="res://Scripts/scoreboard.gd" id="1_b5vdp"] -[ext_resource type="PackedScene" uid="uid://bhri8mqjbme2t" path="res://Scenes/UI/scoreboard_entry.tscn" id="2_uer0b"] +[ext_resource type="PackedScene" uid="uid://bhri8mqjbme2t" path="res://UI/scoreboard_entry.tscn" id="2_uer0b"] [node name="Scoreboard" type="PanelContainer"] anchors_preset = 8 diff --git a/Scenes/UI/scoreboard_entry.tscn b/UI/scoreboard_entry.tscn similarity index 100% rename from Scenes/UI/scoreboard_entry.tscn rename to UI/scoreboard_entry.tscn diff --git a/Scenes/status_icon.tscn b/UI/status_icon.tscn similarity index 100% rename from Scenes/status_icon.tscn rename to UI/status_icon.tscn diff --git a/Worlds/GreenPlanet/Enemies/air_enemy.tscn b/Worlds/GreenPlanet/Enemies/air_enemy.tscn index fa06744..955409d 100644 --- a/Worlds/GreenPlanet/Enemies/air_enemy.tscn +++ b/Worlds/GreenPlanet/Enemies/air_enemy.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://ejqql2660u6h" path="res://Worlds/GreenPlanet/Enemies/enemy_controller.gd" id="1_m83kr"] [ext_resource type="PackedScene" uid="uid://canrxnpxcugc2" path="res://Scenes/corpse.tscn" id="2_aed6c"] -[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://Scenes/health_bar.tscn" id="9_4xla1"] +[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://UI/EnemyHealthBar/health_bar.tscn" id="9_4xla1"] [ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="9_7hati"] [ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="9_7yfyh"] [ext_resource type="Script" uid="uid://d147vuqksqhis" path="res://Scripts/EnemyAI/beelining_controller.gd" id="9_cx8mv"] diff --git a/Worlds/GreenPlanet/Enemies/enemy_controller.gd b/Worlds/GreenPlanet/Enemies/enemy_controller.gd index c1173f7..f7a75b7 100644 --- a/Worlds/GreenPlanet/Enemies/enemy_controller.gd +++ b/Worlds/GreenPlanet/Enemies/enemy_controller.gd @@ -12,7 +12,7 @@ signal health_changed(health: int) #@export var sprite: Sprite3D @export var corpse_scene: PackedScene -var damage_particle_scene: PackedScene = preload("res://Scenes/damage_particle.tscn") +var damage_particle_scene: PackedScene = preload("res://UI/DamageParticle/damage_particle.tscn") var current_health: int var corpse_root: Node var movement_speed: float diff --git a/Worlds/GreenPlanet/Enemies/land_enemy.tscn b/Worlds/GreenPlanet/Enemies/land_enemy.tscn index fd2fab8..f5fdd97 100644 --- a/Worlds/GreenPlanet/Enemies/land_enemy.tscn +++ b/Worlds/GreenPlanet/Enemies/land_enemy.tscn @@ -7,7 +7,7 @@ [ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="7_5eo4w"] [ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="9_f8btv"] [ext_resource type="Script" uid="uid://b62xnsbki8axa" path="res://Scripts/EnemyAI/pathing_controller.gd" id="10_gljle"] -[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://Scenes/health_bar.tscn" id="10_or8n6"] +[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://UI/EnemyHealthBar/health_bar.tscn" id="10_or8n6"] [ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="10_txouh"] [ext_resource type="Script" uid="uid://cp77etg1m1hc2" path="res://Scripts/sprite_bobber.gd" id="12_2nmk0"] diff --git a/Worlds/GreenPlanet/Enemies/leaping_enemy.tscn b/Worlds/GreenPlanet/Enemies/leaping_enemy.tscn index c53bc45..f04cbcb 100644 --- a/Worlds/GreenPlanet/Enemies/leaping_enemy.tscn +++ b/Worlds/GreenPlanet/Enemies/leaping_enemy.tscn @@ -3,13 +3,13 @@ [ext_resource type="Script" uid="uid://ejqql2660u6h" path="res://Worlds/GreenPlanet/Enemies/enemy_controller.gd" id="1_joiuq"] [ext_resource type="PackedScene" uid="uid://canrxnpxcugc2" path="res://Scenes/corpse.tscn" id="2_ssgps"] [ext_resource type="Script" uid="uid://bamhci3kawuyt" path="res://Scripts/health.gd" id="3_dhcpw"] -[ext_resource type="PackedScene" uid="uid://cqtew0t8sttpm" path="res://Scenes/damage_particle.tscn" id="4_yref6"] +[ext_resource type="PackedScene" uid="uid://cqtew0t8sttpm" path="res://UI/DamageParticle/damage_particle.tscn" id="4_yref6"] [ext_resource type="PackedScene" uid="uid://ri8r03wqy80t" path="res://Scenes/8_direction_sprite.tscn" id="5_5u3uw"] [ext_resource type="Texture2D" uid="uid://cb66pspr16scy" path="res://Assets/Textures/leapfrog_2.png" id="6_joiuq"] [ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="7_72t32"] [ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="8_egpbw"] [ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="9_47ywr"] -[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://Scenes/health_bar.tscn" id="10_lce6w"] +[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://UI/EnemyHealthBar/health_bar.tscn" id="10_lce6w"] [ext_resource type="Script" uid="uid://cp77etg1m1hc2" path="res://Scripts/sprite_bobber.gd" id="12_g2knp"] [ext_resource type="Script" uid="uid://dqluvn05min37" path="res://Scripts/EnemyAI/leaping_controller.gd" id="12_joiuq"] diff --git a/Worlds/GreenPlanet/Levels/Bridge/bridge.tscn b/Worlds/GreenPlanet/Levels/Bridge/bridge.tscn index 6ead30d..9647d93 100644 --- a/Worlds/GreenPlanet/Levels/Bridge/bridge.tscn +++ b/Worlds/GreenPlanet/Levels/Bridge/bridge.tscn @@ -15,7 +15,7 @@ [ext_resource type="PackedScene" uid="uid://d3h3lmlf3hljl" path="res://Worlds/GreenPlanet/Decorations/bush.tscn" id="16_lhsvw"] [ext_resource type="PackedScene" uid="uid://7g3jev3v6d3l" path="res://Scenes/ShopStand/shop_stand.tscn" id="19_h6brl"] [ext_resource type="PackedScene" uid="uid://cmneu5o0m02l8" path="res://Worlds/GreenPlanet/Enemies/leaping_enemy.tscn" id="20_ttr7n"] -[ext_resource type="PackedScene" uid="uid://c6isprnkaliqr" path="res://remix_table.tscn" id="21_ks6qx"] +[ext_resource type="PackedScene" uid="uid://c6isprnkaliqr" path="res://Scenes/MixingTable/remix_table.tscn" id="21_ks6qx"] [ext_resource type="PackedScene" uid="uid://2vv6mrxiwibf" path="res://Scenes/FlowField/flow_field_tool_output.tscn" id="24_sbix1"] [ext_resource type="Script" uid="uid://cy6oj2hr8q8br" path="res://Scripts/killbox.gd" id="26_tuncf"] [ext_resource type="PackedScene" uid="uid://c2avjln5vmr0y" path="res://Scenes/Shredder/shredder.tscn" id="27_gppb4"] diff --git a/Worlds/TestingRange/Enemies/target_dummy.tscn b/Worlds/TestingRange/Enemies/target_dummy.tscn index 7238346..38def29 100644 --- a/Worlds/TestingRange/Enemies/target_dummy.tscn +++ b/Worlds/TestingRange/Enemies/target_dummy.tscn @@ -3,7 +3,7 @@ [ext_resource type="Script" uid="uid://du13pv0e5fah" path="res://Scripts/target_dummy.gd" id="1_f72ee"] [ext_resource type="Resource" uid="uid://bdkcwve6d35gl" path="res://Worlds/TestingRange/Enemies/dummy.tres" id="2_7pldl"] [ext_resource type="Script" uid="uid://bamhci3kawuyt" path="res://Scripts/health.gd" id="3_8hqew"] -[ext_resource type="PackedScene" uid="uid://cqtew0t8sttpm" path="res://Scenes/damage_particle.tscn" id="4_0ruff"] +[ext_resource type="PackedScene" uid="uid://cqtew0t8sttpm" path="res://UI/DamageParticle/damage_particle.tscn" id="4_0ruff"] [ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="4_yinjs"] [ext_resource type="PackedScene" uid="uid://ri8r03wqy80t" path="res://Scenes/8_direction_sprite.tscn" id="5_t0dpu"] [ext_resource type="Texture2D" uid="uid://brjk5pu0up85s" path="res://Assets/TextureAtlases/dummy.tres" id="6_agkvc"] diff --git a/blk-nx64-1x.png b/blk-nx64-1x.png deleted file mode 100644 index 6f730f65e37776398b874da5cf809c9e1eefc68e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmeAS@N?(olHy`uVBq!ia0y~yU~phyU|{56V_;y&%UvPPz`*ds)5S5Qf|2#$d9OnS z3Zz646+hmZ*{^4G zG-N)hvP;q8+T%G9qHA^?{W{nC@@I{y(`MZF3Z5bqQ2y}M+*6CsPu%JF{NcRY56!<- zoLRWX*>2Ioby5KW8=fUh&t26kcFuc#pS+U%Oy_>h8A%g!)EcJ<{$b|I44=cQHC2*< Pfq}u()z4*}Q$iB}U-E`x diff --git a/blk-nx64-1x.png.import b/blk-nx64-1x.png.import deleted file mode 100644 index aa96049..0000000 --- a/blk-nx64-1x.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bpo5fu2a26mr7" -path="res://.godot/imported/blk-nx64-1x.png-073bb5194bda50a3dbca3434c8427284.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://blk-nx64-1x.png" -dest_files=["res://.godot/imported/blk-nx64-1x.png-073bb5194bda50a3dbca3434c8427284.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/button_patch.png b/button_patch.png deleted file mode 100644 index b9124dfb46dd426ec35789ea0926cf83dc002e02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0y~yVBiE{4mJh`h6fYb1Q-|?7>k44ofy`glX=O&z+ms` z;us<^H8~|AAwi>L%fIst%wOKypE}Xu&&adkfJB^{jl`te=V}rYKtL(w6oW>Swahb* ioQ8>wjRh8r3_H&Amxaph+rz-Xz~JfX=d#Wzp$PyvqA6?u diff --git a/button_style_box_normal.tres b/button_style_box_normal.tres deleted file mode 100644 index 90fae39..0000000 --- a/button_style_box_normal.tres +++ /dev/null @@ -1,10 +0,0 @@ -[gd_resource type="StyleBoxTexture" load_steps=2 format=3 uid="uid://bgxt37xw4tma6"] - -[ext_resource type="Texture2D" uid="uid://broabvnrwp73t" path="res://button_patch.png" id="1_iolpp"] - -[resource] -texture = ExtResource("1_iolpp") -texture_margin_left = 4.0 -texture_margin_top = 4.0 -texture_margin_right = 4.0 -texture_margin_bottom = 4.0 diff --git a/card_model/3d_card.tscn b/card_model/3d_card.tscn index 3f2b8c4..bb17dea 100644 --- a/card_model/3d_card.tscn +++ b/card_model/3d_card.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://cr6hn1pbu35o1" path="res://card_model/3d_card.gd" id="1_o6jcx"] [ext_resource type="Shader" uid="uid://c5bffujq0l70k" path="res://Shaders/jitter.gdshader" id="2_o6jcx"] -[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="3_bnh6n"] +[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://UI/card_hand.tscn" id="3_bnh6n"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0gfbg"] resource_name = "Face" diff --git a/card_placing_tool.gd b/card_placing_tool.gd index 7ab5cfd..229964f 100644 --- a/card_placing_tool.gd +++ b/card_placing_tool.gd @@ -52,6 +52,8 @@ func place_card(tower_base: TowerBase) -> void: return remove_card(tower_base) hero.hand.remove_at(hero.hand.contents.find(card)) + hero.decrement_selected() + hero.hud.hot_wheel.update_cassettes(hero.get_wheel_cards()) tower_base.add_card(card, multiplayer.get_unique_id()) hero.place_card_audio.play() if hero.game_manager.card_gameplay: diff --git a/hot_wheel.gd b/hot_wheel.gd deleted file mode 100644 index ddea50f..0000000 --- a/hot_wheel.gd +++ /dev/null @@ -1,13 +0,0 @@ -class_name HotWheel -extends HBoxContainer - -var entries: Array[TextureRect] - - -func add_cassette(cassette: Card) -> void: - var tex: TextureRect = TextureRect.new() - tex.texture = cassette.icon - tex.expand_mode = TextureRect.EXPAND_IGNORE_SIZE - tex.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED - tex.custom_minimum_size = Vector2(32.0, 32.0) - add_child(tex) diff --git a/hot_wheel.tscn b/hot_wheel.tscn deleted file mode 100644 index 6482e5d..0000000 --- a/hot_wheel.tscn +++ /dev/null @@ -1,7 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://ga21hoa8fxmm"] - -[ext_resource type="Script" uid="uid://laoxiep4e5x0" path="res://hot_wheel.gd" id="1_2sjpl"] - -[node name="HotWheel" type="HBoxContainer"] -alignment = 1 -script = ExtResource("1_2sjpl") diff --git a/lost-century-1x.png b/lost-century-1x.png deleted file mode 100644 index 321bd10eba4f905c341ce9ca69d655dfd1705ce5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU|{56V_;yoUa1$)z`)?+>Eakt!N};yup m@v{s(*Pbxw8YnZUD@!t1UXs4r#B&B@A%mx@pUXO@geCw(4JzdT diff --git a/lost-century-1x.png.import b/lost-century-1x.png.import deleted file mode 100644 index 21d4b46..0000000 --- a/lost-century-1x.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://jy150d2odqk2" -path="res://.godot/imported/lost-century-1x.png-1c6cec7524286e83e291b7e7de05b077.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://lost-century-1x.png" -dest_files=["res://.godot/imported/lost-century-1x.png-1c6cec7524286e83e291b7e7de05b077.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/main.gd b/main.gd index 2df0b1a..c0f42d4 100644 --- a/main.gd +++ b/main.gd @@ -10,7 +10,7 @@ signal loaded_scene var game_manager: GameManager var loaded: bool = false var UILayer: CanvasLayer -var main_menu_scene_path: String = "res://Scenes/Menus/MainMenu/main_menu.tscn" +var main_menu_scene_path: String = "res://UI/Menus/MainMenu/main_menu.tscn" var multiplayer_lobby_scene_path: String = "res://Scenes/Menus/multiplayer_lobby.tscn" var singleplayer_lobby_scene_path: String = "res://Scenes/Menus/singleplayer_lobby.tscn" diff --git a/panel_tex.png b/panel_tex.png deleted file mode 100644 index c7a9bb86d4893253e0fdbdf8a0b3cec2bfc5e464..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmeAS@N?(olHy`uVBq!ia0y~yV02($VEDkn#=yW(sJl0tfq{XsILO_JVcj{ImkbQd zKAtX)Ar*7pUb7Ztaujhr*cxT-ao`}=0d}tsjSZy@EMFQJ>?E0wzT|tZYHnqEnS}ua zKD3*im-BD`oBKte!QX10KL6g^b;%qD^k>|cot|o*#eTqj&FimE&+-eL5OPrPW@yx5 zWZA?r${7uVVUrGK-Iu-o)hdhqKtWvtC`T|bF#LbQH|;gI;Ms56D?uWju6{1-oD!M< D*Wu_m diff --git a/project.godot b/project.godot index 49870f5..a7a7016 100644 --- a/project.godot +++ b/project.godot @@ -47,6 +47,8 @@ folder_colors={ "res://Scenes/": "yellow", "res://Scripts/": "red", "res://UI/Keybinding/": "green", +"res://UI/Menus/": "orange", +"res://UI/Themes/": "pink", "res://Worlds/": "teal" } diff --git a/remix_menu.gd b/remix_menu.gd deleted file mode 100644 index 32c88e9..0000000 --- a/remix_menu.gd +++ /dev/null @@ -1,75 +0,0 @@ -class_name RemixMenu -extends Control - -signal cards_remixed(cards_consumed: Array[Card], cards_created: Array[Card]) - -@export var card_ui_one: CardDescriptionUI -@export var card_ui_two: CardDescriptionUI -@export var option_button_one: OptionButton -@export var option_button_two: OptionButton - -var cards: Array[Card] - -var card_one: Card -var card_two: Card - -var temp_card_one: Card -var temp_card_two: Card - - -func add_option(card_options: Array[Card]) -> void: - cards = card_options - for card: Card in cards: - option_button_one.add_item(tr(card.display_name)) - option_button_two.add_item(tr(card.display_name)) - option_button_one.select(0) - set_card_one(0) - option_button_two.select(1) - set_card_two(1) - - -func set_cards(first_card: Card, second_card: Card) -> void: - card_one = first_card - card_two = second_card - - -func set_card_one(option: int) -> void: - card_one = cards[option] - card_ui_one.set_card(card_one, true) - - -func set_card_two(option: int) -> void: - card_two = cards[option] - card_ui_two.set_card(card_two, true) - - -func remix() -> void: - temp_card_one = card_one.duplicate(true) - temp_card_one.tower_stats = temp_card_one.tower_stats.duplicate_deep() - temp_card_one.weapon_stats = temp_card_one.weapon_stats.duplicate_deep() - for feature: Feature in card_two.tower_stats.features: - temp_card_one.tower_stats.features.append(feature) - for feature: Feature in card_two.weapon_stats.features: - temp_card_one.weapon_stats.features.append(feature) - - temp_card_two = card_two.duplicate(true) - temp_card_two.tower_stats = temp_card_two.tower_stats.duplicate_deep() - temp_card_two.weapon_stats = temp_card_two.weapon_stats.duplicate_deep() - for feature: Feature in card_one.tower_stats.features: - temp_card_two.tower_stats.features.append(feature) - for feature: Feature in card_one.weapon_stats.features: - temp_card_two.weapon_stats.features.append(feature) - - card_ui_one.set_card(temp_card_one, true) - card_ui_two.set_card(temp_card_two, true) - - -func _on_button_2_pressed() -> void: - var card_array_one: Array[Card] - var card_array_two: Array[Card] - card_array_one.append(card_one) - card_array_one.append(card_two) - card_array_two.append(temp_card_one) - card_array_two.append(temp_card_two) - cards_remixed.emit(card_array_one, card_array_two) - queue_free() diff --git a/remix_menu.gd.uid b/remix_menu.gd.uid deleted file mode 100644 index eaf6158..0000000 --- a/remix_menu.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ccnvchtd8tlaw diff --git a/remix_menu.tscn b/remix_menu.tscn deleted file mode 100644 index 924ec30..0000000 --- a/remix_menu.tscn +++ /dev/null @@ -1,81 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://cqdft7j5pwg4b"] - -[ext_resource type="Script" uid="uid://ccnvchtd8tlaw" path="res://remix_menu.gd" id="1_jyl8o"] -[ext_resource type="PackedScene" uid="uid://cmlpmr78tmo6p" path="res://card_description_ui.tscn" id="2_vjjvi"] - -[node name="Control" type="Control" node_paths=PackedStringArray("card_ui_one", "card_ui_two", "option_button_one", "option_button_two")] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("1_jyl8o") -card_ui_one = NodePath("PanelContainer/VBoxContainer/HBoxContainer/Card1") -card_ui_two = NodePath("PanelContainer/VBoxContainer/HBoxContainer/Card2") -option_button_one = NodePath("PanelContainer/VBoxContainer/HBoxContainer2/OptionButton") -option_button_two = NodePath("PanelContainer/VBoxContainer/HBoxContainer2/OptionButton2") - -[node name="PanelContainer" type="PanelContainer" parent="."] -layout_mode = 1 -anchors_preset = -1 -anchor_left = 0.03 -anchor_top = 0.03 -anchor_right = 0.97 -anchor_bottom = 0.97 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 1 -text = "TITLE_REMIX" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="HBoxContainer2" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] -layout_mode = 2 - -[node name="OptionButton" type="OptionButton" parent="PanelContainer/VBoxContainer/HBoxContainer2"] -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/HBoxContainer2"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_stretch_ratio = 2.0 - -[node name="OptionButton2" type="OptionButton" parent="PanelContainer/VBoxContainer/HBoxContainer2"] -layout_mode = 2 -size_flags_horizontal = 3 - -[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] -layout_mode = 2 -size_flags_vertical = 3 - -[node name="Card1" parent="PanelContainer/VBoxContainer/HBoxContainer" instance=ExtResource("2_vjjvi")] -layout_mode = 2 - -[node name="UI" type="VBoxContainer" parent="PanelContainer/VBoxContainer/HBoxContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_stretch_ratio = 2.0 - -[node name="Button" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer/UI"] -layout_mode = 2 -text = "BUTTON_SHOW_REMIX_RESULT" - -[node name="Button2" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer/UI"] -layout_mode = 2 -text = "BUTTON_CONFIRM_REMIX" - -[node name="Card2" parent="PanelContainer/VBoxContainer/HBoxContainer" instance=ExtResource("2_vjjvi")] -layout_mode = 2 - -[connection signal="item_selected" from="PanelContainer/VBoxContainer/HBoxContainer2/OptionButton" to="." method="set_card_one"] -[connection signal="item_selected" from="PanelContainer/VBoxContainer/HBoxContainer2/OptionButton2" to="." method="set_card_two"] -[connection signal="pressed" from="PanelContainer/VBoxContainer/HBoxContainer/UI/Button" to="." method="remix"] -[connection signal="pressed" from="PanelContainer/VBoxContainer/HBoxContainer/UI/Button2" to="." method="_on_button_2_pressed"] diff --git a/resurrect-64-1x.png b/resurrect-64-1x.png deleted file mode 100644 index d4934ae0e297fba47457388f4e3f8d4ae9f84539..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmeAS@N?(olHy`uVBq!ia0y~yU~phyU|{56V_;y&%UvPPz`*d|)5S5Qf|2#0tv+)h z!-0qKTlZFJUcbCMuG+o&*6XMB@79Gc&y;RAnW|^TE!gaur2I%&!iR14Nw*r7P7j|X zqlg;D$unA)sMz=~3grD?R4IFV)rCvO8A)C3zstFbn`TBl(4X@1niF4Z!h)X57ccvm zguKhMi_l6tVSfL|*S4M?TI%d<+rD{5cn1n`&C=dj_^U}X<&o*sqkde=g_7Ud7~Z`0 z^JB40_`V1~)tk4g+_e0RZ<|DX)zMKs{q3vvkIyQvBUc5^jJ^9*%Wlzv+e^-hX1IUZ zt(s?EZ4otl*VRQY)?6-cpELKp@CmiXiHmcjVq)wrN&i**kh3I%=j24s8)E;N4(V0K Uf7J6~U|?YIboFyt=akR{0L06N6#xJL diff --git a/resurrect-64-1x.png.import b/resurrect-64-1x.png.import deleted file mode 100644 index 0d1afb6..0000000 --- a/resurrect-64-1x.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cfbvrwy0x72e6" -path="res://.godot/imported/resurrect-64-1x.png-19790abf6f86dfef7c9c0ca4ad1888b4.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://resurrect-64-1x.png" -dest_files=["res://.godot/imported/resurrect-64-1x.png-19790abf6f86dfef7c9c0ca4ad1888b4.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/screencap.png b/screencap.png deleted file mode 100644 index 2d44a8dc1270e07a6431410a6e81bc8f5ce82e06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51661 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�bm`LG;9tQ9n>Sgc*tNv{KAZeJg5A$% z(F579X7)ed7v7%z_g#FWrvfm21_Rj7}&i_<#M}GvQA+z7)57Q@5LbTPi)a?Xnd6$BQ-k0eO2P zJnwfW7%2+yELwi%x>Cl@qu0!jT|2+m{&Y o-Q>zvi5dfc)6d)1yFnfT7`=u*85 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

xX#O!{o?YjU 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 y!;IN{ra>|`)fa*db9WcLE|;A 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

7H>9kv_4l( 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 Ofx*+&&t;ucLK6TYfThj= diff --git a/shield_ui_test.gd b/shield_ui_test.gd deleted file mode 100644 index 628850f..0000000 --- a/shield_ui_test.gd +++ /dev/null @@ -1,24 +0,0 @@ -extends Control - -@export var shield: ShieldUI -@export var lives_bar: LivesBar -@export var damage_label: Label - -var damage: int = 1 - -func increase_damage() -> void: - damage += 1 - damage_label.text = str(damage) - - -func decrease_damage() -> void: - damage -= 1 - if damage < 1: - damage = 1 - damage_label.text = str(damage) - - -func hit() -> void: - shield.take_damage(damage) - for x: int in damage: - lives_bar.take_life() diff --git a/shield_ui_test.gd.uid b/shield_ui_test.gd.uid deleted file mode 100644 index 38fcbe3..0000000 --- a/shield_ui_test.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://biuqlk7ulx83 diff --git a/shield_ui_test.tscn b/shield_ui_test.tscn deleted file mode 100644 index a4e7392..0000000 --- a/shield_ui_test.tscn +++ /dev/null @@ -1,61 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://3t3kdhagmayy"] - -[ext_resource type="Script" uid="uid://biuqlk7ulx83" path="res://shield_ui_test.gd" id="1_uywwg"] -[ext_resource type="PackedScene" uid="uid://cqslp83lf0ku0" path="res://shield_ui.tscn" id="2_iketu"] -[ext_resource type="PackedScene" uid="uid://24x18qxqhy0i" path="res://Scenes/UI/lives_bar.tscn" id="3_eamca"] - -[node name="Control" type="Control" node_paths=PackedStringArray("shield", "lives_bar", "damage_label")] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -script = ExtResource("1_uywwg") -shield = NodePath("ShieldUI") -lives_bar = NodePath("LivesBar") -damage_label = NodePath("Controls/Label") - -[node name="Controls" type="HBoxContainer" parent="."] -layout_mode = 0 -offset_left = 251.0 -offset_top = 13.0 -offset_right = 311.00003 -offset_bottom = 29.0 - -[node name="Label" type="Label" parent="Controls"] -layout_mode = 2 -text = "1" - -[node name="VBoxContainer" type="HBoxContainer" parent="Controls"] -layout_mode = 2 - -[node name="Button" type="Button" parent="Controls/VBoxContainer"] -layout_mode = 2 -text = "<" - -[node name="Button2" type="Button" parent="Controls/VBoxContainer"] -layout_mode = 2 -text = ">" - -[node name="Button" type="Button" parent="Controls"] -layout_mode = 2 -text = "hit" - -[node name="ShieldUI" parent="." instance=ExtResource("2_iketu")] -layout_mode = 0 -offset_left = 130.0 -offset_top = 31.0 -offset_right = 130.0 -offset_bottom = 31.0 - -[node name="LivesBar" parent="." instance=ExtResource("3_eamca")] -layout_mode = 1 -offset_left = 69.0 -offset_top = 115.0 -offset_right = 69.0 -offset_bottom = 115.0 - -[connection signal="pressed" from="Controls/VBoxContainer/Button" to="." method="decrease_damage"] -[connection signal="pressed" from="Controls/VBoxContainer/Button2" to="." method="increase_damage"] -[connection signal="pressed" from="Controls/Button" to="." method="hit"] diff --git a/test_ui.tscn b/test_ui.tscn index f06704d..11e7f2a 100644 --- a/test_ui.tscn +++ b/test_ui.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" uid="uid://cdrpqvf37mehj" path="res://test_ui.gd" id="1_3tn64"] [ext_resource type="PackedScene" uid="uid://dik1j1w8vrul5" path="res://drag_n_drop_container.tscn" id="1_w4nob"] -[ext_resource type="PackedScene" uid="uid://c8xdsg6gtwvh3" path="res://feature_ui.tscn" id="2_3tn64"] +[ext_resource type="PackedScene" uid="uid://c8xdsg6gtwvh3" path="res://UI/FeatureUI/feature_ui.tscn" id="2_3tn64"] [ext_resource type="Script" uid="uid://bsuinotkvh7eu" path="res://Scripts/Resources/feature.gd" id="2_w3nqu"] [ext_resource type="Resource" uid="uid://dfup264h2pun7" path="res://Scripts/Features/HeavyRounds/heavy_rounds_feature.tres" id="3_55qp5"] [ext_resource type="Resource" uid="uid://nh7g23b3rnvr" path="res://Scripts/Features/Radar/radar_feature.tres" id="4_mlaor"] diff --git a/ui_atlas.png b/ui_atlas.png new file mode 100644 index 0000000000000000000000000000000000000000..813ab808db491da9b0c2a78157688a89c88f66f4 GIT binary patch literal 923 zcmeAS@N?(olHy`uVBq!ia0y~yU|7Pyz%Y}8je&t-Vcw##Ms-L;BhmMIJRwM`jCjYB=aQ6gdh{=u};jT`>EctSqa1!z?A) zxx2S4vuu2FL@6^Uf~$3@$O%Ud)+6c;UUSkk-`Jjgd-hIur|j=<-&dEV&!4ILt$y?7 z;!u|(=JRW#+z-C}&A<9t#l2nU@BiNs@%{As{b5V91AMt7AAkGXUVPn`J6V}Gb^Z1E zk@qV;KKki0Bfji^%vqhocbhjFvPrK#YB=ln+-G*N1**0`KTW>we%#*v*Y+DPU$5nN zJ8qxzKWt5O?P_}~yC1KA9{C!#K0g26?-e)x?=G*Cvi|?!*X`0@3e|h-{{HyzGUDvR zUg@JB_x*a_-}%qo{rs`4b#b+8<5YBZ%Db$;e!g$wwP{(q@|Ie99G+pFza;U@T=Po? z&(4YSCc7MYe0cfd_F3G?E=Rty^LHix`*Ex~`S0z-o(>DEDzoovtnb*aC~y0{(K14M zYcAilr1Ty3hS}4atk2i(dUEQ`q`cLyclC9wShY%PZ{FpAcRb(Kk9jm-|KeLOkr`e6 zX5HB(+MB(9?4RYZ^kCNZrHr{*MY*T*L{5C0wQ);Z&U#7j>=WN+8E$Xe!?Q|Q@c6@% zXT#2B@A~`8@9D3nOj3n12kxx7#k&5B_HPk+Q(^wRgZ;BQ|IO^5)yj0?_1D+mva5SjS|CqHnhnbEY`m3=MTTvNzwn zYx5cL`|r8uBhO^SQQnw3DqYT))``Ljcr?VG$4pES+dX3D}qec*7U-s