From 66544c45001066fe13c085c69fd4c0c0bf81a7e8 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Sun, 16 Mar 2025 22:38:45 -0700 Subject: [PATCH 01/19] Reorganization and Enforcing Name conventions Reorganized scenes to have more reasonable structure, and pollute high level Scenes folder less Naming conventions: Folders and files should start capitalized For images or other non-script file types use underscore to separate a category/type and the asset name itself Name's themselves should not have underscores --- .../Note_PlayerBasic.png} | Bin .../Note_PlayerBasic.png.import} | 6 +- .../Note_PlayerDouble.png} | Bin .../Note_PlayerDouble.png.import} | 6 +- .../Note_PlayerHeal.png} | Bin .../Note_PlayerHeal.png.import} | 6 +- .../Note_PlayerQuarter.png} | Bin .../Note_PlayerQuarter.png.import} | 6 +- .../Note_PlayerVampire.png} | Bin .../Note_PlayerVampire.png.import} | 6 +- .../Relic_Auroboros.png} | Bin .../Relic_Auroboros.png.import} | 6 +- .../Relic_Colorboros.png} | Bin .../Relic_Colorboros.png.import} | 6 +- .../Relics/assets/relic_Breakfast.png.import | 6 +- .../Relics/assets/relic_GoodVibes.png.import | 6 +- Funk Engine.csproj | 4 +- Globals/BgAudioPlayer/BgAudioPlayer.cs | 2 +- {SaveData => Globals}/SaveSystem.cs | 0 Globals/Scribe.cs | 28 +++++----- Globals/StageProducer.cs | 12 ++-- Globals/Translations/translations.csv.import | 6 +- .../BattleDirector/Assets/NoteQueue_Frame.png | Bin .../Assets/NoteQueue_Frame.png.import | 6 +- .../BattleDirector/BattleScene.tscn | 28 +++++----- .../ChartViewport/HitParticles.tscn | 4 +- .../NoteManager/NoteArrow.tscn | 6 +- .../NoteManager/NoteManager.tscn | 10 ++-- .../Enemies/BossBlood/Assets/Boss1.png | Bin .../Enemies/BossBlood/Assets/Boss1.png.import | 6 +- .../BossBlood/Assets/Boss1EmissionShape.png | Bin .../Assets/Boss1EmissionShape.png.import | 6 +- .../UI/Assets/HowToPlay_Combo_Bar.png | Bin .../UI/Assets/HowToPlay_Combo_Bar.png.import | 6 +- .../UI/DisplayButton.tscn | 2 +- .../UI => Scenes/UI/Options}/HowToPlay.tscn | 17 +++--- .../UI}/Options/OptionsMenu.tscn | 4 +- .../UI/Options/Scripts}/HowToPlay.cs | 0 .../UI/Options/Scripts}/LanguageSelection.cs | 0 .../UI/Options/Scripts}/OptionsMenu.cs | 4 +- .../UI/Remapping/Assets}/A_Key_Light.png | Bin .../Remapping/Assets}/A_Key_Light.png.import | 6 +- .../Assets}/Arrow_Down_Key_Light.png | Bin .../Assets}/Arrow_Down_Key_Light.png.import | 6 +- .../Assets}/Arrow_Left_Key_Light.png | Bin .../Assets}/Arrow_Left_Key_Light.png.import | 6 +- .../Assets}/Arrow_Right_Key_Light.png | Bin .../Assets}/Arrow_Right_Key_Light.png.import | 6 +- .../Remapping/Assets}/Arrow_Up_Key_Light.png | Bin .../Assets}/Arrow_Up_Key_Light.png.import | 6 +- .../UI/Remapping/Assets}/D_Key_Light.png | Bin .../Remapping/Assets}/D_Key_Light.png.import | 6 +- .../UI/Remapping/Assets}/E_Key_Light.png | Bin .../Remapping/Assets}/E_Key_Light.png.import | 6 +- .../Assets}/Positional_Prompts_Down.png | Bin .../Positional_Prompts_Down.png.import | 6 +- .../Assets}/Positional_Prompts_Left.png | Bin .../Positional_Prompts_Left.png.import | 6 +- .../Assets}/Positional_Prompts_Right.png | Bin .../Positional_Prompts_Right.png.import | 6 +- .../Assets}/Positional_Prompts_Up.png | Bin .../Assets}/Positional_Prompts_Up.png.import | 6 +- .../UI/Remapping/Assets}/Q_Key_Light.png | Bin .../Remapping/Assets}/Q_Key_Light.png.import | 6 +- .../UI/Remapping/Assets}/R_Key_Light.png | Bin .../Remapping/Assets}/R_Key_Light.png.import | 6 +- .../UI/Remapping/Assets}/S_Key_Light.png | Bin .../Remapping/Assets}/S_Key_Light.png.import | 6 +- .../UI/Remapping/Assets}/T_Key_Light.png | Bin .../Remapping/Assets}/T_Key_Light.png.import | 6 +- .../UI/Remapping/Assets}/W_Key_Light.png | Bin .../Remapping/Assets}/W_Key_Light.png.import | 6 +- Scenes/UI/Remapping/ControlSchemes.cs | 52 ++++++++++++++++++ .../UI}/Remapping/ControlSettings.cs | 0 {scenes => Scenes/UI}/Remapping/Remap.tscn | 14 ++--- .../UI/TitleScreen/Assets/2D_Shadow_Map.webp | Bin .../Assets/2D_Shadow_Map.webp.import | 34 ++++++++++++ .../Assets/Background_BackTree.png | Bin .../Assets/Background_BackTree.png.import | 6 +- .../Assets/Background_FrontTree.png | Bin .../Assets/Background_FrontTree.png.import | 6 +- .../TitleScreen/Assets/Background_MidTree.png | Bin .../Assets/Background_MidTree.png.import | 6 +- .../UI/TitleScreen/Assets/Background_Moon.png | Bin .../Assets/Background_Moon.png.import | 6 +- .../UI/TitleScreen/Assets/Background_Sky.png | Bin .../Assets/Background_Sky.png.import | 6 +- .../UI/TitleScreen/Assets}/TitleFont.gdshader | 0 .../UI/TitleScreen/Assets/TitleScreenFont.TTF | Bin .../Assets/TitleScreenFont.TTF.import | 6 +- .../UI/TitleScreen/Assets/TitleSong.ogg | Bin .../TitleScreen/Assets/TitleSong.ogg.import | 19 +++++++ .../Assets/TransparentStars.gdshader | 0 .../UI/TitleScreen/SceneChange.tscn | 2 +- .../UI/TitleScreen/Scripts}/SceneChange.cs | 0 .../UI/TitleScreen/Scripts}/TitleScreen.cs | 2 +- .../UI/TitleScreen}/TitleScreen.tscn | 35 +++++------- .../BackGround_Full.png | Bin .../BackGround_Full.png.import | 6 +- .../assets => SharedAssets}/BattleFrame1.png | Bin .../BattleFrame1.png.import | 6 +- .../assets => SharedAssets}/Character1.png | Bin .../Character1.png.import | 6 +- SharedAssets/NoteArrow_Black_Outline.png | Bin 0 -> 60041 bytes .../NoteArrow_Black_Outline.png.import | 6 +- .../Maps/assets => SharedAssets}/Player.png | Bin .../assets => SharedAssets}/Player.png.import | 6 +- .../StarryNight.gdshader | 0 project.godot | 6 +- scenes/BattleDirector/NotePlacementBar.tscn | 8 +-- scenes/BattleDirector/notePoofParticles.tscn | 2 +- .../BattleDirector/scripts/BattleDirector.cs | 4 +- .../scripts/NoteQueueParticlesFactory.cs | 2 +- scenes/ChartViewport/ChartViewport.tscn | 10 ++-- scenes/ChartViewport/LoopMarker.png.import | 6 +- scenes/ChartViewport/scripts/ChartManager.cs | 2 +- scenes/ChestScene/ChestScene.cs | 2 +- scenes/ChestScene/ChestScene.tscn | 12 ++-- scenes/ChestScene/assets/Chest.png.import | 6 +- scenes/Maps/assets/BattleIcon.png.import | 6 +- scenes/Maps/assets/BossIcon.png.import | 6 +- scenes/Maps/assets/ChestIcon.png.import | 6 +- scenes/Maps/cartographer.tscn | 8 +-- scenes/Maps/scripts/Cartographer.cs | 8 +-- .../assets/arrow_outline.png.import | 6 +- .../NoteManager/assets/new_arrow.png.import | 6 +- scenes/NoteManager/assets/outline_white.png | Bin 607 -> 0 bytes scenes/Puppets/Enemies/BossBlood/Boss1.tscn | 10 ++-- .../BossBlood/assets/Enemy1.png.import | 34 ------------ scenes/Puppets/Enemies/EnemyPuppet.tscn | 4 +- .../Puppets/Enemies/Parasifly/Parasifly.tscn | 6 +- .../Parasifly/assets/Parasifly.png.import | 6 +- scenes/Puppets/Enemies/TheGWS/GWS.tscn | 6 +- .../TheGWS/assets/GhostWolfSnake.png.import | 6 +- scenes/Puppets/HealthBar.tscn | 2 +- scenes/Puppets/PlayerPuppet.tscn | 6 +- scenes/Remapping/ControlSchemes.cs | 52 ------------------ ...nd_shadows_neutral_point_light.webp.import | 34 ------------ .../assets/titleSong.ogg.import | 19 ------- scenes/UI/EndScreen.tscn | 2 +- scenes/UI/Pause.tscn | 2 +- scenes/UI/RewardSelectionUI.tscn | 2 +- scenes/UI/inventory.tscn | 2 +- scenes/UI/scripts/Inventory.cs | 4 +- scenes/UI/scripts/MenuModule.cs | 4 +- scenes/UI/scripts/PauseMenu.cs | 2 +- scenes/UI/scripts/RewardSelect.cs | 2 +- 147 files changed, 400 insertions(+), 436 deletions(-) rename Classes/Notes/{assets/single_note.png => Assets/Note_PlayerBasic.png} (100%) rename Classes/Notes/{assets/single_note.png.import => Assets/Note_PlayerBasic.png.import} (69%) rename Classes/Notes/{assets/double_note.png => Assets/Note_PlayerDouble.png} (100%) rename Classes/Notes/{assets/double_note.png.import => Assets/Note_PlayerDouble.png.import} (69%) rename Classes/Notes/{assets/heal_note.png => Assets/Note_PlayerHeal.png} (100%) rename Classes/Notes/{assets/heal_note.png.import => Assets/Note_PlayerHeal.png.import} (69%) rename Classes/Notes/{assets/quarter_note.png => Assets/Note_PlayerQuarter.png} (100%) rename Classes/Notes/{assets/quarter_note.png.import => Assets/Note_PlayerQuarter.png.import} (68%) rename Classes/Notes/{assets/vampire_note.png => Assets/Note_PlayerVampire.png} (100%) rename Classes/Notes/{assets/vampire_note.png.import => Assets/Note_PlayerVampire.png.import} (68%) rename Classes/Relics/{assets/Auroboros.png => Assets/Relic_Auroboros.png} (100%) rename Classes/Relics/{assets/Auroboros.png.import => Assets/Relic_Auroboros.png.import} (69%) rename Classes/Relics/{assets/Colorboros.png => Assets/Relic_Colorboros.png} (100%) rename Classes/Relics/{assets/Colorboros.png.import => Assets/Relic_Colorboros.png.import} (69%) rename {SaveData => Globals}/SaveSystem.cs (100%) rename scenes/BattleDirector/assets/temp_note_queue.png => Scenes/BattleDirector/Assets/NoteQueue_Frame.png (100%) rename scenes/BattleDirector/assets/temp_note_queue.png.import => Scenes/BattleDirector/Assets/NoteQueue_Frame.png.import (69%) rename scenes/BattleDirector/test_battle_scene.tscn => Scenes/BattleDirector/BattleScene.tscn (70%) rename scenes/ChartViewport/hit_particles.tscn => Scenes/ChartViewport/HitParticles.tscn (71%) rename scenes/NoteManager/note.tscn => Scenes/NoteManager/NoteArrow.tscn (75%) rename scenes/NoteManager/note_manager.tscn => Scenes/NoteManager/NoteManager.tscn (89%) rename scenes/BattleDirector/assets/Enemy1.png => Scenes/Puppets/Enemies/BossBlood/Assets/Boss1.png (100%) rename scenes/BattleDirector/assets/Enemy1.png.import => Scenes/Puppets/Enemies/BossBlood/Assets/Boss1.png.import (70%) rename scenes/Puppets/Enemies/BossBlood/assets/Enemy1EmissionShape.png => Scenes/Puppets/Enemies/BossBlood/Assets/Boss1EmissionShape.png (100%) rename scenes/Puppets/Enemies/BossBlood/assets/Enemy1EmissionShape.png.import => Scenes/Puppets/Enemies/BossBlood/Assets/Boss1EmissionShape.png.import (67%) rename scenes/UI/assets/combobar.png => Scenes/UI/Assets/HowToPlay_Combo_Bar.png (100%) rename scenes/UI/assets/combobar.png.import => Scenes/UI/Assets/HowToPlay_Combo_Bar.png.import (68%) rename scenes/UI/display_button.tscn => Scenes/UI/DisplayButton.tscn (80%) rename {scenes/UI => Scenes/UI/Options}/HowToPlay.tscn (90%) rename {scenes => Scenes/UI}/Options/OptionsMenu.tscn (95%) rename {scenes/UI/scripts => Scenes/UI/Options/Scripts}/HowToPlay.cs (100%) rename {scenes/Options/scripts => Scenes/UI/Options/Scripts}/LanguageSelection.cs (100%) rename {scenes/Options => Scenes/UI/Options/Scripts}/OptionsMenu.cs (95%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/A_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/A_Key_Light.png.import (70%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Arrow_Down_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Arrow_Down_Key_Light.png.import (67%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Arrow_Left_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Arrow_Left_Key_Light.png.import (67%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Arrow_Right_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Arrow_Right_Key_Light.png.import (67%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Arrow_Up_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Arrow_Up_Key_Light.png.import (68%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/D_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/D_Key_Light.png.import (70%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/E_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/E_Key_Light.png.import (70%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Positional_Prompts_Down.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Positional_Prompts_Down.png.import (74%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Positional_Prompts_Left.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Positional_Prompts_Left.png.import (67%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Positional_Prompts_Right.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Positional_Prompts_Right.png.import (74%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Positional_Prompts_Up.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Positional_Prompts_Up.png.import (67%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Q_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/Q_Key_Light.png.import (70%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/R_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/R_Key_Light.png.import (70%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/S_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/S_Key_Light.png.import (70%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/T_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/T_Key_Light.png.import (70%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/W_Key_Light.png (100%) rename {scenes/Remapping/assets => Scenes/UI/Remapping/Assets}/W_Key_Light.png.import (70%) create mode 100644 Scenes/UI/Remapping/ControlSchemes.cs rename {scenes => Scenes/UI}/Remapping/ControlSettings.cs (100%) rename {scenes => Scenes/UI}/Remapping/Remap.tscn (89%) rename scenes/SceneTransitions/assets/2d_lights_and_shadows_neutral_point_light.webp => Scenes/UI/TitleScreen/Assets/2D_Shadow_Map.webp (100%) create mode 100644 Scenes/UI/TitleScreen/Assets/2D_Shadow_Map.webp.import rename scenes/SceneTransitions/assets/backTree.png => Scenes/UI/TitleScreen/Assets/Background_BackTree.png (100%) rename scenes/SceneTransitions/assets/backTree.png.import => Scenes/UI/TitleScreen/Assets/Background_BackTree.png.import (67%) rename scenes/SceneTransitions/assets/frontTree.png => Scenes/UI/TitleScreen/Assets/Background_FrontTree.png (100%) rename scenes/SceneTransitions/assets/frontTree.png.import => Scenes/UI/TitleScreen/Assets/Background_FrontTree.png.import (67%) rename scenes/SceneTransitions/assets/midTree.png => Scenes/UI/TitleScreen/Assets/Background_MidTree.png (100%) rename scenes/SceneTransitions/assets/midTree.png.import => Scenes/UI/TitleScreen/Assets/Background_MidTree.png.import (68%) rename scenes/SceneTransitions/assets/moon.png => Scenes/UI/TitleScreen/Assets/Background_Moon.png (100%) rename scenes/SceneTransitions/assets/moon.png.import => Scenes/UI/TitleScreen/Assets/Background_Moon.png.import (68%) rename scenes/SceneTransitions/assets/background.png => Scenes/UI/TitleScreen/Assets/Background_Sky.png (100%) rename scenes/SceneTransitions/assets/background.png.import => Scenes/UI/TitleScreen/Assets/Background_Sky.png.import (69%) rename {scenes/SceneTransitions/assets => Scenes/UI/TitleScreen/Assets}/TitleFont.gdshader (100%) rename scenes/SceneTransitions/assets/font.TTF => Scenes/UI/TitleScreen/Assets/TitleScreenFont.TTF (100%) rename scenes/SceneTransitions/assets/font.TTF.import => Scenes/UI/TitleScreen/Assets/TitleScreenFont.TTF.import (69%) rename scenes/SceneTransitions/assets/titleSong.ogg => Scenes/UI/TitleScreen/Assets/TitleSong.ogg (100%) create mode 100644 Scenes/UI/TitleScreen/Assets/TitleSong.ogg.import rename scenes/SceneTransitions/assets/transparentStars.gdshader => Scenes/UI/TitleScreen/Assets/TransparentStars.gdshader (100%) rename scenes/SceneTransitions/testTransition.tscn => Scenes/UI/TitleScreen/SceneChange.tscn (86%) rename {scenes/SceneTransitions/scripts => Scenes/UI/TitleScreen/Scripts}/SceneChange.cs (100%) rename {scenes/SceneTransitions/scripts => Scenes/UI/TitleScreen/Scripts}/TitleScreen.cs (91%) rename {scenes/SceneTransitions => Scenes/UI/TitleScreen}/TitleScreen.tscn (85%) rename scenes/BattleDirector/assets/bgupdate.png => SharedAssets/BackGround_Full.png (100%) rename scenes/BattleDirector/assets/bgupdate.png.import => SharedAssets/BackGround_Full.png.import (70%) rename {scenes/BattleDirector/assets => SharedAssets}/BattleFrame1.png (100%) rename {scenes/BattleDirector/assets => SharedAssets}/BattleFrame1.png.import (69%) rename {scenes/BattleDirector/assets => SharedAssets}/Character1.png (100%) rename {scenes/BattleDirector/assets => SharedAssets}/Character1.png.import (70%) create mode 100644 SharedAssets/NoteArrow_Black_Outline.png rename scenes/NoteManager/assets/outline_white.png.import => SharedAssets/NoteArrow_Black_Outline.png.import (68%) rename {scenes/Maps/assets => SharedAssets}/Player.png (100%) rename {scenes/Maps/assets => SharedAssets}/Player.png.import (72%) rename {scenes/ChartViewport => SharedAssets}/StarryNight.gdshader (100%) delete mode 100644 scenes/NoteManager/assets/outline_white.png delete mode 100644 scenes/Puppets/Enemies/BossBlood/assets/Enemy1.png.import delete mode 100644 scenes/Remapping/ControlSchemes.cs delete mode 100644 scenes/SceneTransitions/assets/2d_lights_and_shadows_neutral_point_light.webp.import delete mode 100644 scenes/SceneTransitions/assets/titleSong.ogg.import diff --git a/Classes/Notes/assets/single_note.png b/Classes/Notes/Assets/Note_PlayerBasic.png similarity index 100% rename from Classes/Notes/assets/single_note.png rename to Classes/Notes/Assets/Note_PlayerBasic.png diff --git a/Classes/Notes/assets/single_note.png.import b/Classes/Notes/Assets/Note_PlayerBasic.png.import similarity index 69% rename from Classes/Notes/assets/single_note.png.import rename to Classes/Notes/Assets/Note_PlayerBasic.png.import index 63160ba7..11064758 100644 --- a/Classes/Notes/assets/single_note.png.import +++ b/Classes/Notes/Assets/Note_PlayerBasic.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://c3chrsxrulapd" -path="res://.godot/imported/single_note.png-edadc3d6779f4cc26ac823d186717719.ctex" +path="res://.godot/imported/Note_PlayerBasic.png-8e39c4aa6664f4092d3fb2ac9f14cce6.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Classes/Notes/assets/single_note.png" -dest_files=["res://.godot/imported/single_note.png-edadc3d6779f4cc26ac823d186717719.ctex"] +source_file="res://Classes/Notes/Assets/Note_PlayerBasic.png" +dest_files=["res://.godot/imported/Note_PlayerBasic.png-8e39c4aa6664f4092d3fb2ac9f14cce6.ctex"] [params] diff --git a/Classes/Notes/assets/double_note.png b/Classes/Notes/Assets/Note_PlayerDouble.png similarity index 100% rename from Classes/Notes/assets/double_note.png rename to Classes/Notes/Assets/Note_PlayerDouble.png diff --git a/Classes/Notes/assets/double_note.png.import b/Classes/Notes/Assets/Note_PlayerDouble.png.import similarity index 69% rename from Classes/Notes/assets/double_note.png.import rename to Classes/Notes/Assets/Note_PlayerDouble.png.import index ea62f194..c1b01c08 100644 --- a/Classes/Notes/assets/double_note.png.import +++ b/Classes/Notes/Assets/Note_PlayerDouble.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://caw70lr5e1yiq" -path="res://.godot/imported/double_note.png-1b788aee0b7f76d502303d178d821d3b.ctex" +path="res://.godot/imported/Note_PlayerDouble.png-9f112bc39494bd9420dfe4ce034039fa.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Classes/Notes/assets/double_note.png" -dest_files=["res://.godot/imported/double_note.png-1b788aee0b7f76d502303d178d821d3b.ctex"] +source_file="res://Classes/Notes/Assets/Note_PlayerDouble.png" +dest_files=["res://.godot/imported/Note_PlayerDouble.png-9f112bc39494bd9420dfe4ce034039fa.ctex"] [params] diff --git a/Classes/Notes/assets/heal_note.png b/Classes/Notes/Assets/Note_PlayerHeal.png similarity index 100% rename from Classes/Notes/assets/heal_note.png rename to Classes/Notes/Assets/Note_PlayerHeal.png diff --git a/Classes/Notes/assets/heal_note.png.import b/Classes/Notes/Assets/Note_PlayerHeal.png.import similarity index 69% rename from Classes/Notes/assets/heal_note.png.import rename to Classes/Notes/Assets/Note_PlayerHeal.png.import index 22f3a997..f83e8a2e 100644 --- a/Classes/Notes/assets/heal_note.png.import +++ b/Classes/Notes/Assets/Note_PlayerHeal.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cdf3g3174du4r" -path="res://.godot/imported/heal_note.png-09ca289a296eee82d33c64101a4e593a.ctex" +path="res://.godot/imported/Note_PlayerHeal.png-5679ecbd30dd234cfea43cc6fb83ee76.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Classes/Notes/assets/heal_note.png" -dest_files=["res://.godot/imported/heal_note.png-09ca289a296eee82d33c64101a4e593a.ctex"] +source_file="res://Classes/Notes/Assets/Note_PlayerHeal.png" +dest_files=["res://.godot/imported/Note_PlayerHeal.png-5679ecbd30dd234cfea43cc6fb83ee76.ctex"] [params] diff --git a/Classes/Notes/assets/quarter_note.png b/Classes/Notes/Assets/Note_PlayerQuarter.png similarity index 100% rename from Classes/Notes/assets/quarter_note.png rename to Classes/Notes/Assets/Note_PlayerQuarter.png diff --git a/Classes/Notes/assets/quarter_note.png.import b/Classes/Notes/Assets/Note_PlayerQuarter.png.import similarity index 68% rename from Classes/Notes/assets/quarter_note.png.import rename to Classes/Notes/Assets/Note_PlayerQuarter.png.import index 0729e611..7e54973a 100644 --- a/Classes/Notes/assets/quarter_note.png.import +++ b/Classes/Notes/Assets/Note_PlayerQuarter.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://uksjoqp7p0gq" -path="res://.godot/imported/quarter_note.png-2b4c9985d99038807abfd63e553c2d6a.ctex" +path="res://.godot/imported/Note_PlayerQuarter.png-b678f5b1b075ececef380edabf9dfb63.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Classes/Notes/assets/quarter_note.png" -dest_files=["res://.godot/imported/quarter_note.png-2b4c9985d99038807abfd63e553c2d6a.ctex"] +source_file="res://Classes/Notes/Assets/Note_PlayerQuarter.png" +dest_files=["res://.godot/imported/Note_PlayerQuarter.png-b678f5b1b075ececef380edabf9dfb63.ctex"] [params] diff --git a/Classes/Notes/assets/vampire_note.png b/Classes/Notes/Assets/Note_PlayerVampire.png similarity index 100% rename from Classes/Notes/assets/vampire_note.png rename to Classes/Notes/Assets/Note_PlayerVampire.png diff --git a/Classes/Notes/assets/vampire_note.png.import b/Classes/Notes/Assets/Note_PlayerVampire.png.import similarity index 68% rename from Classes/Notes/assets/vampire_note.png.import rename to Classes/Notes/Assets/Note_PlayerVampire.png.import index 65be637e..5a6fd8d5 100644 --- a/Classes/Notes/assets/vampire_note.png.import +++ b/Classes/Notes/Assets/Note_PlayerVampire.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dg0lmu0pip4lr" -path="res://.godot/imported/vampire_note.png-4331f817a6feee1f1066a9e9f95934c8.ctex" +path="res://.godot/imported/Note_PlayerVampire.png-038429e14b819cbb968ff50682ccabc6.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Classes/Notes/assets/vampire_note.png" -dest_files=["res://.godot/imported/vampire_note.png-4331f817a6feee1f1066a9e9f95934c8.ctex"] +source_file="res://Classes/Notes/Assets/Note_PlayerVampire.png" +dest_files=["res://.godot/imported/Note_PlayerVampire.png-038429e14b819cbb968ff50682ccabc6.ctex"] [params] diff --git a/Classes/Relics/assets/Auroboros.png b/Classes/Relics/Assets/Relic_Auroboros.png similarity index 100% rename from Classes/Relics/assets/Auroboros.png rename to Classes/Relics/Assets/Relic_Auroboros.png diff --git a/Classes/Relics/assets/Auroboros.png.import b/Classes/Relics/Assets/Relic_Auroboros.png.import similarity index 69% rename from Classes/Relics/assets/Auroboros.png.import rename to Classes/Relics/Assets/Relic_Auroboros.png.import index d0051264..48224195 100644 --- a/Classes/Relics/assets/Auroboros.png.import +++ b/Classes/Relics/Assets/Relic_Auroboros.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cqlrv1vra4mbn" -path="res://.godot/imported/Auroboros.png-27bfe2114f3955a0f6ef5ceb4e65adbf.ctex" +path="res://.godot/imported/Relic_Auroboros.png-c5b164882e0cc6b4eae662aec80abbce.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Classes/Relics/assets/Auroboros.png" -dest_files=["res://.godot/imported/Auroboros.png-27bfe2114f3955a0f6ef5ceb4e65adbf.ctex"] +source_file="res://Classes/Relics/Assets/Relic_Auroboros.png" +dest_files=["res://.godot/imported/Relic_Auroboros.png-c5b164882e0cc6b4eae662aec80abbce.ctex"] [params] diff --git a/Classes/Relics/assets/Colorboros.png b/Classes/Relics/Assets/Relic_Colorboros.png similarity index 100% rename from Classes/Relics/assets/Colorboros.png rename to Classes/Relics/Assets/Relic_Colorboros.png diff --git a/Classes/Relics/assets/Colorboros.png.import b/Classes/Relics/Assets/Relic_Colorboros.png.import similarity index 69% rename from Classes/Relics/assets/Colorboros.png.import rename to Classes/Relics/Assets/Relic_Colorboros.png.import index 81d7b2ea..ed1f3403 100644 --- a/Classes/Relics/assets/Colorboros.png.import +++ b/Classes/Relics/Assets/Relic_Colorboros.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ccd6pskxcwpxg" -path="res://.godot/imported/Colorboros.png-56197d792c620150c773fb4ecce6289c.ctex" +path="res://.godot/imported/Relic_Colorboros.png-406af684be0b51f2232e99d2ace4dff9.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Classes/Relics/assets/Colorboros.png" -dest_files=["res://.godot/imported/Colorboros.png-56197d792c620150c773fb4ecce6289c.ctex"] +source_file="res://Classes/Relics/Assets/Relic_Colorboros.png" +dest_files=["res://.godot/imported/Relic_Colorboros.png-406af684be0b51f2232e99d2ace4dff9.ctex"] [params] diff --git a/Classes/Relics/assets/relic_Breakfast.png.import b/Classes/Relics/assets/relic_Breakfast.png.import index 6a21aa03..afa89070 100644 --- a/Classes/Relics/assets/relic_Breakfast.png.import +++ b/Classes/Relics/assets/relic_Breakfast.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://csjx2hb4tdlw8" -path="res://.godot/imported/relic_Breakfast.png-c1b968058adbb855fcf957a2aec74dc2.ctex" +path="res://.godot/imported/Relic_Breakfast.png-71ab89b12909df408626427d83246628.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Classes/Relics/assets/relic_Breakfast.png" -dest_files=["res://.godot/imported/relic_Breakfast.png-c1b968058adbb855fcf957a2aec74dc2.ctex"] +source_file="res://Classes/Relics/Assets/Relic_Breakfast.png" +dest_files=["res://.godot/imported/Relic_Breakfast.png-71ab89b12909df408626427d83246628.ctex"] [params] diff --git a/Classes/Relics/assets/relic_GoodVibes.png.import b/Classes/Relics/assets/relic_GoodVibes.png.import index c2ff344d..ea4e6399 100644 --- a/Classes/Relics/assets/relic_GoodVibes.png.import +++ b/Classes/Relics/assets/relic_GoodVibes.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dg4tnp7plxmp7" -path="res://.godot/imported/relic_GoodVibes.png-cd102b29bb163411bb7ce8cf724ef0c0.ctex" +path="res://.godot/imported/Relic_GoodVibes.png-01d38d3d6a79fe959565a2bfe43c64ca.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Classes/Relics/assets/relic_GoodVibes.png" -dest_files=["res://.godot/imported/relic_GoodVibes.png-cd102b29bb163411bb7ce8cf724ef0c0.ctex"] +source_file="res://Classes/Relics/Assets/Relic_GoodVibes.png" +dest_files=["res://.godot/imported/Relic_GoodVibes.png-01d38d3d6a79fe959565a2bfe43c64ca.ctex"] [params] diff --git a/Funk Engine.csproj b/Funk Engine.csproj index e6707425..79bf1b7c 100644 --- a/Funk Engine.csproj +++ b/Funk Engine.csproj @@ -7,9 +7,11 @@ FunkEngine - + + + diff --git a/Globals/BgAudioPlayer/BgAudioPlayer.cs b/Globals/BgAudioPlayer/BgAudioPlayer.cs index 35f17e75..549dc61a 100644 --- a/Globals/BgAudioPlayer/BgAudioPlayer.cs +++ b/Globals/BgAudioPlayer/BgAudioPlayer.cs @@ -3,7 +3,7 @@ public partial class BgAudioPlayer : AudioStreamPlayer { private readonly AudioStream _levelMusic = (AudioStream) - ResourceLoader.Load("res://scenes/SceneTransitions/assets/titleSong.ogg"); + ResourceLoader.Load("res://Scenes/UI/TitleScreen/Assets/TitleSong.ogg"); private void PlayMusic(AudioStream music, float volume) { diff --git a/SaveData/SaveSystem.cs b/Globals/SaveSystem.cs similarity index 100% rename from SaveData/SaveSystem.cs rename to Globals/SaveSystem.cs diff --git a/Globals/Scribe.cs b/Globals/Scribe.cs index cc9c2a14..e3671572 100644 --- a/Globals/Scribe.cs +++ b/Globals/Scribe.cs @@ -27,7 +27,7 @@ public partial class Scribe : Node 1, "PlayerBase", "Basic player note, deals damage to enemy.", - GD.Load("res://Classes/Notes/assets/single_note.png"), + GD.Load("res://Classes/Notes/Assets/Note_PlayerBasic.png"), null, 1, (director, note, timing) => @@ -41,7 +41,7 @@ public partial class Scribe : Node 2, "PlayerDouble", "Basic player note, deals double damage to enemy.", - GD.Load("res://Classes/Notes/assets/double_note.png"), + GD.Load("res://Classes/Notes/Assets/Note_PlayerDouble.png"), null, 2, (director, note, timing) => @@ -55,7 +55,7 @@ public partial class Scribe : Node 3, "PlayerHeal", "Basic player note, heals player.", - GD.Load("res://Classes/Notes/assets/heal_note.png"), + GD.Load("res://Classes/Notes/Assets/Note_PlayerHeal.png"), null, 1, (director, note, timing) => @@ -69,7 +69,7 @@ public partial class Scribe : Node 4, "PlayerVampire", "Steals health from enemy.", - GD.Load("res://Classes/Notes/assets/vampire_note.png"), + GD.Load("res://Classes/Notes/Assets/Note_PlayerVampire.png"), null, 1, (director, note, timing) => @@ -84,7 +84,7 @@ public partial class Scribe : Node 5, "PlayerQuarter", "Basic note at a quarter of the cost.", - GD.Load("res://Classes/Notes/assets/quarter_note.png"), + GD.Load("res://Classes/Notes/Assets/Note_PlayerQuarter.png"), null, 1, (director, note, timing) => @@ -103,7 +103,7 @@ public partial class Scribe : Node 0, "Breakfast", //Reference ha ha, Item to give when relic pool is empty. "Increases max hp.", //TODO: Description can include the relics values? - GD.Load("res://Classes/Relics/assets/relic_Breakfast.png"), + GD.Load("res://Classes/Relics/Assets/Relic_Breakfast.png"), new RelicEffect[] { new RelicEffect( @@ -121,7 +121,7 @@ public partial class Scribe : Node 1, "Good Vibes", "Heals the player whenever they place a note.", - GD.Load("res://Classes/Relics/assets/relic_GoodVibes.png"), + GD.Load("res://Classes/Relics/Assets/Relic_GoodVibes.png"), new RelicEffect[] { new RelicEffect( @@ -138,7 +138,7 @@ public partial class Scribe : Node 2, "Auroboros", "Bigger number, better person. Increases combo multiplier every riff.", - GD.Load("res://Classes/Relics/assets/Auroboros.png"), + GD.Load("res://Classes/Relics/Assets/Relic_Auroboros.png"), new RelicEffect[] { new RelicEffect( @@ -156,7 +156,7 @@ public partial class Scribe : Node 3, "Colorboros", "Taste the rainbow. Charges the freestyle bar every riff.", - GD.Load("res://Classes/Relics/assets/Colorboros.png"), + GD.Load("res://Classes/Relics/Assets/Relic_Colorboros.png"), new RelicEffect[] { new RelicEffect( @@ -183,7 +183,7 @@ public partial class Scribe : Node }, "Song1", "Audio/Song1.ogg", - "Audio/midi/Song1.mid" + "Audio/Midi/Song1.mid" ), new SongTemplate( new SongData @@ -194,8 +194,8 @@ public partial class Scribe : Node }, "Song2", "Audio/Song2.ogg", - "Audio/midi/Song2.mid", - "res://scenes/Puppets/Enemies/Parasifly/Parasifly.tscn" + "Audio/Midi/Song2.mid", + "res://Scenes/Puppets/Enemies/Parasifly/Parasifly.tscn" ), new SongTemplate( new SongData @@ -206,8 +206,8 @@ public partial class Scribe : Node }, "Song3", "Audio/Song3.ogg", - "Audio/midi/Song3.mid", - "res://scenes/Puppets/Enemies/TheGWS/GWS.tscn" + "Audio/Midi/Song3.mid", + "res://Scenes/Puppets/Enemies/TheGWS/GWS.tscn" ), }; diff --git a/Globals/StageProducer.cs b/Globals/StageProducer.cs index 7c1a9682..4cd05463 100644 --- a/Globals/StageProducer.cs +++ b/Globals/StageProducer.cs @@ -111,22 +111,22 @@ public void TransitionStage(Stages nextStage, int nextRoomIdx = -1) { case Stages.Title: IsInitialized = false; - GetTree().ChangeSceneToFile("res://scenes/SceneTransitions/TitleScreen.tscn"); + GetTree().ChangeSceneToFile("res://Scenes/UI/TitleScreen/TitleScreen.tscn"); break; case Stages.Battle: Config = MakeConfig(nextStage, nextRoomIdx); - GetTree().ChangeSceneToFile("res://scenes/BattleDirector/test_battle_scene.tscn"); + GetTree().ChangeSceneToFile("res://Scenes/BattleDirector/BattleScene.tscn"); break; case Stages.Boss: Config = MakeConfig(nextStage, nextRoomIdx); - GetTree().ChangeSceneToFile("res://scenes/BattleDirector/test_battle_scene.tscn"); + GetTree().ChangeSceneToFile("res://Scenes/BattleDirector/BattleScene.tscn"); break; case Stages.Chest: Config = MakeConfig(nextStage, nextRoomIdx); - GetTree().ChangeSceneToFile("res://scenes/ChestScene/ChestScene.tscn"); + GetTree().ChangeSceneToFile("res://Scenes/ChestScene/ChestScene.tscn"); break; case Stages.Map: - GetTree().ChangeSceneToFile("res://scenes/Maps/cartographer.tscn"); + GetTree().ChangeSceneToFile("res://Scenes/Maps/Cartographer.tscn"); if (!IsInitialized) { StartGame(); @@ -135,7 +135,7 @@ public void TransitionStage(Stages nextStage, int nextRoomIdx = -1) case Stages.Load: if (!LoadGame()) StartGame(); - GetTree().ChangeSceneToFile("res://scenes/Maps/cartographer.tscn"); + GetTree().ChangeSceneToFile("res://Scenes/Maps/Cartographer.tscn"); break; case Stages.Quit: GetTree().Quit(); diff --git a/Globals/Translations/translations.csv.import b/Globals/Translations/translations.csv.import index eeffcdc3..b1ceb83a 100644 --- a/Globals/Translations/translations.csv.import +++ b/Globals/Translations/translations.csv.import @@ -6,10 +6,10 @@ uid="uid://drjnsd6mqpxqh" [deps] -files=["res://Globals/Translations/translations.en.translation", "res://Globals/Translations/translations.cn.translation"] +files=["res://Globals/Translations/Translations.en.translation", "res://Globals/Translations/Translations.cn.translation"] -source_file="res://Globals/Translations/translations.csv" -dest_files=["res://Globals/Translations/translations.en.translation", "res://Globals/Translations/translations.cn.translation"] +source_file="res://Globals/Translations/Translations.csv" +dest_files=["res://Globals/Translations/Translations.en.translation", "res://Globals/Translations/Translations.cn.translation"] [params] diff --git a/scenes/BattleDirector/assets/temp_note_queue.png b/Scenes/BattleDirector/Assets/NoteQueue_Frame.png similarity index 100% rename from scenes/BattleDirector/assets/temp_note_queue.png rename to Scenes/BattleDirector/Assets/NoteQueue_Frame.png diff --git a/scenes/BattleDirector/assets/temp_note_queue.png.import b/Scenes/BattleDirector/Assets/NoteQueue_Frame.png.import similarity index 69% rename from scenes/BattleDirector/assets/temp_note_queue.png.import rename to Scenes/BattleDirector/Assets/NoteQueue_Frame.png.import index cf432095..ac8fbec5 100644 --- a/scenes/BattleDirector/assets/temp_note_queue.png.import +++ b/Scenes/BattleDirector/Assets/NoteQueue_Frame.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cnyr5usjdv0ni" -path="res://.godot/imported/temp_note_queue.png-b6e43682068ed18b8bf4cd7cd8229404.ctex" +path="res://.godot/imported/NoteQueue_Frame.png-e9e1fc727e2cde6812934bdfe5d051a7.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/BattleDirector/assets/temp_note_queue.png" -dest_files=["res://.godot/imported/temp_note_queue.png-b6e43682068ed18b8bf4cd7cd8229404.ctex"] +source_file="res://Scenes/BattleDirector/Assets/NoteQueue_Frame.png" +dest_files=["res://.godot/imported/NoteQueue_Frame.png-e9e1fc727e2cde6812934bdfe5d051a7.ctex"] [params] diff --git a/scenes/BattleDirector/test_battle_scene.tscn b/Scenes/BattleDirector/BattleScene.tscn similarity index 70% rename from scenes/BattleDirector/test_battle_scene.tscn rename to Scenes/BattleDirector/BattleScene.tscn index 991d04c6..93282013 100644 --- a/scenes/BattleDirector/test_battle_scene.tscn +++ b/Scenes/BattleDirector/BattleScene.tscn @@ -1,12 +1,12 @@ [gd_scene load_steps=10 format=3 uid="uid://b0mrgr7h0ty1y"] -[ext_resource type="Script" path="res://scenes/BattleDirector/scripts/BattleDirector.cs" id="1_cwqqr"] -[ext_resource type="PackedScene" uid="uid://dfevfib11kou1" path="res://scenes/ChartViewport/ChartViewport.tscn" id="2_cupb3"] -[ext_resource type="Script" path="res://scenes/BattleDirector/scripts/Conductor.cs" id="2_pcp76"] -[ext_resource type="Script" path="res://scenes/UI/scripts/MenuModule.cs" id="3_8hff6"] -[ext_resource type="Texture2D" uid="uid://qhwve7fik4do" path="res://scenes/BattleDirector/assets/bgupdate.png" id="4_13o87"] -[ext_resource type="Texture2D" uid="uid://dbjotl0v1ymia" path="res://scenes/BattleDirector/assets/BattleFrame1.png" id="6_0ak0g"] -[ext_resource type="PackedScene" uid="uid://duhiilcv4tat3" path="res://scenes/BattleDirector/NotePlacementBar.tscn" id="7_3ko4g"] +[ext_resource type="Script" path="res://Scenes/BattleDirector/Scripts/BattleDirector.cs" id="1_jmdo1"] +[ext_resource type="Script" path="res://Scenes/UI/Scripts/MenuModule.cs" id="2_ka0ws"] +[ext_resource type="Script" path="res://Scenes/BattleDirector/Scripts/Conductor.cs" id="3_elcaj"] +[ext_resource type="PackedScene" uid="uid://duhiilcv4tat3" path="res://Scenes/BattleDirector/NotePlacementBar.tscn" id="4_qk7om"] +[ext_resource type="PackedScene" uid="uid://dfevfib11kou1" path="res://Scenes/ChartViewport/ChartViewport.tscn" id="5_r2xh0"] +[ext_resource type="Texture2D" uid="uid://qhwve7fik4do" path="res://SharedAssets/BackGround_Full.png" id="6_0jtpx"] +[ext_resource type="Texture2D" uid="uid://dbjotl0v1ymia" path="res://SharedAssets/BattleFrame1.png" id="7_klvil"] [sub_resource type="Gradient" id="Gradient_8uy3a"] offsets = PackedFloat32Array(0, 0.766234, 1) @@ -19,7 +19,7 @@ fill_to = Vector2(0.738532, 1) [node name="ProtoBattleDirector" type="Node2D" node_paths=PackedStringArray("CM", "NotePlacementBar", "CD", "Audio", "_focusedButton")] process_mode = 1 -script = ExtResource("1_cwqqr") +script = ExtResource("1_jmdo1") CM = NodePath("SubViewport") NotePlacementBar = NodePath("NotePlacementBar") CD = NodePath("Conductor") @@ -30,13 +30,13 @@ metadata/_edit_lock_ = true [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] [node name="UILayer" type="CanvasLayer" parent="."] -script = ExtResource("3_8hff6") +script = ExtResource("2_ka0ws") [node name="Conductor" type="Node" parent="." node_paths=PackedStringArray("CM")] -script = ExtResource("2_pcp76") +script = ExtResource("3_elcaj") CM = NodePath("../SubViewport") -[node name="NotePlacementBar" parent="." instance=ExtResource("7_3ko4g")] +[node name="NotePlacementBar" parent="." instance=ExtResource("4_qk7om")] offset_top = 183.0 offset_bottom = 183.0 @@ -47,7 +47,7 @@ offset_right = 81.0 offset_bottom = 175.0 texture = SubResource("GradientTexture2D_bajwn") -[node name="SubViewport" parent="." instance=ExtResource("2_cupb3")] +[node name="SubViewport" parent="." instance=ExtResource("5_r2xh0")] offset_left = 80.0 offset_top = 180.0 offset_right = 560.0 @@ -57,14 +57,14 @@ offset_bottom = 360.0 z_index = -1 offset_right = 640.0 offset_bottom = 178.0 -texture = ExtResource("4_13o87") +texture = ExtResource("6_0jtpx") [node name="BattleFrame" type="TextureRect" parent="."] z_index = 1 offset_top = 178.0 offset_right = 640.0 offset_bottom = 360.0 -texture = ExtResource("6_0ak0g") +texture = ExtResource("7_klvil") [node name="StartButton" type="Button" parent="."] modulate = Color(5, 5, 5, 1) diff --git a/scenes/ChartViewport/hit_particles.tscn b/Scenes/ChartViewport/HitParticles.tscn similarity index 71% rename from scenes/ChartViewport/hit_particles.tscn rename to Scenes/ChartViewport/HitParticles.tscn index 30a4f3ec..1a9315fe 100644 --- a/scenes/ChartViewport/hit_particles.tscn +++ b/Scenes/ChartViewport/HitParticles.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://bcf6vs4aqoxr5"] -[ext_resource type="Script" path="res://scenes/ChartViewport/scripts/HitParticles.cs" id="1_tr2t2"] +[ext_resource type="Script" path="res://Scenes/ChartViewport/Scripts/HitParticles.cs" id="1_7gkj5"] [node name="HitParticles" type="CPUParticles2D"] z_index = -1 @@ -14,4 +14,4 @@ gravity = Vector2(0, 0) initial_velocity_min = 50.0 initial_velocity_max = 200.0 scale_amount_max = 2.0 -script = ExtResource("1_tr2t2") +script = ExtResource("1_7gkj5") diff --git a/scenes/NoteManager/note.tscn b/Scenes/NoteManager/NoteArrow.tscn similarity index 75% rename from scenes/NoteManager/note.tscn rename to Scenes/NoteManager/NoteArrow.tscn index cedada14..af81957b 100644 --- a/scenes/NoteManager/note.tscn +++ b/Scenes/NoteManager/NoteArrow.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=4 format=3 uid="uid://ck3bfqy30rjbq"] -[ext_resource type="Texture2D" uid="uid://hfxynr5jdgsp" path="res://scenes/NoteManager/assets/new_arrow.png" id="1_wq1hy"] -[ext_resource type="Script" path="res://scenes/NoteManager/scripts/NoteArrow.cs" id="2_lbl4b"] -[ext_resource type="Texture2D" uid="uid://cgq2ar3pdmkac" path="res://scenes/NoteManager/assets/arrow_outline.png" id="3_5g4ja"] +[ext_resource type="Texture2D" uid="uid://hfxynr5jdgsp" path="res://Scenes/NoteManager/Assets/new_arrow.png" id="1_wq1hy"] +[ext_resource type="Script" path="res://Scenes/NoteManager/Scripts/NoteArrow.cs" id="2_lbl4b"] +[ext_resource type="Texture2D" uid="uid://cgq2ar3pdmkac" path="res://Scenes/NoteManager/Assets/arrow_outline.png" id="3_5g4ja"] [node name="Right-arrow" type="Sprite2D" node_paths=PackedStringArray("OutlineSprite", "IconSprite")] texture = ExtResource("1_wq1hy") diff --git a/scenes/NoteManager/note_manager.tscn b/Scenes/NoteManager/NoteManager.tscn similarity index 89% rename from scenes/NoteManager/note_manager.tscn rename to Scenes/NoteManager/NoteManager.tscn index 8db5a94e..a7ff8a89 100644 --- a/scenes/NoteManager/note_manager.tscn +++ b/Scenes/NoteManager/NoteManager.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=7 format=3 uid="uid://bn8txx53xlguw"] -[ext_resource type="Script" path="res://scenes/NoteManager/scripts/InputHandler.cs" id="1_2oeuf"] -[ext_resource type="Texture2D" uid="uid://hfxynr5jdgsp" path="res://scenes/NoteManager/assets/new_arrow.png" id="2_pb1qk"] -[ext_resource type="Script" path="res://scenes/NoteManager/scripts/NoteChecker.cs" id="3_0cioe"] -[ext_resource type="Texture2D" uid="uid://cgq2ar3pdmkac" path="res://scenes/NoteManager/assets/arrow_outline.png" id="4_3mttx"] +[ext_resource type="Script" path="res://Scenes/NoteManager/Scripts/InputHandler.cs" id="1_2oeuf"] +[ext_resource type="Texture2D" uid="uid://hfxynr5jdgsp" path="res://Scenes/NoteManager/Assets/new_arrow.png" id="2_pb1qk"] +[ext_resource type="Script" path="res://Scenes/NoteManager/Scripts/NoteChecker.cs" id="3_0cioe"] +[ext_resource type="Texture2D" uid="uid://cgq2ar3pdmkac" path="res://Scenes/NoteManager/Assets/arrow_outline.png" id="4_3mttx"] [ext_resource type="Texture2D" uid="uid://b0tvsewgnf2x7" path="res://icon.svg" id="4_foklt"] -[ext_resource type="PackedScene" uid="uid://bcf6vs4aqoxr5" path="res://scenes/ChartViewport/hit_particles.tscn" id="5_jv1tr"] +[ext_resource type="PackedScene" uid="uid://bcf6vs4aqoxr5" path="res://Scenes/ChartViewport/HitParticles.tscn" id="5_jv1tr"] [node name="noteManager" type="Node2D"] script = ExtResource("1_2oeuf") diff --git a/scenes/BattleDirector/assets/Enemy1.png b/Scenes/Puppets/Enemies/BossBlood/Assets/Boss1.png similarity index 100% rename from scenes/BattleDirector/assets/Enemy1.png rename to Scenes/Puppets/Enemies/BossBlood/Assets/Boss1.png diff --git a/scenes/BattleDirector/assets/Enemy1.png.import b/Scenes/Puppets/Enemies/BossBlood/Assets/Boss1.png.import similarity index 70% rename from scenes/BattleDirector/assets/Enemy1.png.import rename to Scenes/Puppets/Enemies/BossBlood/Assets/Boss1.png.import index a6b8781d..f2bc0a6e 100644 --- a/scenes/BattleDirector/assets/Enemy1.png.import +++ b/Scenes/Puppets/Enemies/BossBlood/Assets/Boss1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://veedngaorx3l" -path="res://.godot/imported/Enemy1.png-fb95639d1545a326b6c39640343f3786.ctex" +path="res://.godot/imported/Boss1.png-b7a923dff8e0511e19fb7a3737126295.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/BattleDirector/assets/Enemy1.png" -dest_files=["res://.godot/imported/Enemy1.png-fb95639d1545a326b6c39640343f3786.ctex"] +source_file="res://Scenes/Puppets/Enemies/BossBlood/Assets/Boss1.png" +dest_files=["res://.godot/imported/Boss1.png-b7a923dff8e0511e19fb7a3737126295.ctex"] [params] diff --git a/scenes/Puppets/Enemies/BossBlood/assets/Enemy1EmissionShape.png b/Scenes/Puppets/Enemies/BossBlood/Assets/Boss1EmissionShape.png similarity index 100% rename from scenes/Puppets/Enemies/BossBlood/assets/Enemy1EmissionShape.png rename to Scenes/Puppets/Enemies/BossBlood/Assets/Boss1EmissionShape.png diff --git a/scenes/Puppets/Enemies/BossBlood/assets/Enemy1EmissionShape.png.import b/Scenes/Puppets/Enemies/BossBlood/Assets/Boss1EmissionShape.png.import similarity index 67% rename from scenes/Puppets/Enemies/BossBlood/assets/Enemy1EmissionShape.png.import rename to Scenes/Puppets/Enemies/BossBlood/Assets/Boss1EmissionShape.png.import index e6e2721d..4a9075e9 100644 --- a/scenes/Puppets/Enemies/BossBlood/assets/Enemy1EmissionShape.png.import +++ b/Scenes/Puppets/Enemies/BossBlood/Assets/Boss1EmissionShape.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b5jpi2i502lw5" -path="res://.godot/imported/Enemy1EmissionShape.png-b52ecd60b2d507b2c2133463b0dcbc08.ctex" +path="res://.godot/imported/Boss1EmissionShape.png-890f34e921959a3e1822c95f4278eab7.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Puppets/Enemies/BossBlood/assets/Enemy1EmissionShape.png" -dest_files=["res://.godot/imported/Enemy1EmissionShape.png-b52ecd60b2d507b2c2133463b0dcbc08.ctex"] +source_file="res://Scenes/Puppets/Enemies/BossBlood/Assets/Boss1EmissionShape.png" +dest_files=["res://.godot/imported/Boss1EmissionShape.png-890f34e921959a3e1822c95f4278eab7.ctex"] [params] diff --git a/scenes/UI/assets/combobar.png b/Scenes/UI/Assets/HowToPlay_Combo_Bar.png similarity index 100% rename from scenes/UI/assets/combobar.png rename to Scenes/UI/Assets/HowToPlay_Combo_Bar.png diff --git a/scenes/UI/assets/combobar.png.import b/Scenes/UI/Assets/HowToPlay_Combo_Bar.png.import similarity index 68% rename from scenes/UI/assets/combobar.png.import rename to Scenes/UI/Assets/HowToPlay_Combo_Bar.png.import index 9ab338bd..9c786e63 100644 --- a/scenes/UI/assets/combobar.png.import +++ b/Scenes/UI/Assets/HowToPlay_Combo_Bar.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dp3vkn65j4o3s" -path="res://.godot/imported/combobar.png-c835d811fb05e4fd220a08e5b5cab683.ctex" +path="res://.godot/imported/HowToPlay_Combo_Bar.png-0ad8e532b66f13ea35fafafcb5e4b1e4.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/UI/assets/combobar.png" -dest_files=["res://.godot/imported/combobar.png-c835d811fb05e4fd220a08e5b5cab683.ctex"] +source_file="res://Scenes/UI/Assets/HowToPlay_Combo_Bar.png" +dest_files=["res://.godot/imported/HowToPlay_Combo_Bar.png-0ad8e532b66f13ea35fafafcb5e4b1e4.ctex"] [params] diff --git a/scenes/UI/display_button.tscn b/Scenes/UI/DisplayButton.tscn similarity index 80% rename from scenes/UI/display_button.tscn rename to Scenes/UI/DisplayButton.tscn index 3dc408b8..10fad649 100644 --- a/scenes/UI/display_button.tscn +++ b/Scenes/UI/DisplayButton.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://cymo26khpw4m1"] -[ext_resource type="Script" path="res://scenes/UI/scripts/DisplayButton.cs" id="1_7lpm6"] +[ext_resource type="Script" path="res://Scenes/UI/Scripts/DisplayButton.cs" id="1_7lpm6"] [node name="DisplayButton" type="Button"] anchors_preset = 15 diff --git a/scenes/UI/HowToPlay.tscn b/Scenes/UI/Options/HowToPlay.tscn similarity index 90% rename from scenes/UI/HowToPlay.tscn rename to Scenes/UI/Options/HowToPlay.tscn index d7adbc4d..f1e539ae 100644 --- a/scenes/UI/HowToPlay.tscn +++ b/Scenes/UI/Options/HowToPlay.tscn @@ -1,12 +1,12 @@ [gd_scene load_steps=8 format=3 uid="uid://cavxn51vwbew3"] -[ext_resource type="Script" path="res://scenes/UI/scripts/HowToPlay.cs" id="1_kqayr"] -[ext_resource type="Texture2D" uid="uid://xtygvpk7s8e4" path="res://scenes/NoteManager/assets/outline_white.png" id="2_4i384"] -[ext_resource type="Texture2D" uid="uid://dp3vkn65j4o3s" path="res://scenes/UI/assets/combobar.png" id="3_7006y"] -[ext_resource type="Texture2D" uid="uid://caw70lr5e1yiq" path="res://Classes/Notes/assets/double_note.png" id="4_m6low"] -[ext_resource type="Texture2D" uid="uid://cdf3g3174du4r" path="res://Classes/Notes/assets/heal_note.png" id="5_8kiq2"] -[ext_resource type="Texture2D" uid="uid://c3chrsxrulapd" path="res://Classes/Notes/assets/single_note.png" id="6_uonw3"] -[ext_resource type="Texture2D" uid="uid://dg0lmu0pip4lr" path="res://Classes/Notes/assets/vampire_note.png" id="7_rbdrm"] +[ext_resource type="Script" path="res://Scenes/UI/Options/Scripts/HowToPlay.cs" id="1_kqayr"] +[ext_resource type="Texture2D" uid="uid://xtygvpk7s8e4" path="res://SharedAssets/NoteArrow_Black_Outline.png" id="2_4i384"] +[ext_resource type="Texture2D" uid="uid://dp3vkn65j4o3s" path="res://Scenes/UI/Assets/HowToPlay_Combo_Bar.png" id="3_7006y"] +[ext_resource type="Texture2D" uid="uid://caw70lr5e1yiq" path="res://Classes/Notes/Assets/Note_PlayerDouble.png" id="4_m6low"] +[ext_resource type="Texture2D" uid="uid://cdf3g3174du4r" path="res://Classes/Notes/Assets/Note_PlayerHeal.png" id="5_8kiq2"] +[ext_resource type="Texture2D" uid="uid://c3chrsxrulapd" path="res://Classes/Notes/Assets/Note_PlayerBasic.png" id="6_uonw3"] +[ext_resource type="Texture2D" uid="uid://dg0lmu0pip4lr" path="res://Classes/Notes/Assets/Note_PlayerVampire.png" id="7_rbdrm"] [node name="CanvasLayer" type="Node2D" node_paths=PackedStringArray("_returnButton")] process_mode = 3 @@ -20,11 +20,13 @@ offset_right = 40.0 offset_bottom = 40.0 [node name="ColorRect" type="ColorRect" parent="Control"] +layout_mode = 0 offset_right = 640.0 offset_bottom = 360.0 color = Color(0.133333, 0.133333, 0.133333, 1) [node name="Label" type="Label" parent="Control"] +layout_mode = 0 offset_top = 16.0 offset_right = 642.0 offset_bottom = 39.0 @@ -32,6 +34,7 @@ text = "HOW_TO_PLAY" horizontal_alignment = 1 [node name="ReturnButton" type="Button" parent="Control"] +layout_mode = 0 offset_left = 202.5 offset_top = 314.0 offset_right = 437.5 diff --git a/scenes/Options/OptionsMenu.tscn b/Scenes/UI/Options/OptionsMenu.tscn similarity index 95% rename from scenes/Options/OptionsMenu.tscn rename to Scenes/UI/Options/OptionsMenu.tscn index 5f429a9b..1b852e28 100644 --- a/scenes/Options/OptionsMenu.tscn +++ b/Scenes/UI/Options/OptionsMenu.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://buejv62lwtymc"] -[ext_resource type="Script" path="res://scenes/Options/scripts/LanguageSelection.cs" id="1_qyvkw"] -[ext_resource type="Script" path="res://scenes/Options/OptionsMenu.cs" id="1_yjq7i"] +[ext_resource type="Script" path="res://Scenes/UI/Options/Scripts/LanguageSelection.cs" id="1_qyvkw"] +[ext_resource type="Script" path="res://Scenes/UI/Options/Scripts/OptionsMenu.cs" id="1_yjq7i"] [node name="OptionsMenu" type="CanvasLayer" node_paths=PackedStringArray("_focused", "_volumeSlider", "_closeButton", "_controlsButton", "_highContrastToggle", "_howToPlayButton")] process_mode = 3 diff --git a/scenes/UI/scripts/HowToPlay.cs b/Scenes/UI/Options/Scripts/HowToPlay.cs similarity index 100% rename from scenes/UI/scripts/HowToPlay.cs rename to Scenes/UI/Options/Scripts/HowToPlay.cs diff --git a/scenes/Options/scripts/LanguageSelection.cs b/Scenes/UI/Options/Scripts/LanguageSelection.cs similarity index 100% rename from scenes/Options/scripts/LanguageSelection.cs rename to Scenes/UI/Options/Scripts/LanguageSelection.cs diff --git a/scenes/Options/OptionsMenu.cs b/Scenes/UI/Options/Scripts/OptionsMenu.cs similarity index 95% rename from scenes/Options/OptionsMenu.cs rename to Scenes/UI/Options/Scripts/OptionsMenu.cs index aaa5de41..147f4a93 100644 --- a/scenes/Options/OptionsMenu.cs +++ b/Scenes/UI/Options/Scripts/OptionsMenu.cs @@ -79,7 +79,7 @@ private void CloseMenu() private void OpenControls() { - ControlSettings controlSettings = GD.Load("res://scenes/Remapping/Remap.tscn") + ControlSettings controlSettings = GD.Load("res://Scenes/UI/Remapping/Remap.tscn") .Instantiate(); AddChild(controlSettings); controlSettings.OpenMenu(this); @@ -110,7 +110,7 @@ private void HighContrastChanged(bool toggled) private void OpenHowToPlay() { - HowToPlay howtoPlay = GD.Load("res://scenes/UI/HowToPlay.tscn") + HowToPlay howtoPlay = GD.Load("res://Scenes/UI/Options/HowToPlay.tscn") .Instantiate(); AddChild(howtoPlay); howtoPlay.OpenMenu(this); diff --git a/scenes/Remapping/assets/A_Key_Light.png b/Scenes/UI/Remapping/Assets/A_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/A_Key_Light.png rename to Scenes/UI/Remapping/Assets/A_Key_Light.png diff --git a/scenes/Remapping/assets/A_Key_Light.png.import b/Scenes/UI/Remapping/Assets/A_Key_Light.png.import similarity index 70% rename from scenes/Remapping/assets/A_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/A_Key_Light.png.import index 94679e9c..9ec28787 100644 --- a/scenes/Remapping/assets/A_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/A_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ucxkeg8mkugt" -path="res://.godot/imported/A_Key_Light.png-fbe7cdabcae01011395303e3e2b90c6d.ctex" +path="res://.godot/imported/A_Key_Light.png-7329269aa31c1a16ab62d73e21666a01.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/A_Key_Light.png" -dest_files=["res://.godot/imported/A_Key_Light.png-fbe7cdabcae01011395303e3e2b90c6d.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/A_Key_Light.png" +dest_files=["res://.godot/imported/A_Key_Light.png-7329269aa31c1a16ab62d73e21666a01.ctex"] [params] diff --git a/scenes/Remapping/assets/Arrow_Down_Key_Light.png b/Scenes/UI/Remapping/Assets/Arrow_Down_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/Arrow_Down_Key_Light.png rename to Scenes/UI/Remapping/Assets/Arrow_Down_Key_Light.png diff --git a/scenes/Remapping/assets/Arrow_Down_Key_Light.png.import b/Scenes/UI/Remapping/Assets/Arrow_Down_Key_Light.png.import similarity index 67% rename from scenes/Remapping/assets/Arrow_Down_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/Arrow_Down_Key_Light.png.import index 55ccf7e3..b6f8778a 100644 --- a/scenes/Remapping/assets/Arrow_Down_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/Arrow_Down_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://q14p8ypgc43t" -path="res://.godot/imported/Arrow_Down_Key_Light.png-e0ef5c9d79e6985f1ac46da1618982ac.ctex" +path="res://.godot/imported/Arrow_Down_Key_Light.png-719d0f6b968006bdbddc6b92a5b89472.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/Arrow_Down_Key_Light.png" -dest_files=["res://.godot/imported/Arrow_Down_Key_Light.png-e0ef5c9d79e6985f1ac46da1618982ac.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/Arrow_Down_Key_Light.png" +dest_files=["res://.godot/imported/Arrow_Down_Key_Light.png-719d0f6b968006bdbddc6b92a5b89472.ctex"] [params] diff --git a/scenes/Remapping/assets/Arrow_Left_Key_Light.png b/Scenes/UI/Remapping/Assets/Arrow_Left_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/Arrow_Left_Key_Light.png rename to Scenes/UI/Remapping/Assets/Arrow_Left_Key_Light.png diff --git a/scenes/Remapping/assets/Arrow_Left_Key_Light.png.import b/Scenes/UI/Remapping/Assets/Arrow_Left_Key_Light.png.import similarity index 67% rename from scenes/Remapping/assets/Arrow_Left_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/Arrow_Left_Key_Light.png.import index 1f4fdce6..2a215c28 100644 --- a/scenes/Remapping/assets/Arrow_Left_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/Arrow_Left_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cr6wtf6j6dcfg" -path="res://.godot/imported/Arrow_Left_Key_Light.png-e169ba7507bfaa6b4f35f05316273b88.ctex" +path="res://.godot/imported/Arrow_Left_Key_Light.png-4b95da442c5418f20e689be8c3098aed.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/Arrow_Left_Key_Light.png" -dest_files=["res://.godot/imported/Arrow_Left_Key_Light.png-e169ba7507bfaa6b4f35f05316273b88.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/Arrow_Left_Key_Light.png" +dest_files=["res://.godot/imported/Arrow_Left_Key_Light.png-4b95da442c5418f20e689be8c3098aed.ctex"] [params] diff --git a/scenes/Remapping/assets/Arrow_Right_Key_Light.png b/Scenes/UI/Remapping/Assets/Arrow_Right_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/Arrow_Right_Key_Light.png rename to Scenes/UI/Remapping/Assets/Arrow_Right_Key_Light.png diff --git a/scenes/Remapping/assets/Arrow_Right_Key_Light.png.import b/Scenes/UI/Remapping/Assets/Arrow_Right_Key_Light.png.import similarity index 67% rename from scenes/Remapping/assets/Arrow_Right_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/Arrow_Right_Key_Light.png.import index 4ce68c7d..43a85ae3 100644 --- a/scenes/Remapping/assets/Arrow_Right_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/Arrow_Right_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dvlekute37smy" -path="res://.godot/imported/Arrow_Right_Key_Light.png-fa1d82f1bcfbe9d1648003c2340eecdb.ctex" +path="res://.godot/imported/Arrow_Right_Key_Light.png-90ea699d64bb15c43a7dbd41c0df8ee5.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/Arrow_Right_Key_Light.png" -dest_files=["res://.godot/imported/Arrow_Right_Key_Light.png-fa1d82f1bcfbe9d1648003c2340eecdb.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/Arrow_Right_Key_Light.png" +dest_files=["res://.godot/imported/Arrow_Right_Key_Light.png-90ea699d64bb15c43a7dbd41c0df8ee5.ctex"] [params] diff --git a/scenes/Remapping/assets/Arrow_Up_Key_Light.png b/Scenes/UI/Remapping/Assets/Arrow_Up_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/Arrow_Up_Key_Light.png rename to Scenes/UI/Remapping/Assets/Arrow_Up_Key_Light.png diff --git a/scenes/Remapping/assets/Arrow_Up_Key_Light.png.import b/Scenes/UI/Remapping/Assets/Arrow_Up_Key_Light.png.import similarity index 68% rename from scenes/Remapping/assets/Arrow_Up_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/Arrow_Up_Key_Light.png.import index 79603d2e..111faaaa 100644 --- a/scenes/Remapping/assets/Arrow_Up_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/Arrow_Up_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://p06451gq2ujc" -path="res://.godot/imported/Arrow_Up_Key_Light.png-bf1ea837bf449129e38ab4c936cefed9.ctex" +path="res://.godot/imported/Arrow_Up_Key_Light.png-79a4f7cad3b102d463ad42f32589fc98.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/Arrow_Up_Key_Light.png" -dest_files=["res://.godot/imported/Arrow_Up_Key_Light.png-bf1ea837bf449129e38ab4c936cefed9.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/Arrow_Up_Key_Light.png" +dest_files=["res://.godot/imported/Arrow_Up_Key_Light.png-79a4f7cad3b102d463ad42f32589fc98.ctex"] [params] diff --git a/scenes/Remapping/assets/D_Key_Light.png b/Scenes/UI/Remapping/Assets/D_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/D_Key_Light.png rename to Scenes/UI/Remapping/Assets/D_Key_Light.png diff --git a/scenes/Remapping/assets/D_Key_Light.png.import b/Scenes/UI/Remapping/Assets/D_Key_Light.png.import similarity index 70% rename from scenes/Remapping/assets/D_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/D_Key_Light.png.import index 93aafc69..f7c65e6e 100644 --- a/scenes/Remapping/assets/D_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/D_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bpic7oh05r5fp" -path="res://.godot/imported/D_Key_Light.png-995095be28da5643c5e7f9883a58c599.ctex" +path="res://.godot/imported/D_Key_Light.png-43d954deafcad31923243ddcf3dd23cd.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/D_Key_Light.png" -dest_files=["res://.godot/imported/D_Key_Light.png-995095be28da5643c5e7f9883a58c599.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/D_Key_Light.png" +dest_files=["res://.godot/imported/D_Key_Light.png-43d954deafcad31923243ddcf3dd23cd.ctex"] [params] diff --git a/scenes/Remapping/assets/E_Key_Light.png b/Scenes/UI/Remapping/Assets/E_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/E_Key_Light.png rename to Scenes/UI/Remapping/Assets/E_Key_Light.png diff --git a/scenes/Remapping/assets/E_Key_Light.png.import b/Scenes/UI/Remapping/Assets/E_Key_Light.png.import similarity index 70% rename from scenes/Remapping/assets/E_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/E_Key_Light.png.import index f72162e3..01d43d93 100644 --- a/scenes/Remapping/assets/E_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/E_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bvbvmvtgkjtj" -path="res://.godot/imported/E_Key_Light.png-76be9736ab1b806a4318ec1bcce69c05.ctex" +path="res://.godot/imported/E_Key_Light.png-9fe72c49193260a50b1ed18d45117b1f.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/E_Key_Light.png" -dest_files=["res://.godot/imported/E_Key_Light.png-76be9736ab1b806a4318ec1bcce69c05.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/E_Key_Light.png" +dest_files=["res://.godot/imported/E_Key_Light.png-9fe72c49193260a50b1ed18d45117b1f.ctex"] [params] diff --git a/scenes/Remapping/assets/Positional_Prompts_Down.png b/Scenes/UI/Remapping/Assets/Positional_Prompts_Down.png similarity index 100% rename from scenes/Remapping/assets/Positional_Prompts_Down.png rename to Scenes/UI/Remapping/Assets/Positional_Prompts_Down.png diff --git a/scenes/Remapping/assets/Positional_Prompts_Down.png.import b/Scenes/UI/Remapping/Assets/Positional_Prompts_Down.png.import similarity index 74% rename from scenes/Remapping/assets/Positional_Prompts_Down.png.import rename to Scenes/UI/Remapping/Assets/Positional_Prompts_Down.png.import index 00f28579..a31d40f7 100644 --- a/scenes/Remapping/assets/Positional_Prompts_Down.png.import +++ b/Scenes/UI/Remapping/Assets/Positional_Prompts_Down.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://d2228hw1busi" -path="res://.godot/imported/Positional_Prompts_Down.png-b3e15455423619c63428f07cb50299dc.ctex" +path="res://.godot/imported/Positional_Prompts_Down.png-b855260def89b120ff1fbf0bcc76916c.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/Positional_Prompts_Down.png" -dest_files=["res://.godot/imported/Positional_Prompts_Down.png-b3e15455423619c63428f07cb50299dc.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/Positional_Prompts_Down.png" +dest_files=["res://.godot/imported/Positional_Prompts_Down.png-b855260def89b120ff1fbf0bcc76916c.ctex"] [params] diff --git a/scenes/Remapping/assets/Positional_Prompts_Left.png b/Scenes/UI/Remapping/Assets/Positional_Prompts_Left.png similarity index 100% rename from scenes/Remapping/assets/Positional_Prompts_Left.png rename to Scenes/UI/Remapping/Assets/Positional_Prompts_Left.png diff --git a/scenes/Remapping/assets/Positional_Prompts_Left.png.import b/Scenes/UI/Remapping/Assets/Positional_Prompts_Left.png.import similarity index 67% rename from scenes/Remapping/assets/Positional_Prompts_Left.png.import rename to Scenes/UI/Remapping/Assets/Positional_Prompts_Left.png.import index 55caa19a..986944b1 100644 --- a/scenes/Remapping/assets/Positional_Prompts_Left.png.import +++ b/Scenes/UI/Remapping/Assets/Positional_Prompts_Left.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dhnaqfw7ev076" -path="res://.godot/imported/Positional_Prompts_Left.png-a65d4cc25e7277af3c038537e36204a9.ctex" +path="res://.godot/imported/Positional_Prompts_Left.png-b56f95c01de276535d499cf8e52a2dd6.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/Positional_Prompts_Left.png" -dest_files=["res://.godot/imported/Positional_Prompts_Left.png-a65d4cc25e7277af3c038537e36204a9.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/Positional_Prompts_Left.png" +dest_files=["res://.godot/imported/Positional_Prompts_Left.png-b56f95c01de276535d499cf8e52a2dd6.ctex"] [params] diff --git a/scenes/Remapping/assets/Positional_Prompts_Right.png b/Scenes/UI/Remapping/Assets/Positional_Prompts_Right.png similarity index 100% rename from scenes/Remapping/assets/Positional_Prompts_Right.png rename to Scenes/UI/Remapping/Assets/Positional_Prompts_Right.png diff --git a/scenes/Remapping/assets/Positional_Prompts_Right.png.import b/Scenes/UI/Remapping/Assets/Positional_Prompts_Right.png.import similarity index 74% rename from scenes/Remapping/assets/Positional_Prompts_Right.png.import rename to Scenes/UI/Remapping/Assets/Positional_Prompts_Right.png.import index 5e3c9a34..3eb4b865 100644 --- a/scenes/Remapping/assets/Positional_Prompts_Right.png.import +++ b/Scenes/UI/Remapping/Assets/Positional_Prompts_Right.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bm2i63ejobjdb" -path="res://.godot/imported/Positional_Prompts_Right.png-7a91b0b4600d650c6bfcac6dd3e771e5.ctex" +path="res://.godot/imported/Positional_Prompts_Right.png-c530b7bc66d02f666feeec64f52e6b06.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/Positional_Prompts_Right.png" -dest_files=["res://.godot/imported/Positional_Prompts_Right.png-7a91b0b4600d650c6bfcac6dd3e771e5.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/Positional_Prompts_Right.png" +dest_files=["res://.godot/imported/Positional_Prompts_Right.png-c530b7bc66d02f666feeec64f52e6b06.ctex"] [params] diff --git a/scenes/Remapping/assets/Positional_Prompts_Up.png b/Scenes/UI/Remapping/Assets/Positional_Prompts_Up.png similarity index 100% rename from scenes/Remapping/assets/Positional_Prompts_Up.png rename to Scenes/UI/Remapping/Assets/Positional_Prompts_Up.png diff --git a/scenes/Remapping/assets/Positional_Prompts_Up.png.import b/Scenes/UI/Remapping/Assets/Positional_Prompts_Up.png.import similarity index 67% rename from scenes/Remapping/assets/Positional_Prompts_Up.png.import rename to Scenes/UI/Remapping/Assets/Positional_Prompts_Up.png.import index c1def7b1..8c122004 100644 --- a/scenes/Remapping/assets/Positional_Prompts_Up.png.import +++ b/Scenes/UI/Remapping/Assets/Positional_Prompts_Up.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dlj21le4bp7cw" -path="res://.godot/imported/Positional_Prompts_Up.png-7d12b23f22144d5032611d5d3d789658.ctex" +path="res://.godot/imported/Positional_Prompts_Up.png-239e554233dd2fd0b22ef9ebefbc3b5d.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/Positional_Prompts_Up.png" -dest_files=["res://.godot/imported/Positional_Prompts_Up.png-7d12b23f22144d5032611d5d3d789658.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/Positional_Prompts_Up.png" +dest_files=["res://.godot/imported/Positional_Prompts_Up.png-239e554233dd2fd0b22ef9ebefbc3b5d.ctex"] [params] diff --git a/scenes/Remapping/assets/Q_Key_Light.png b/Scenes/UI/Remapping/Assets/Q_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/Q_Key_Light.png rename to Scenes/UI/Remapping/Assets/Q_Key_Light.png diff --git a/scenes/Remapping/assets/Q_Key_Light.png.import b/Scenes/UI/Remapping/Assets/Q_Key_Light.png.import similarity index 70% rename from scenes/Remapping/assets/Q_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/Q_Key_Light.png.import index fa1691ee..8b3d8f7d 100644 --- a/scenes/Remapping/assets/Q_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/Q_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dn2snw6ibyn78" -path="res://.godot/imported/Q_Key_Light.png-f755c500c9aa3485b97fe1ab3ad96157.ctex" +path="res://.godot/imported/Q_Key_Light.png-dd437257d3d8fd0495a1334ffc31bac8.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/Q_Key_Light.png" -dest_files=["res://.godot/imported/Q_Key_Light.png-f755c500c9aa3485b97fe1ab3ad96157.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/Q_Key_Light.png" +dest_files=["res://.godot/imported/Q_Key_Light.png-dd437257d3d8fd0495a1334ffc31bac8.ctex"] [params] diff --git a/scenes/Remapping/assets/R_Key_Light.png b/Scenes/UI/Remapping/Assets/R_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/R_Key_Light.png rename to Scenes/UI/Remapping/Assets/R_Key_Light.png diff --git a/scenes/Remapping/assets/R_Key_Light.png.import b/Scenes/UI/Remapping/Assets/R_Key_Light.png.import similarity index 70% rename from scenes/Remapping/assets/R_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/R_Key_Light.png.import index 488c218a..dbd80ba6 100644 --- a/scenes/Remapping/assets/R_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/R_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://d3sdo7e5n6qkn" -path="res://.godot/imported/R_Key_Light.png-469a158a72ae0eb478eaa17b8e8eca8d.ctex" +path="res://.godot/imported/R_Key_Light.png-5f8abebbfccbe9a5417f1ebed1e3a199.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/R_Key_Light.png" -dest_files=["res://.godot/imported/R_Key_Light.png-469a158a72ae0eb478eaa17b8e8eca8d.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/R_Key_Light.png" +dest_files=["res://.godot/imported/R_Key_Light.png-5f8abebbfccbe9a5417f1ebed1e3a199.ctex"] [params] diff --git a/scenes/Remapping/assets/S_Key_Light.png b/Scenes/UI/Remapping/Assets/S_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/S_Key_Light.png rename to Scenes/UI/Remapping/Assets/S_Key_Light.png diff --git a/scenes/Remapping/assets/S_Key_Light.png.import b/Scenes/UI/Remapping/Assets/S_Key_Light.png.import similarity index 70% rename from scenes/Remapping/assets/S_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/S_Key_Light.png.import index 73764c99..22ff5a3f 100644 --- a/scenes/Remapping/assets/S_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/S_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bhjl3xnuwauu0" -path="res://.godot/imported/S_Key_Light.png-9d95010f1d46b091380147634a677962.ctex" +path="res://.godot/imported/S_Key_Light.png-0b94f3ef8198c961a4767f9f25627e55.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/S_Key_Light.png" -dest_files=["res://.godot/imported/S_Key_Light.png-9d95010f1d46b091380147634a677962.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/S_Key_Light.png" +dest_files=["res://.godot/imported/S_Key_Light.png-0b94f3ef8198c961a4767f9f25627e55.ctex"] [params] diff --git a/scenes/Remapping/assets/T_Key_Light.png b/Scenes/UI/Remapping/Assets/T_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/T_Key_Light.png rename to Scenes/UI/Remapping/Assets/T_Key_Light.png diff --git a/scenes/Remapping/assets/T_Key_Light.png.import b/Scenes/UI/Remapping/Assets/T_Key_Light.png.import similarity index 70% rename from scenes/Remapping/assets/T_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/T_Key_Light.png.import index 8de3232e..acbc5a5a 100644 --- a/scenes/Remapping/assets/T_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/T_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://7v6wwa5trbkf" -path="res://.godot/imported/T_Key_Light.png-aaa37b7abd7eacd88af5f1aa9c56ca90.ctex" +path="res://.godot/imported/T_Key_Light.png-5f9653ef3045ac239de1426add148130.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/T_Key_Light.png" -dest_files=["res://.godot/imported/T_Key_Light.png-aaa37b7abd7eacd88af5f1aa9c56ca90.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/T_Key_Light.png" +dest_files=["res://.godot/imported/T_Key_Light.png-5f9653ef3045ac239de1426add148130.ctex"] [params] diff --git a/scenes/Remapping/assets/W_Key_Light.png b/Scenes/UI/Remapping/Assets/W_Key_Light.png similarity index 100% rename from scenes/Remapping/assets/W_Key_Light.png rename to Scenes/UI/Remapping/Assets/W_Key_Light.png diff --git a/scenes/Remapping/assets/W_Key_Light.png.import b/Scenes/UI/Remapping/Assets/W_Key_Light.png.import similarity index 70% rename from scenes/Remapping/assets/W_Key_Light.png.import rename to Scenes/UI/Remapping/Assets/W_Key_Light.png.import index 9e08ca76..dcd286a9 100644 --- a/scenes/Remapping/assets/W_Key_Light.png.import +++ b/Scenes/UI/Remapping/Assets/W_Key_Light.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://e4dr0lk7ll0e" -path="res://.godot/imported/W_Key_Light.png-8bf0c815e1230db9cd269b81ebd9f71f.ctex" +path="res://.godot/imported/W_Key_Light.png-0a27e3b3ab7dcb396c91bfe71e08d0f2.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Remapping/assets/W_Key_Light.png" -dest_files=["res://.godot/imported/W_Key_Light.png-8bf0c815e1230db9cd269b81ebd9f71f.ctex"] +source_file="res://Scenes/UI/Remapping/Assets/W_Key_Light.png" +dest_files=["res://.godot/imported/W_Key_Light.png-0a27e3b3ab7dcb396c91bfe71e08d0f2.ctex"] [params] diff --git a/Scenes/UI/Remapping/ControlSchemes.cs b/Scenes/UI/Remapping/ControlSchemes.cs new file mode 100644 index 00000000..75a5bc83 --- /dev/null +++ b/Scenes/UI/Remapping/ControlSchemes.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using Godot; + +public static class ControlSchemes +{ + public static Dictionary> SpriteMappings = new Dictionary< + string, + Dictionary + >() + { + { + "WASD", + new Dictionary() + { + { "left", "res://Scenes/UI/Remapping/Assets/A_Key_Light.png" }, + { "right", "res://Scenes/UI/Remapping/Assets/D_Key_Light.png" }, + { "up", "res://Scenes/UI/Remapping/Assets/W_Key_Light.png" }, + { "down", "res://Scenes/UI/Remapping/Assets/S_Key_Light.png" }, + } + }, + { + "ARROWS", + new Dictionary() + { + { "left", "res://Scenes/UI/Remapping/Assets/Arrow_Left_Key_Light.png" }, + { "right", "res://Scenes/UI/Remapping/Assets/Arrow_Right_Key_Light.png" }, + { "up", "res://Scenes/UI/Remapping/Assets/Arrow_Up_Key_Light.png" }, + { "down", "res://Scenes/UI/Remapping/Assets/Arrow_Down_Key_Light.png" }, + } + }, + { + "QWERT", + new Dictionary() + { + { "left", "res://Scenes/UI/Remapping/Assets/Q_Key_Light.png" }, + { "right", "res://Scenes/UI/Remapping/Assets/R_Key_Light.png" }, + { "up", "res://Scenes/UI/Remapping/Assets/W_Key_Light.png" }, + { "down", "res://Scenes/UI/Remapping/Assets/E_Key_Light.png" }, + } + }, + { + "CONTROLLER", + new Dictionary() + { + { "left", "res://Scenes/UI/Remapping/Assets/Positional_Prompts_Left.png" }, + { "right", "res://Scenes/UI/Remapping/Assets/Positional_Prompts_Right.png" }, + { "up", "res://Scenes/UI/Remapping/Assets/Positional_Prompts_Up.png" }, + { "down", "res://Scenes/UI/Remapping/Assets/Positional_Prompts_Down.png" }, + } + }, + }; +} diff --git a/scenes/Remapping/ControlSettings.cs b/Scenes/UI/Remapping/ControlSettings.cs similarity index 100% rename from scenes/Remapping/ControlSettings.cs rename to Scenes/UI/Remapping/ControlSettings.cs diff --git a/scenes/Remapping/Remap.tscn b/Scenes/UI/Remapping/Remap.tscn similarity index 89% rename from scenes/Remapping/Remap.tscn rename to Scenes/UI/Remapping/Remap.tscn index 99227dda..09c9c8b2 100644 --- a/scenes/Remapping/Remap.tscn +++ b/Scenes/UI/Remapping/Remap.tscn @@ -1,12 +1,12 @@ [gd_scene load_steps=8 format=3 uid="uid://bew23sumjs0fg"] -[ext_resource type="Script" path="res://scenes/Remapping/ControlSettings.cs" id="1_ir12b"] -[ext_resource type="Texture2D" uid="uid://dbjotl0v1ymia" path="res://scenes/BattleDirector/assets/BattleFrame1.png" id="3_4uyjb"] -[ext_resource type="Texture2D" uid="uid://xtygvpk7s8e4" path="res://scenes/NoteManager/assets/outline_white.png" id="4_se2m3"] -[ext_resource type="Texture2D" uid="uid://cr6wtf6j6dcfg" path="res://scenes/Remapping/assets/Arrow_Left_Key_Light.png" id="5_xn13c"] -[ext_resource type="Texture2D" uid="uid://q14p8ypgc43t" path="res://scenes/Remapping/assets/Arrow_Down_Key_Light.png" id="6_qrl0g"] -[ext_resource type="Texture2D" uid="uid://p06451gq2ujc" path="res://scenes/Remapping/assets/Arrow_Up_Key_Light.png" id="7_1a2jy"] -[ext_resource type="Texture2D" uid="uid://dvlekute37smy" path="res://scenes/Remapping/assets/Arrow_Right_Key_Light.png" id="8_o7swo"] +[ext_resource type="Script" path="res://Scenes/UI/Remapping/ControlSettings.cs" id="1_ir12b"] +[ext_resource type="Texture2D" uid="uid://dbjotl0v1ymia" path="res://SharedAssets/BattleFrame1.png" id="3_4uyjb"] +[ext_resource type="Texture2D" uid="uid://xtygvpk7s8e4" path="res://SharedAssets/NoteArrow_Black_Outline.png" id="4_se2m3"] +[ext_resource type="Texture2D" uid="uid://cr6wtf6j6dcfg" path="res://Scenes/UI/Remapping/Assets/Arrow_Left_Key_Light.png" id="5_xn13c"] +[ext_resource type="Texture2D" uid="uid://q14p8ypgc43t" path="res://Scenes/UI/Remapping/Assets/Arrow_Down_Key_Light.png" id="6_qrl0g"] +[ext_resource type="Texture2D" uid="uid://p06451gq2ujc" path="res://Scenes/UI/Remapping/Assets/Arrow_Up_Key_Light.png" id="7_1a2jy"] +[ext_resource type="Texture2D" uid="uid://dvlekute37smy" path="res://Scenes/UI/Remapping/Assets/Arrow_Right_Key_Light.png" id="8_o7swo"] [node name="Remap" type="Node2D" node_paths=PackedStringArray("leftKey", "rightKey", "upKey", "downKey", "_closeButton")] process_mode = 3 diff --git a/scenes/SceneTransitions/assets/2d_lights_and_shadows_neutral_point_light.webp b/Scenes/UI/TitleScreen/Assets/2D_Shadow_Map.webp similarity index 100% rename from scenes/SceneTransitions/assets/2d_lights_and_shadows_neutral_point_light.webp rename to Scenes/UI/TitleScreen/Assets/2D_Shadow_Map.webp diff --git a/Scenes/UI/TitleScreen/Assets/2D_Shadow_Map.webp.import b/Scenes/UI/TitleScreen/Assets/2D_Shadow_Map.webp.import new file mode 100644 index 00000000..4ad1e0b5 --- /dev/null +++ b/Scenes/UI/TitleScreen/Assets/2D_Shadow_Map.webp.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://iqbqsiyjd3uq" +path="res://.godot/imported/2D_Shadow_Map.webp-4b8bd1396bf43482daedcda86cc73f1e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Scenes/UI/TitleScreen/Assets/2D_Shadow_Map.webp" +dest_files=["res://.godot/imported/2D_Shadow_Map.webp-4b8bd1396bf43482daedcda86cc73f1e.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/scenes/SceneTransitions/assets/backTree.png b/Scenes/UI/TitleScreen/Assets/Background_BackTree.png similarity index 100% rename from scenes/SceneTransitions/assets/backTree.png rename to Scenes/UI/TitleScreen/Assets/Background_BackTree.png diff --git a/scenes/SceneTransitions/assets/backTree.png.import b/Scenes/UI/TitleScreen/Assets/Background_BackTree.png.import similarity index 67% rename from scenes/SceneTransitions/assets/backTree.png.import rename to Scenes/UI/TitleScreen/Assets/Background_BackTree.png.import index e3af798a..ca73f218 100644 --- a/scenes/SceneTransitions/assets/backTree.png.import +++ b/Scenes/UI/TitleScreen/Assets/Background_BackTree.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://de2j543j83hmh" -path="res://.godot/imported/backTree.png-cd101cfcfd1c146ab0ea88e585106ef0.ctex" +path="res://.godot/imported/Background_BackTree.png-34ec1466f02ede9e4fa1137087ff5280.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/SceneTransitions/assets/backTree.png" -dest_files=["res://.godot/imported/backTree.png-cd101cfcfd1c146ab0ea88e585106ef0.ctex"] +source_file="res://Scenes/UI/TitleScreen/Assets/Background_BackTree.png" +dest_files=["res://.godot/imported/Background_BackTree.png-34ec1466f02ede9e4fa1137087ff5280.ctex"] [params] diff --git a/scenes/SceneTransitions/assets/frontTree.png b/Scenes/UI/TitleScreen/Assets/Background_FrontTree.png similarity index 100% rename from scenes/SceneTransitions/assets/frontTree.png rename to Scenes/UI/TitleScreen/Assets/Background_FrontTree.png diff --git a/scenes/SceneTransitions/assets/frontTree.png.import b/Scenes/UI/TitleScreen/Assets/Background_FrontTree.png.import similarity index 67% rename from scenes/SceneTransitions/assets/frontTree.png.import rename to Scenes/UI/TitleScreen/Assets/Background_FrontTree.png.import index 9cc04921..be24437d 100644 --- a/scenes/SceneTransitions/assets/frontTree.png.import +++ b/Scenes/UI/TitleScreen/Assets/Background_FrontTree.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dat1eoyl3do4e" -path="res://.godot/imported/frontTree.png-663f1ab9e520c56ea3ffdb26bdcb9d48.ctex" +path="res://.godot/imported/Background_FrontTree.png-e3154c7490a9bd01245c1f64710b66a0.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/SceneTransitions/assets/frontTree.png" -dest_files=["res://.godot/imported/frontTree.png-663f1ab9e520c56ea3ffdb26bdcb9d48.ctex"] +source_file="res://Scenes/UI/TitleScreen/Assets/Background_FrontTree.png" +dest_files=["res://.godot/imported/Background_FrontTree.png-e3154c7490a9bd01245c1f64710b66a0.ctex"] [params] diff --git a/scenes/SceneTransitions/assets/midTree.png b/Scenes/UI/TitleScreen/Assets/Background_MidTree.png similarity index 100% rename from scenes/SceneTransitions/assets/midTree.png rename to Scenes/UI/TitleScreen/Assets/Background_MidTree.png diff --git a/scenes/SceneTransitions/assets/midTree.png.import b/Scenes/UI/TitleScreen/Assets/Background_MidTree.png.import similarity index 68% rename from scenes/SceneTransitions/assets/midTree.png.import rename to Scenes/UI/TitleScreen/Assets/Background_MidTree.png.import index f7a39eb3..6918fe47 100644 --- a/scenes/SceneTransitions/assets/midTree.png.import +++ b/Scenes/UI/TitleScreen/Assets/Background_MidTree.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://d3rxic3mi8jwb" -path="res://.godot/imported/midTree.png-0e1d74935bdde1388be14d3c45e05784.ctex" +path="res://.godot/imported/Background_MidTree.png-939b82845c3f3610a7685b8eb46a89a5.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/SceneTransitions/assets/midTree.png" -dest_files=["res://.godot/imported/midTree.png-0e1d74935bdde1388be14d3c45e05784.ctex"] +source_file="res://Scenes/UI/TitleScreen/Assets/Background_MidTree.png" +dest_files=["res://.godot/imported/Background_MidTree.png-939b82845c3f3610a7685b8eb46a89a5.ctex"] [params] diff --git a/scenes/SceneTransitions/assets/moon.png b/Scenes/UI/TitleScreen/Assets/Background_Moon.png similarity index 100% rename from scenes/SceneTransitions/assets/moon.png rename to Scenes/UI/TitleScreen/Assets/Background_Moon.png diff --git a/scenes/SceneTransitions/assets/moon.png.import b/Scenes/UI/TitleScreen/Assets/Background_Moon.png.import similarity index 68% rename from scenes/SceneTransitions/assets/moon.png.import rename to Scenes/UI/TitleScreen/Assets/Background_Moon.png.import index 7c1fbdca..741c4e09 100644 --- a/scenes/SceneTransitions/assets/moon.png.import +++ b/Scenes/UI/TitleScreen/Assets/Background_Moon.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bj8dxrlwuwrv4" -path="res://.godot/imported/moon.png-ae76e6a309e1cf0426fcf886212d383f.ctex" +path="res://.godot/imported/Background_Moon.png-a1baea55b2e52d17f012f0bd52fc2722.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/SceneTransitions/assets/moon.png" -dest_files=["res://.godot/imported/moon.png-ae76e6a309e1cf0426fcf886212d383f.ctex"] +source_file="res://Scenes/UI/TitleScreen/Assets/Background_Moon.png" +dest_files=["res://.godot/imported/Background_Moon.png-a1baea55b2e52d17f012f0bd52fc2722.ctex"] [params] diff --git a/scenes/SceneTransitions/assets/background.png b/Scenes/UI/TitleScreen/Assets/Background_Sky.png similarity index 100% rename from scenes/SceneTransitions/assets/background.png rename to Scenes/UI/TitleScreen/Assets/Background_Sky.png diff --git a/scenes/SceneTransitions/assets/background.png.import b/Scenes/UI/TitleScreen/Assets/Background_Sky.png.import similarity index 69% rename from scenes/SceneTransitions/assets/background.png.import rename to Scenes/UI/TitleScreen/Assets/Background_Sky.png.import index 11c12897..34ed1c61 100644 --- a/scenes/SceneTransitions/assets/background.png.import +++ b/Scenes/UI/TitleScreen/Assets/Background_Sky.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ruxgynq6bc1m" -path="res://.godot/imported/background.png-a073667c4584bab9ff61632bc4578b1d.ctex" +path="res://.godot/imported/Background_Sky.png-2287c9572e3b33cdfded4fecf0575b3b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/SceneTransitions/assets/background.png" -dest_files=["res://.godot/imported/background.png-a073667c4584bab9ff61632bc4578b1d.ctex"] +source_file="res://Scenes/UI/TitleScreen/Assets/Background_Sky.png" +dest_files=["res://.godot/imported/Background_Sky.png-2287c9572e3b33cdfded4fecf0575b3b.ctex"] [params] diff --git a/scenes/SceneTransitions/assets/TitleFont.gdshader b/Scenes/UI/TitleScreen/Assets/TitleFont.gdshader similarity index 100% rename from scenes/SceneTransitions/assets/TitleFont.gdshader rename to Scenes/UI/TitleScreen/Assets/TitleFont.gdshader diff --git a/scenes/SceneTransitions/assets/font.TTF b/Scenes/UI/TitleScreen/Assets/TitleScreenFont.TTF similarity index 100% rename from scenes/SceneTransitions/assets/font.TTF rename to Scenes/UI/TitleScreen/Assets/TitleScreenFont.TTF diff --git a/scenes/SceneTransitions/assets/font.TTF.import b/Scenes/UI/TitleScreen/Assets/TitleScreenFont.TTF.import similarity index 69% rename from scenes/SceneTransitions/assets/font.TTF.import rename to Scenes/UI/TitleScreen/Assets/TitleScreenFont.TTF.import index 0990f323..0290ce84 100644 --- a/scenes/SceneTransitions/assets/font.TTF.import +++ b/Scenes/UI/TitleScreen/Assets/TitleScreenFont.TTF.import @@ -3,12 +3,12 @@ importer="font_data_dynamic" type="FontFile" uid="uid://dlwfb7kb7pd76" -path="res://.godot/imported/font.TTF-d7f862dc1f5e4b5cfedf614b37a87c94.fontdata" +path="res://.godot/imported/TitleScreenFont.TTF-03d6a62f30e72d635244aa6624ad94aa.fontdata" [deps] -source_file="res://scenes/SceneTransitions/assets/font.TTF" -dest_files=["res://.godot/imported/font.TTF-d7f862dc1f5e4b5cfedf614b37a87c94.fontdata"] +source_file="res://Scenes/UI/TitleScreen/Assets/TitleScreenFont.TTF" +dest_files=["res://.godot/imported/TitleScreenFont.TTF-03d6a62f30e72d635244aa6624ad94aa.fontdata"] [params] diff --git a/scenes/SceneTransitions/assets/titleSong.ogg b/Scenes/UI/TitleScreen/Assets/TitleSong.ogg similarity index 100% rename from scenes/SceneTransitions/assets/titleSong.ogg rename to Scenes/UI/TitleScreen/Assets/TitleSong.ogg diff --git a/Scenes/UI/TitleScreen/Assets/TitleSong.ogg.import b/Scenes/UI/TitleScreen/Assets/TitleSong.ogg.import new file mode 100644 index 00000000..ad6007b6 --- /dev/null +++ b/Scenes/UI/TitleScreen/Assets/TitleSong.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://b52r6rgf4qsdr" +path="res://.godot/imported/TitleSong.ogg-894bb65678ae34703fbf3d156bf74fb9.oggvorbisstr" + +[deps] + +source_file="res://Scenes/UI/TitleScreen/Assets/TitleSong.ogg" +dest_files=["res://.godot/imported/TitleSong.ogg-894bb65678ae34703fbf3d156bf74fb9.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/scenes/SceneTransitions/assets/transparentStars.gdshader b/Scenes/UI/TitleScreen/Assets/TransparentStars.gdshader similarity index 100% rename from scenes/SceneTransitions/assets/transparentStars.gdshader rename to Scenes/UI/TitleScreen/Assets/TransparentStars.gdshader diff --git a/scenes/SceneTransitions/testTransition.tscn b/Scenes/UI/TitleScreen/SceneChange.tscn similarity index 86% rename from scenes/SceneTransitions/testTransition.tscn rename to Scenes/UI/TitleScreen/SceneChange.tscn index c0d87fa2..431bbe98 100644 --- a/scenes/SceneTransitions/testTransition.tscn +++ b/Scenes/UI/TitleScreen/SceneChange.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://dbeplni2du158"] -[ext_resource type="Script" path="res://scenes/SceneTransitions/scripts/SceneChange.cs" id="1_n6d5u"] +[ext_resource type="Script" path="res://Scenes/UI/TitleScreen/Scripts/SceneChange.cs" id="1_n6d5u"] [node name="Control" type="Control"] layout_mode = 3 diff --git a/scenes/SceneTransitions/scripts/SceneChange.cs b/Scenes/UI/TitleScreen/Scripts/SceneChange.cs similarity index 100% rename from scenes/SceneTransitions/scripts/SceneChange.cs rename to Scenes/UI/TitleScreen/Scripts/SceneChange.cs diff --git a/scenes/SceneTransitions/scripts/TitleScreen.cs b/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs similarity index 91% rename from scenes/SceneTransitions/scripts/TitleScreen.cs rename to Scenes/UI/TitleScreen/Scripts/TitleScreen.cs index 90e9fd56..d9d8ff18 100644 --- a/scenes/SceneTransitions/scripts/TitleScreen.cs +++ b/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs @@ -25,7 +25,7 @@ public override void _Process(double delta) private void OpenOptions() { - OptionsMenu optionsMenu = GD.Load("res://scenes/Options/OptionsMenu.tscn") + OptionsMenu optionsMenu = GD.Load("res://Scenes/UI/Options/OptionsMenu.tscn") .Instantiate(); AddChild(optionsMenu); optionsMenu.OpenMenu(this); diff --git a/scenes/SceneTransitions/TitleScreen.tscn b/Scenes/UI/TitleScreen/TitleScreen.tscn similarity index 85% rename from scenes/SceneTransitions/TitleScreen.tscn rename to Scenes/UI/TitleScreen/TitleScreen.tscn index ac913199..55ba585a 100644 --- a/scenes/SceneTransitions/TitleScreen.tscn +++ b/Scenes/UI/TitleScreen/TitleScreen.tscn @@ -1,21 +1,21 @@ [gd_scene load_steps=21 format=3 uid="uid://bm41yti6ij2j"] [ext_resource type="Texture2D" uid="uid://b0tvsewgnf2x7" path="res://icon.svg" id="1_r5xy8"] -[ext_resource type="Script" path="res://scenes/SceneTransitions/scripts/TitleScreen.cs" id="1_r22ha"] -[ext_resource type="Texture2D" uid="uid://ruxgynq6bc1m" path="res://scenes/SceneTransitions/assets/background.png" id="1_txix1"] -[ext_resource type="Texture2D" uid="uid://de2j543j83hmh" path="res://scenes/SceneTransitions/assets/backTree.png" id="2_4luva"] -[ext_resource type="Script" path="res://scenes/SceneTransitions/scripts/SceneChange.cs" id="2_7f3m6"] -[ext_resource type="Texture2D" uid="uid://b6fkei0i83vte" path="res://scenes/BattleDirector/assets/Character1.png" id="2_cf582"] -[ext_resource type="Texture2D" uid="uid://iqbqsiyjd3uq" path="res://scenes/SceneTransitions/assets/2d_lights_and_shadows_neutral_point_light.webp" id="2_kw6qk"] -[ext_resource type="Texture2D" uid="uid://dat1eoyl3do4e" path="res://scenes/SceneTransitions/assets/frontTree.png" id="3_hvvt6"] -[ext_resource type="Texture2D" uid="uid://d3rxic3mi8jwb" path="res://scenes/SceneTransitions/assets/midTree.png" id="4_ui8kj"] -[ext_resource type="Texture2D" uid="uid://bj8dxrlwuwrv4" path="res://scenes/SceneTransitions/assets/moon.png" id="5_squvs"] -[ext_resource type="Shader" path="res://scenes/SceneTransitions/assets/transparentStars.gdshader" id="5_x5dhk"] -[ext_resource type="FontFile" uid="uid://dlwfb7kb7pd76" path="res://scenes/SceneTransitions/assets/font.TTF" id="8_gkfev"] -[ext_resource type="Texture2D" uid="uid://hfxynr5jdgsp" path="res://scenes/NoteManager/assets/new_arrow.png" id="10_4hnj8"] -[ext_resource type="Shader" path="res://scenes/SceneTransitions/assets/TitleFont.gdshader" id="11_ht0dv"] -[ext_resource type="PackedScene" uid="uid://bi5iqbwpsd381" path="res://scenes/Puppets/Enemies/BossBlood/Boss1.tscn" id="12_lng3a"] -[ext_resource type="PackedScene" uid="uid://uvlux4t6h5de" path="res://scenes/Puppets/Enemies/Parasifly/Parasifly.tscn" id="13_j3xa4"] +[ext_resource type="Script" path="res://Scenes/UI/TitleScreen/Scripts/TitleScreen.cs" id="1_r22ha"] +[ext_resource type="Texture2D" uid="uid://ruxgynq6bc1m" path="res://Scenes/UI/TitleScreen/Assets/Background_Sky.png" id="1_txix1"] +[ext_resource type="Texture2D" uid="uid://de2j543j83hmh" path="res://Scenes/UI/TitleScreen/Assets/Background_BackTree.png" id="2_4luva"] +[ext_resource type="Script" path="res://Scenes/UI/TitleScreen/Scripts/SceneChange.cs" id="2_7f3m6"] +[ext_resource type="Texture2D" uid="uid://b6fkei0i83vte" path="res://SharedAssets/Character1.png" id="2_cf582"] +[ext_resource type="Texture2D" uid="uid://iqbqsiyjd3uq" path="res://Scenes/UI/TitleScreen/Assets/2D_Shadow_Map.webp" id="2_kw6qk"] +[ext_resource type="Texture2D" uid="uid://dat1eoyl3do4e" path="res://Scenes/UI/TitleScreen/Assets/Background_FrontTree.png" id="3_hvvt6"] +[ext_resource type="Texture2D" uid="uid://d3rxic3mi8jwb" path="res://Scenes/UI/TitleScreen/Assets/Background_MidTree.png" id="4_ui8kj"] +[ext_resource type="Texture2D" uid="uid://bj8dxrlwuwrv4" path="res://Scenes/UI/TitleScreen/Assets/Background_Moon.png" id="5_squvs"] +[ext_resource type="Shader" path="res://Scenes/UI/TitleScreen/Assets/TransparentStars.gdshader" id="5_x5dhk"] +[ext_resource type="FontFile" uid="uid://dlwfb7kb7pd76" path="res://Scenes/UI/TitleScreen/Assets/TitleScreenFont.TTF" id="8_gkfev"] +[ext_resource type="Texture2D" uid="uid://hfxynr5jdgsp" path="res://Scenes/NoteManager/Assets/new_arrow.png" id="10_4hnj8"] +[ext_resource type="Shader" path="res://Scenes/UI/TitleScreen/Assets/TitleFont.gdshader" id="11_ht0dv"] +[ext_resource type="PackedScene" uid="uid://bi5iqbwpsd381" path="res://Scenes/Puppets/Enemies/BossBlood/Boss1.tscn" id="12_lng3a"] +[ext_resource type="PackedScene" uid="uid://uvlux4t6h5de" path="res://Scenes/Puppets/Enemies/Parasifly/Parasifly.tscn" id="13_j3xa4"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_xhbhh"] @@ -225,15 +225,10 @@ text = "TITLE_OPTIONS" [node name="EnemPuppet" parent="." instance=ExtResource("12_lng3a")] visible = false position = Vector2(37, 186) -StartPos = Vector2(40, 150) -InitScale = Vector2(1, 1) -hideHealth = true [node name="EnemPuppet2" parent="." instance=ExtResource("13_j3xa4")] visible = false position = Vector2(572, 167) -StartPos = Vector2(572, 167) -hideHealth = true [node name="GPUParticles2D" type="GPUParticles2D" parent="."] z_index = -1 diff --git a/scenes/BattleDirector/assets/bgupdate.png b/SharedAssets/BackGround_Full.png similarity index 100% rename from scenes/BattleDirector/assets/bgupdate.png rename to SharedAssets/BackGround_Full.png diff --git a/scenes/BattleDirector/assets/bgupdate.png.import b/SharedAssets/BackGround_Full.png.import similarity index 70% rename from scenes/BattleDirector/assets/bgupdate.png.import rename to SharedAssets/BackGround_Full.png.import index 905115ed..d78c59e4 100644 --- a/scenes/BattleDirector/assets/bgupdate.png.import +++ b/SharedAssets/BackGround_Full.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://qhwve7fik4do" -path="res://.godot/imported/bgupdate.png-7e94b2cdf31dd024c5ed51b6fbe048af.ctex" +path="res://.godot/imported/BackGround_Full.png-802471529d8c3edc9975616d8385b689.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/BattleDirector/assets/bgupdate.png" -dest_files=["res://.godot/imported/bgupdate.png-7e94b2cdf31dd024c5ed51b6fbe048af.ctex"] +source_file="res://SharedAssets/BackGround_Full.png" +dest_files=["res://.godot/imported/BackGround_Full.png-802471529d8c3edc9975616d8385b689.ctex"] [params] diff --git a/scenes/BattleDirector/assets/BattleFrame1.png b/SharedAssets/BattleFrame1.png similarity index 100% rename from scenes/BattleDirector/assets/BattleFrame1.png rename to SharedAssets/BattleFrame1.png diff --git a/scenes/BattleDirector/assets/BattleFrame1.png.import b/SharedAssets/BattleFrame1.png.import similarity index 69% rename from scenes/BattleDirector/assets/BattleFrame1.png.import rename to SharedAssets/BattleFrame1.png.import index 2e4b1b49..cfa7a461 100644 --- a/scenes/BattleDirector/assets/BattleFrame1.png.import +++ b/SharedAssets/BattleFrame1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dbjotl0v1ymia" -path="res://.godot/imported/BattleFrame1.png-09281473fcee09b42b1810f8f32b75f4.ctex" +path="res://.godot/imported/BattleFrame1.png-10082b1daa6e33f9425baf8ebe6a3397.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/BattleDirector/assets/BattleFrame1.png" -dest_files=["res://.godot/imported/BattleFrame1.png-09281473fcee09b42b1810f8f32b75f4.ctex"] +source_file="res://SharedAssets/BattleFrame1.png" +dest_files=["res://.godot/imported/BattleFrame1.png-10082b1daa6e33f9425baf8ebe6a3397.ctex"] [params] diff --git a/scenes/BattleDirector/assets/Character1.png b/SharedAssets/Character1.png similarity index 100% rename from scenes/BattleDirector/assets/Character1.png rename to SharedAssets/Character1.png diff --git a/scenes/BattleDirector/assets/Character1.png.import b/SharedAssets/Character1.png.import similarity index 70% rename from scenes/BattleDirector/assets/Character1.png.import rename to SharedAssets/Character1.png.import index 8adcfe54..9caedf43 100644 --- a/scenes/BattleDirector/assets/Character1.png.import +++ b/SharedAssets/Character1.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b6fkei0i83vte" -path="res://.godot/imported/Character1.png-d73d4a980ad79d80867b72bd7a029fb4.ctex" +path="res://.godot/imported/Character1.png-9c88f1d06b1ffc4dbced278148159a30.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/BattleDirector/assets/Character1.png" -dest_files=["res://.godot/imported/Character1.png-d73d4a980ad79d80867b72bd7a029fb4.ctex"] +source_file="res://SharedAssets/Character1.png" +dest_files=["res://.godot/imported/Character1.png-9c88f1d06b1ffc4dbced278148159a30.ctex"] [params] diff --git a/SharedAssets/NoteArrow_Black_Outline.png b/SharedAssets/NoteArrow_Black_Outline.png new file mode 100644 index 0000000000000000000000000000000000000000..f26bc0a32b3c46cf3f66c733780eafd266ea6e34 GIT binary patch literal 60041 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

= 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"res://scenes/Puppets/PlayerPuppet.tscn") + Player = GD.Load("res://Scenes/Puppets/PlayerPuppet.tscn") .Instantiate(); AddChild(Player); Player.Defeated += CheckBattleStatus; @@ -233,7 +233,7 @@ private void BattleLost() { Audio.StreamPaused = true; SaveSystem.ClearSave(); - AddChild(GD.Load("res://scenes/UI/EndScreen.tscn").Instantiate()); + AddChild(GD.Load("res://Scenes/UI/EndScreen.tscn").Instantiate()); GetTree().Paused = true; } diff --git a/scenes/BattleDirector/scripts/NoteQueueParticlesFactory.cs b/scenes/BattleDirector/scripts/NoteQueueParticlesFactory.cs index dfe3af60..ba1b6d4b 100644 --- a/scenes/BattleDirector/scripts/NoteQueueParticlesFactory.cs +++ b/scenes/BattleDirector/scripts/NoteQueueParticlesFactory.cs @@ -12,7 +12,7 @@ public static GpuParticles2D NoteParticles( ) { particlesScene ??= GD.Load( - "res://scenes/BattleDirector/notePoofParticles.tscn" + "res://Scenes/BattleDirector/NotePoofParticles.tscn" ); GpuParticles2D particles = particlesScene.Instantiate(); diff --git a/scenes/ChartViewport/ChartViewport.tscn b/scenes/ChartViewport/ChartViewport.tscn index 565a7096..db3c8af3 100644 --- a/scenes/ChartViewport/ChartViewport.tscn +++ b/scenes/ChartViewport/ChartViewport.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=7 format=3 uid="uid://dfevfib11kou1"] -[ext_resource type="Script" path="res://scenes/ChartViewport/scripts/ChartManager.cs" id="1_ruh2l"] -[ext_resource type="Texture2D" uid="uid://cp78odda2doab" path="res://scenes/ChartViewport/LoopMarker.png" id="2_q5cjc"] -[ext_resource type="Script" path="res://scenes/ChartViewport/scripts/Loopable.cs" id="3_5u57h"] -[ext_resource type="PackedScene" uid="uid://bn8txx53xlguw" path="res://scenes/NoteManager/note_manager.tscn" id="4_fd5fw"] -[ext_resource type="Shader" path="res://scenes/ChartViewport/StarryNight.gdshader" id="5_kqrxg"] +[ext_resource type="Script" path="res://Scenes/ChartViewport/Scripts/ChartManager.cs" id="1_ruh2l"] +[ext_resource type="Texture2D" uid="uid://cp78odda2doab" path="res://Scenes/ChartViewport/LoopMarker.png" id="2_q5cjc"] +[ext_resource type="Script" path="res://Scenes/ChartViewport/Scripts/Loopable.cs" id="3_5u57h"] +[ext_resource type="PackedScene" uid="uid://bn8txx53xlguw" path="res://Scenes/NoteManager/NoteManager.tscn" id="4_fd5fw"] +[ext_resource type="Shader" path="res://SharedAssets/StarryNight.gdshader" id="5_kqrxg"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_5uw0y"] shader = ExtResource("5_kqrxg") diff --git a/scenes/ChartViewport/LoopMarker.png.import b/scenes/ChartViewport/LoopMarker.png.import index dd4e29e8..cb40aa84 100644 --- a/scenes/ChartViewport/LoopMarker.png.import +++ b/scenes/ChartViewport/LoopMarker.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cp78odda2doab" -path="res://.godot/imported/LoopMarker.png-01682285489df860e67dba1278ff087a.ctex" +path="res://.godot/imported/LoopMarker.png-3a64c93c568eb883d6e75352e54af2e2.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/ChartViewport/LoopMarker.png" -dest_files=["res://.godot/imported/LoopMarker.png-01682285489df860e67dba1278ff087a.ctex"] +source_file="res://Scenes/ChartViewport/LoopMarker.png" +dest_files=["res://.godot/imported/LoopMarker.png-3a64c93c568eb883d6e75352e54af2e2.ctex"] [params] diff --git a/scenes/ChartViewport/scripts/ChartManager.cs b/scenes/ChartViewport/scripts/ChartManager.cs index 8df9129b..bf146b12 100644 --- a/scenes/ChartViewport/scripts/ChartManager.cs +++ b/scenes/ChartViewport/scripts/ChartManager.cs @@ -108,7 +108,7 @@ public NoteArrow AddArrowToLane( private NoteArrow CreateNote(ArrowType arrow, Note note, int beat = 0, int loopOffset = 0) { - var noteScene = ResourceLoader.Load("res://scenes/NoteManager/note.tscn"); + var noteScene = ResourceLoader.Load("res://Scenes/NoteManager/NoteArrow.tscn"); NoteArrow newArrow = noteScene.Instantiate(); newArrow.Bounds = (float)( beat / TrueBeatsPerLoop * (ChartLength / 2) + loopOffset * (ChartLength / 2) diff --git a/scenes/ChestScene/ChestScene.cs b/scenes/ChestScene/ChestScene.cs index cca80eac..d8a2f9a0 100644 --- a/scenes/ChestScene/ChestScene.cs +++ b/scenes/ChestScene/ChestScene.cs @@ -11,7 +11,7 @@ public partial class ChestScene : Node2D public override void _Ready() { - Player = GD.Load("res://scenes/Puppets/PlayerPuppet.tscn") + Player = GD.Load("res://Scenes/Puppets/PlayerPuppet.tscn") .Instantiate(); AddChild(Player); diff --git a/scenes/ChestScene/ChestScene.tscn b/scenes/ChestScene/ChestScene.tscn index 2d5b32f1..895636a4 100644 --- a/scenes/ChestScene/ChestScene.tscn +++ b/scenes/ChestScene/ChestScene.tscn @@ -1,12 +1,12 @@ [gd_scene load_steps=9 format=3 uid="uid://c4vmb783d3v03"] -[ext_resource type="Script" path="res://scenes/ChestScene/ChestScene.cs" id="1_ardd2"] +[ext_resource type="Script" path="res://Scenes/ChestScene/ChestScene.cs" id="1_ardd2"] [ext_resource type="AudioStream" uid="uid://be5ial13ynf3o" path="res://Audio/Song1.ogg" id="2_x78jo"] -[ext_resource type="Script" path="res://scenes/UI/scripts/MenuModule.cs" id="3_5uvci"] -[ext_resource type="Shader" path="res://scenes/ChartViewport/StarryNight.gdshader" id="5_whthd"] -[ext_resource type="Texture2D" uid="uid://qhwve7fik4do" path="res://scenes/BattleDirector/assets/bgupdate.png" id="6_37nar"] -[ext_resource type="Texture2D" uid="uid://d0ywqw1j1k71v" path="res://scenes/ChestScene/assets/Chest.png" id="6_58hf4"] -[ext_resource type="Texture2D" uid="uid://dbjotl0v1ymia" path="res://scenes/BattleDirector/assets/BattleFrame1.png" id="7_kkck7"] +[ext_resource type="Script" path="res://Scenes/UI/Scripts/MenuModule.cs" id="3_5uvci"] +[ext_resource type="Shader" path="res://SharedAssets/StarryNight.gdshader" id="5_whthd"] +[ext_resource type="Texture2D" uid="uid://qhwve7fik4do" path="res://SharedAssets/BackGround_Full.png" id="6_37nar"] +[ext_resource type="Texture2D" uid="uid://d0ywqw1j1k71v" path="res://Scenes/ChestScene/Assets/Chest.png" id="6_58hf4"] +[ext_resource type="Texture2D" uid="uid://dbjotl0v1ymia" path="res://SharedAssets/BattleFrame1.png" id="7_kkck7"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_8x17a"] shader = ExtResource("5_whthd") diff --git a/scenes/ChestScene/assets/Chest.png.import b/scenes/ChestScene/assets/Chest.png.import index 2f5a70d2..248995bf 100644 --- a/scenes/ChestScene/assets/Chest.png.import +++ b/scenes/ChestScene/assets/Chest.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://d0ywqw1j1k71v" -path="res://.godot/imported/Chest.png-fb3cdf8f34ea60a7ae2cb63e4d6ad62a.ctex" +path="res://.godot/imported/Chest.png-cad54acb66da27b26ce6e2198073849a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/ChestScene/assets/Chest.png" -dest_files=["res://.godot/imported/Chest.png-fb3cdf8f34ea60a7ae2cb63e4d6ad62a.ctex"] +source_file="res://Scenes/ChestScene/Assets/Chest.png" +dest_files=["res://.godot/imported/Chest.png-cad54acb66da27b26ce6e2198073849a.ctex"] [params] diff --git a/scenes/Maps/assets/BattleIcon.png.import b/scenes/Maps/assets/BattleIcon.png.import index 7e2ba8f7..fed4f33d 100644 --- a/scenes/Maps/assets/BattleIcon.png.import +++ b/scenes/Maps/assets/BattleIcon.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://7ius17ox1e70" -path="res://.godot/imported/BattleIcon.png-7774ff140253fc7228adca1e1cc84da5.ctex" +path="res://.godot/imported/BattleIcon.png-7f2aaf8e14988b8f2fe2d26908d82e0b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Maps/assets/BattleIcon.png" -dest_files=["res://.godot/imported/BattleIcon.png-7774ff140253fc7228adca1e1cc84da5.ctex"] +source_file="res://Scenes/Maps/Assets/BattleIcon.png" +dest_files=["res://.godot/imported/BattleIcon.png-7f2aaf8e14988b8f2fe2d26908d82e0b.ctex"] [params] diff --git a/scenes/Maps/assets/BossIcon.png.import b/scenes/Maps/assets/BossIcon.png.import index 8954c123..03a5f053 100644 --- a/scenes/Maps/assets/BossIcon.png.import +++ b/scenes/Maps/assets/BossIcon.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://xwx7j1wufwx1" -path="res://.godot/imported/BossIcon.png-d10acdd0cb08fa24b6fb43e6a501cfba.ctex" +path="res://.godot/imported/BossIcon.png-78fabe547636e3d1de7dad53eb9c2945.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Maps/assets/BossIcon.png" -dest_files=["res://.godot/imported/BossIcon.png-d10acdd0cb08fa24b6fb43e6a501cfba.ctex"] +source_file="res://Scenes/Maps/Assets/BossIcon.png" +dest_files=["res://.godot/imported/BossIcon.png-78fabe547636e3d1de7dad53eb9c2945.ctex"] [params] diff --git a/scenes/Maps/assets/ChestIcon.png.import b/scenes/Maps/assets/ChestIcon.png.import index 7b4992d1..391aae0e 100644 --- a/scenes/Maps/assets/ChestIcon.png.import +++ b/scenes/Maps/assets/ChestIcon.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://othbopej2fym" -path="res://.godot/imported/ChestIcon.png-83b4a439102e920a2f15bc896417dcfc.ctex" +path="res://.godot/imported/ChestIcon.png-bd4d2bdafdfef4375e0242a6557c8462.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/Maps/assets/ChestIcon.png" -dest_files=["res://.godot/imported/ChestIcon.png-83b4a439102e920a2f15bc896417dcfc.ctex"] +source_file="res://Scenes/Maps/Assets/ChestIcon.png" +dest_files=["res://.godot/imported/ChestIcon.png-bd4d2bdafdfef4375e0242a6557c8462.ctex"] [params] diff --git a/scenes/Maps/cartographer.tscn b/scenes/Maps/cartographer.tscn index 3fe2121b..e27a0ecf 100644 --- a/scenes/Maps/cartographer.tscn +++ b/scenes/Maps/cartographer.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=5 format=3 uid="uid://cydmo2lbnj1de"] -[ext_resource type="Script" path="res://scenes/Maps/scripts/Cartographer.cs" id="1_u4q3n"] -[ext_resource type="Texture2D" uid="uid://qhwve7fik4do" path="res://scenes/BattleDirector/assets/bgupdate.png" id="2_5g6at"] -[ext_resource type="Script" path="res://scenes/UI/scripts/MenuModule.cs" id="2_cl7v0"] -[ext_resource type="Texture2D" uid="uid://cmc7gcplqnebx" path="res://scenes/Maps/assets/Player.png" id="3_qiprp"] +[ext_resource type="Script" path="res://Scenes/Maps/Scripts/Cartographer.cs" id="1_u4q3n"] +[ext_resource type="Texture2D" uid="uid://qhwve7fik4do" path="res://SharedAssets/BackGround_Full.png" id="2_5g6at"] +[ext_resource type="Script" path="res://Scenes/UI/Scripts/MenuModule.cs" id="2_cl7v0"] +[ext_resource type="Texture2D" uid="uid://cmc7gcplqnebx" path="res://SharedAssets/Player.png" id="3_qiprp"] [node name="Cartographer" type="Node2D" node_paths=PackedStringArray("PlayerSprite")] process_mode = 1 diff --git a/scenes/Maps/scripts/Cartographer.cs b/scenes/Maps/scripts/Cartographer.cs index ae46c130..f653340e 100644 --- a/scenes/Maps/scripts/Cartographer.cs +++ b/scenes/Maps/scripts/Cartographer.cs @@ -97,13 +97,13 @@ private void DrawMapSprite(MapGrid.Room room) switch (room.Type) { case Stages.Battle: - newButton.Icon = (Texture2D)GD.Load("res://scenes/Maps/assets/BattleIcon.png"); + newButton.Icon = (Texture2D)GD.Load("res://Scenes/Maps/Assets/BattleIcon.png"); break; case Stages.Boss: - newButton.Icon = (Texture2D)GD.Load("res://scenes/Maps/assets/BossIcon.png"); + newButton.Icon = (Texture2D)GD.Load("res://Scenes/Maps/Assets/BossIcon.png"); break; case Stages.Chest: - newButton.Icon = (Texture2D)GD.Load("res://scenes/Maps/assets/ChestIcon.png"); + newButton.Icon = (Texture2D)GD.Load("res://Scenes/Maps/Assets/ChestIcon.png"); break; } newButton.ZIndex = 1; @@ -145,7 +145,7 @@ private void EnterStage(int roomIdx, Button button) private void WinStage() { - EndScreen es = GD.Load("res://scenes/UI/EndScreen.tscn") + EndScreen es = GD.Load("res://Scenes/UI/EndScreen.tscn") .Instantiate(); AddChild(es); es.TopLabel.Text = Tr("BATTLE_ROOM_WIN"); diff --git a/scenes/NoteManager/assets/arrow_outline.png.import b/scenes/NoteManager/assets/arrow_outline.png.import index ddce3452..134c5f4d 100644 --- a/scenes/NoteManager/assets/arrow_outline.png.import +++ b/scenes/NoteManager/assets/arrow_outline.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cgq2ar3pdmkac" -path="res://.godot/imported/arrow_outline.png-e6c3a5bad7a7781c2ff5674b6be1d846.ctex" +path="res://.godot/imported/arrow_outline.png-d3292aed5ee5bb5be62a30c7636729d3.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/NoteManager/assets/arrow_outline.png" -dest_files=["res://.godot/imported/arrow_outline.png-e6c3a5bad7a7781c2ff5674b6be1d846.ctex"] +source_file="res://Scenes/NoteManager/Assets/arrow_outline.png" +dest_files=["res://.godot/imported/arrow_outline.png-d3292aed5ee5bb5be62a30c7636729d3.ctex"] [params] diff --git a/scenes/NoteManager/assets/new_arrow.png.import b/scenes/NoteManager/assets/new_arrow.png.import index 621fdc24..0b5af060 100644 --- a/scenes/NoteManager/assets/new_arrow.png.import +++ b/scenes/NoteManager/assets/new_arrow.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://hfxynr5jdgsp" -path="res://.godot/imported/new_arrow.png-39e96431fc9ad4968d5317df07ceec7f.ctex" +path="res://.godot/imported/new_arrow.png-2fd77870f3cfe91b911a08d6dab17842.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://scenes/NoteManager/assets/new_arrow.png" -dest_files=["res://.godot/imported/new_arrow.png-39e96431fc9ad4968d5317df07ceec7f.ctex"] +source_file="res://Scenes/NoteManager/Assets/new_arrow.png" +dest_files=["res://.godot/imported/new_arrow.png-2fd77870f3cfe91b911a08d6dab17842.ctex"] [params] diff --git a/scenes/NoteManager/assets/outline_white.png b/scenes/NoteManager/assets/outline_white.png deleted file mode 100644 index 8dfe2e4ed1d52539ba88cc54e0d51878292a4eb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 607 zcmV-l0-*hgP)Px%8A(JzR9J=WmcOm5FdT)yJiQi)GNNJudPL6x86i>zV1g(UFaQ!GWP$V%y%(TD zlt>J~E8eyB!x#d&*wUDu|tZCjL5i^=Q_@;1yTK;DA+6v$?nEt7R{TuVCmzE2PY zgkfk3l~P1eG?~D!5*eA5Wr

FiX-2VE2(_8F3urc^&|d$Ac(}M#;E9X3YVjC>k}E zbqjE~VB~whT>xFzalhYDN}-e@O;g&oHO6{>kde%QUilQ(> zqgT%0`@R91lkUidkcPUA{g8Qq^tb5Y9o!7q`g%#vJUruIrq0NCVgq?}E$%x&V?S zp=p{$2-xqaILM{H6~bBY9SFVmBuN6W8Un`4_gj(>a> SpriteMappings = new Dictionary< - string, - Dictionary - >() - { - { - "WASD", - new Dictionary() - { - { "left", "res://scenes/Remapping/assets/A_Key_Light.png" }, - { "right", "res://scenes/Remapping/assets/D_Key_Light.png" }, - { "up", "res://scenes/Remapping/assets/W_Key_Light.png" }, - { "down", "res://scenes/Remapping/assets/S_Key_Light.png" }, - } - }, - { - "ARROWS", - new Dictionary() - { - { "left", "res://scenes/Remapping/assets/Arrow_Left_Key_Light.png" }, - { "right", "res://scenes/Remapping/assets/Arrow_Right_Key_Light.png" }, - { "up", "res://scenes/Remapping/assets/Arrow_Up_Key_Light.png" }, - { "down", "res://scenes/Remapping/assets/Arrow_Down_Key_Light.png" }, - } - }, - { - "QWERT", - new Dictionary() - { - { "left", "res://scenes/Remapping/assets/Q_Key_Light.png" }, - { "right", "res://scenes/Remapping/assets/R_Key_Light.png" }, - { "up", "res://scenes/Remapping/assets/W_Key_Light.png" }, - { "down", "res://scenes/Remapping/assets/E_Key_Light.png" }, - } - }, - { - "CONTROLLER", - new Dictionary() - { - { "left", "res://scenes/Remapping/assets/Positional_Prompts_Left.png" }, - { "right", "res://scenes/Remapping/assets/Positional_Prompts_Right.png" }, - { "up", "res://scenes/Remapping/assets/Positional_Prompts_Up.png" }, - { "down", "res://scenes/Remapping/assets/Positional_Prompts_Down.png" }, - } - }, - }; -} diff --git a/scenes/SceneTransitions/assets/2d_lights_and_shadows_neutral_point_light.webp.import b/scenes/SceneTransitions/assets/2d_lights_and_shadows_neutral_point_light.webp.import deleted file mode 100644 index 25babd51..00000000 --- a/scenes/SceneTransitions/assets/2d_lights_and_shadows_neutral_point_light.webp.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://iqbqsiyjd3uq" -path="res://.godot/imported/2d_lights_and_shadows_neutral_point_light.webp-a26377e35c908025509b55f545c2944c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://scenes/SceneTransitions/assets/2d_lights_and_shadows_neutral_point_light.webp" -dest_files=["res://.godot/imported/2d_lights_and_shadows_neutral_point_light.webp-a26377e35c908025509b55f545c2944c.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/scenes/SceneTransitions/assets/titleSong.ogg.import b/scenes/SceneTransitions/assets/titleSong.ogg.import deleted file mode 100644 index 0c631fc5..00000000 --- a/scenes/SceneTransitions/assets/titleSong.ogg.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="oggvorbisstr" -type="AudioStreamOggVorbis" -uid="uid://b52r6rgf4qsdr" -path="res://.godot/imported/titleSong.ogg-9b2a968ab90fbc0d5b93d6100fb323d4.oggvorbisstr" - -[deps] - -source_file="res://scenes/SceneTransitions/assets/titleSong.ogg" -dest_files=["res://.godot/imported/titleSong.ogg-9b2a968ab90fbc0d5b93d6100fb323d4.oggvorbisstr"] - -[params] - -loop=true -loop_offset=0.0 -bpm=0.0 -beat_count=0 -bar_beats=4 diff --git a/scenes/UI/EndScreen.tscn b/scenes/UI/EndScreen.tscn index f4aa0416..b5255557 100644 --- a/scenes/UI/EndScreen.tscn +++ b/scenes/UI/EndScreen.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://hjho5n2f8rkf"] -[ext_resource type="Script" path="res://scenes/UI/scripts/EndScreen.cs" id="1_37m3y"] +[ext_resource type="Script" path="res://Scenes/UI/Scripts/EndScreen.cs" id="1_37m3y"] [node name="CanvasLayer" type="CanvasLayer" node_paths=PackedStringArray("buttons", "TopLabel")] process_mode = 2 diff --git a/scenes/UI/Pause.tscn b/scenes/UI/Pause.tscn index eefb1b39..bd768541 100644 --- a/scenes/UI/Pause.tscn +++ b/scenes/UI/Pause.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://dmfk0csl7cd27"] -[ext_resource type="Script" path="res://scenes/UI/scripts/PauseMenu.cs" id="1_6jc8n"] +[ext_resource type="Script" path="res://Scenes/UI/Scripts/PauseMenu.cs" id="1_6jc8n"] [node name="PauseMenu" type="Control" node_paths=PackedStringArray("pauseButtons")] process_mode = 2 diff --git a/scenes/UI/RewardSelectionUI.tscn b/scenes/UI/RewardSelectionUI.tscn index 8502bdf4..3a13753d 100644 --- a/scenes/UI/RewardSelectionUI.tscn +++ b/scenes/UI/RewardSelectionUI.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://c6icx2yriud6y"] -[ext_resource type="Script" path="res://scenes/UI/scripts/RewardSelect.cs" id="1_1m6an"] +[ext_resource type="Script" path="res://Scenes/UI/Scripts/RewardSelect.cs" id="1_1m6an"] [node name="CanvasLayer" type="CanvasLayer" node_paths=PackedStringArray("ButtonContainer", "_description", "_acceptButton", "_skipButton")] process_mode = 2 diff --git a/scenes/UI/inventory.tscn b/scenes/UI/inventory.tscn index a124b7b2..e1d655a5 100644 --- a/scenes/UI/inventory.tscn +++ b/scenes/UI/inventory.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://be6fb2sr5i515"] -[ext_resource type="Script" path="res://scenes/UI/scripts/Inventory.cs" id="1_8rcwd"] +[ext_resource type="Script" path="res://Scenes/UI/Scripts/Inventory.cs" id="1_8rcwd"] [node name="Inventory" type="Control" node_paths=PackedStringArray("Relics", "Notes", "Description", "Tabs")] process_mode = 2 diff --git a/scenes/UI/scripts/Inventory.cs b/scenes/UI/scripts/Inventory.cs index a392b35e..ca149242 100644 --- a/scenes/UI/scripts/Inventory.cs +++ b/scenes/UI/scripts/Inventory.cs @@ -21,7 +21,7 @@ public void Display(PlayerStats playerStats) { foreach (RelicTemplate relic in playerStats.CurRelics) { - var newButton = GD.Load("res://scenes/UI/display_button.tscn") + var newButton = GD.Load("res://Scenes/UI/DisplayButton.tscn") .Instantiate(); newButton.Display(relic.Texture, relic.Tooltip, relic.Name); newButton.Pressed += () => @@ -32,7 +32,7 @@ public void Display(PlayerStats playerStats) } foreach (Note note in playerStats.CurNotes) { - var newButton = GD.Load("res://scenes/UI/display_button.tscn") + var newButton = GD.Load("res://Scenes/UI/DisplayButton.tscn") .Instantiate(); newButton.Display(note.Texture, note.Tooltip, note.Name); newButton.Pressed += () => diff --git a/scenes/UI/scripts/MenuModule.cs b/scenes/UI/scripts/MenuModule.cs index 37f4b745..8e0e9181 100644 --- a/scenes/UI/scripts/MenuModule.cs +++ b/scenes/UI/scripts/MenuModule.cs @@ -7,13 +7,13 @@ public override void _Input(InputEvent @event) { if (@event.IsActionPressed("Pause")) { - var pauseMenu = GD.Load("res://scenes/UI/Pause.tscn"); + var pauseMenu = GD.Load("res://Scenes/UI/Pause.tscn"); AddChild(pauseMenu.Instantiate()); GetTree().Paused = true; } if (@event.IsActionPressed("Inventory")) { - var invenMenu = GD.Load("res://scenes/UI/inventory.tscn") + var invenMenu = GD.Load("res://Scenes/UI/inventory.tscn") .Instantiate(); AddChild(invenMenu); invenMenu.Display(StageProducer.PlayerStats ?? new PlayerStats()); //For now work around for testing diff --git a/scenes/UI/scripts/PauseMenu.cs b/scenes/UI/scripts/PauseMenu.cs index 255edf02..b67fa4b8 100644 --- a/scenes/UI/scripts/PauseMenu.cs +++ b/scenes/UI/scripts/PauseMenu.cs @@ -26,7 +26,7 @@ public override void _Process(double delta) private void OpenOptions() { - OptionsMenu optionsMenu = GD.Load("res://scenes/Options/OptionsMenu.tscn") + OptionsMenu optionsMenu = GD.Load("res://Scenes/UI/Options/OptionsMenu.tscn") .Instantiate(); AddChild(optionsMenu); optionsMenu.OpenMenu(this); diff --git a/scenes/UI/scripts/RewardSelect.cs b/scenes/UI/scripts/RewardSelect.cs index 5353d6a5..e997599c 100644 --- a/scenes/UI/scripts/RewardSelect.cs +++ b/scenes/UI/scripts/RewardSelect.cs @@ -86,7 +86,7 @@ public static RewardSelect CreateSelection( string type ) { - var rewardUI = GD.Load("res://scenes/UI/RewardSelectionUI.tscn") + var rewardUI = GD.Load("res://Scenes/UI/RewardSelectionUI.tscn") .Instantiate(); parent.AddChild(rewardUI); rewardUI.Initialize(playerStats, amount, type); From dd9934c89690b1ab1e5c4a6779c55b8f49d83d4c Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Sun, 16 Mar 2025 23:24:16 -0700 Subject: [PATCH 02/19] Documentation additions --- Classes/MidiMaestro/MidiMaestro.cs | 11 +++++++ Classes/MidiMaestro/SongTemplate.cs | 3 ++ Classes/Notes/Note.cs | 3 +- Classes/Relics/RelicEffect.cs | 3 ++ Classes/Relics/RelicTemplate.cs | 3 ++ Globals/BgAudioPlayer/BgAudioPlayer.cs | 3 ++ Globals/FunkEngineNameSpace.cs | 22 +++++++++++++- Globals/SaveSystem.cs | 30 +++++++++---------- Globals/Scribe.cs | 6 ++-- Globals/StageProducer.cs | 14 ++++----- Globals/TimeKeeper.cs | 3 ++ Scenes/UI/TitleScreen/Scripts/SceneChange.cs | 3 ++ .../BattleDirector/scripts/BattleDirector.cs | 4 +-- scenes/BattleDirector/scripts/Conductor.cs | 2 ++ .../scripts/NotePlacementBar.cs | 2 ++ .../scripts/NoteQueueParticlesFactory.cs | 2 ++ scenes/BattleDirector/scripts/TextParticle.cs | 2 ++ scenes/ChartViewport/scripts/ChartManager.cs | 4 +-- scenes/ChartViewport/scripts/HitParticles.cs | 3 ++ scenes/ChartViewport/scripts/Loopable.cs | 3 +- scenes/ChestScene/ChestScene.cs | 3 ++ scenes/Maps/scripts/Cartographer.cs | 3 ++ scenes/NoteManager/scripts/InputHandler.cs | 3 +- scenes/NoteManager/scripts/NoteArrow.cs | 3 +- scenes/NoteManager/scripts/NoteChecker.cs | 3 ++ scenes/Puppets/scripts/HealthBar.cs | 3 ++ scenes/Puppets/scripts/PuppetTemplate.cs | 15 +++++----- scenes/UI/scripts/DisplayButton.cs | 3 ++ scenes/UI/scripts/MenuModule.cs | 3 ++ 29 files changed, 116 insertions(+), 49 deletions(-) diff --git a/Classes/MidiMaestro/MidiMaestro.cs b/Classes/MidiMaestro/MidiMaestro.cs index dfc0b6e1..663d4f08 100644 --- a/Classes/MidiMaestro/MidiMaestro.cs +++ b/Classes/MidiMaestro/MidiMaestro.cs @@ -6,6 +6,10 @@ using Melanchall.DryWetMidi.Interaction; using Melanchall.DryWetMidi.Multimedia; +/** +

MidiMaestro: Manages reading midi file into lane note information. + + */ public partial class MidiMaestro : Resource { private MidiFile _midiFile; @@ -22,6 +26,10 @@ public partial class MidiMaestro : Resource //private MidiFile strippedSong; //The path relative to the Audio folder. Will change later + /** + * Constrctor loads midi file and populates lane note arrays with midiNoteInfo + * A string file path to a valid midi file + */ public MidiMaestro(string filePath) { if (!OS.HasFeature("editor")) @@ -65,6 +73,9 @@ public MidiMaestro(string filePath) } } + /** + * Gets midiNoteInfo by lane. + */ public midiNoteInfo[] GetNotes(ArrowType arrowType) { return arrowType switch diff --git a/Classes/MidiMaestro/SongTemplate.cs b/Classes/MidiMaestro/SongTemplate.cs index bf63c2b9..26b4e36e 100644 --- a/Classes/MidiMaestro/SongTemplate.cs +++ b/Classes/MidiMaestro/SongTemplate.cs @@ -1,5 +1,8 @@ namespace FunkEngine.Classes.MidiMaestro; +/** + * SongTemplate: Generic class to represent a rhythm battle. + */ public partial class SongTemplate { public string Name; diff --git a/Classes/Notes/Note.cs b/Classes/Notes/Note.cs index 87f35cf2..1c93987f 100644 --- a/Classes/Notes/Note.cs +++ b/Classes/Notes/Note.cs @@ -3,8 +3,7 @@ using Godot; /** - * @class Note - * @brief Data structure class for holding data and methods for a battle time note. WIP + * Note: Data structure class for holding data and methods for a battle time note. */ public partial class Note : Resource, IDisplayable { diff --git a/Classes/Relics/RelicEffect.cs b/Classes/Relics/RelicEffect.cs index c5a52109..bb2cedf3 100644 --- a/Classes/Relics/RelicEffect.cs +++ b/Classes/Relics/RelicEffect.cs @@ -2,6 +2,9 @@ using FunkEngine; using Godot; +/** + * RelicEffect: BattleDirector effect as handled by a player passive relic. + */ public partial class RelicEffect : IBattleEvent { private BattleEffectTrigger Trigger { get; set; } diff --git a/Classes/Relics/RelicTemplate.cs b/Classes/Relics/RelicTemplate.cs index 13dee51c..70580f17 100644 --- a/Classes/Relics/RelicTemplate.cs +++ b/Classes/Relics/RelicTemplate.cs @@ -2,6 +2,9 @@ using FunkEngine; using Godot; +/** + * RelicTemplate: Generic class representing a player passive relic. + */ public partial class RelicTemplate : Resource, IDisplayable { public RelicEffect[] Effects; diff --git a/Globals/BgAudioPlayer/BgAudioPlayer.cs b/Globals/BgAudioPlayer/BgAudioPlayer.cs index 549dc61a..bb31d34b 100644 --- a/Globals/BgAudioPlayer/BgAudioPlayer.cs +++ b/Globals/BgAudioPlayer/BgAudioPlayer.cs @@ -1,5 +1,8 @@ using Godot; +/** + * BgAudioPlayer: Autoload to play scene persistant music.. + */ public partial class BgAudioPlayer : AudioStreamPlayer { private readonly AudioStream _levelMusic = (AudioStream) diff --git a/Globals/FunkEngineNameSpace.cs b/Globals/FunkEngineNameSpace.cs index fc70a91a..51b4a8a8 100644 --- a/Globals/FunkEngineNameSpace.cs +++ b/Globals/FunkEngineNameSpace.cs @@ -5,6 +5,9 @@ namespace FunkEngine; +/** + * SongData: Basic information defining the statistics of an in-battle song. + */ public struct SongData { public int Bpm; @@ -12,6 +15,9 @@ public struct SongData public int NumLoops; } +/** + * ArrowData: Data representing the necessary information for each arrow checker. + */ public struct ArrowData { public Color Color; @@ -37,6 +43,9 @@ public enum Timing Perfect = 4, } +/** + * BattleConfig: Necessary data for a battle. + */ public struct BattleConfig { public Stages RoomType; @@ -65,6 +74,11 @@ public enum Stages Load, } +/** + * MapGrid: Map as data. + * Essentially a width by height grid. Valid rooms are determined by choosing a random starting room at height: 0, and makes random walks to height: height. + * Walks go from x,y to {x/x+1/x-1},y+1 + */ public class MapGrid { private int[,] _map; @@ -104,6 +118,9 @@ public void AddChild(int newIdx) } } + /** + * Initializes the map with max width, max height, and with number of paths. + */ public void InitMapGrid(int width, int height, int paths) { _curIdx = 0; @@ -123,7 +140,7 @@ public void InitMapGrid(int width, int height, int paths) AddBossRoom(width, height); } - //Start at x, y, assume prev room exists. Picks new x pos within +/- 1, attaches recursively + /**Start at x, y, assume prev room exists. Picks new x pos within +/- 1, attaches recursively*/ private void GeneratePath_r(int x, int y, int width, int height) { int nextX = StageProducer.GlobalRng.RandiRange( @@ -185,6 +202,9 @@ private void AddBossRoom(int width, int height) } } +/** + * A BattleDirector driven battle event. Needs an enum defined trigger. + */ public interface IBattleEvent { void OnTrigger(BattleDirector BD); diff --git a/Globals/SaveSystem.cs b/Globals/SaveSystem.cs index d3a65d03..ebf25ac0 100644 --- a/Globals/SaveSystem.cs +++ b/Globals/SaveSystem.cs @@ -6,6 +6,9 @@ using Godot; using FileAccess = Godot.FileAccess; +/** + * SaveSystem: Manages FileI/O of configs and save files. + */ public static class SaveSystem { #region Config @@ -25,7 +28,9 @@ public enum ConfigSettings HighContrast, } - //Initializes a new Config and saves it + /** + * Overwrites any file at UserConfigPath + */ private static void InitConfig() { _curConfigData = new ConfigFile(); @@ -35,14 +40,12 @@ private static void InitConfig() UpdateConfig(ConfigSettings.HighContrast, DefaultHighCon); } - //Saves config private static void SaveConfig() { AssertConfigFile(); _curConfigData.Save(UserConfigPath); } - //Update a config of relevant setting and saves public static void UpdateConfig(ConfigSettings setting, Variant value) { AssertConfigFile(); @@ -67,7 +70,8 @@ public static void UpdateConfig(ConfigSettings setting, Variant value) SaveConfig(); } - //Verifies a config file is currently loaded. + /**Either returns, loads current config, or if no config found inits one. + */ private static void AssertConfigFile() { if (_curConfigData == null) @@ -76,8 +80,8 @@ private static void AssertConfigFile() } } - //Really naive approach to verifying config integrity, could I have just changed back to JSON? yes. But I'm a real programmer. - //In theory ConfigFiles should be more stable across any version changes. + /**Really naive approach to verifying config integrity, could I have just changed back to JSON? yes. But I'm a real programmer. + In theory ConfigFiles should be more stable across any version changes.*/ private static void VerifyConfig() { if (!FileAccess.FileExists(UserConfigPath)) @@ -99,7 +103,6 @@ private static void VerifyConfig() InitConfig(); } - // This method loads the entire save data private static void LoadConfigData() { _curConfigData = new ConfigFile(); @@ -111,7 +114,6 @@ private static void LoadConfigData() SaveConfig(); } - //Gets config value public static Variant GetConfigValue(ConfigSettings setting) { AssertConfigFile(); @@ -126,9 +128,7 @@ public static Variant GetConfigValue(ConfigSettings setting) case ConfigSettings.HighContrast: return _curConfigData.GetValue("Options", "HighContrast", DefaultHighCon); default: - GD.PushError( - "SaveSystem.GetConfigValue: Invalid config setting passed. " + setting - ); + GD.PushError("Invalid config setting passed. " + setting); return float.MinValue; } } @@ -138,11 +138,6 @@ public static Variant GetConfigValue(ConfigSettings setting) private const string UserSavePath = "user://MidnighRiff.save"; - /* - * Values to save: - * Globals: rng seed, rng state, current room (hopefully id) - * Player: Id's of relics, id's of notes, current health - */ public class SaveFile { public ulong RngSeed { get; set; } @@ -191,6 +186,9 @@ public static void SaveGame() file.Close(); } + /** + * Returns null if invalid save or save 404's. + */ public static SaveFile LoadGame() { if (!FileAccess.FileExists(UserSavePath)) diff --git a/Globals/Scribe.cs b/Globals/Scribe.cs index e3671572..8d7e7019 100644 --- a/Globals/Scribe.cs +++ b/Globals/Scribe.cs @@ -5,7 +5,7 @@ using Godot; /** - * Global for storing defined data, e.g. Notes and Relic Dictionaries. + * Catch all for storing defined data. Catch all as single source of truth for items and battles. */ public partial class Scribe : Node { @@ -213,10 +213,10 @@ public partial class Scribe : Node //TODO: Item pool(s) - public static RelicTemplate[] GetRandomRelics(RelicTemplate[] ownedRelics, int count) + public static RelicTemplate[] GetRandomRelics(RelicTemplate[] excludedRelics, int count) { var availableRelics = Scribe - .RelicDictionary.Where(r => ownedRelics.All(o => o.Name != r.Name)) + .RelicDictionary.Where(r => excludedRelics.All(o => o.Name != r.Name)) .ToArray(); availableRelics = availableRelics diff --git a/Globals/StageProducer.cs b/Globals/StageProducer.cs index 4cd05463..8fd78f68 100644 --- a/Globals/StageProducer.cs +++ b/Globals/StageProducer.cs @@ -3,10 +3,11 @@ using FunkEngine; using Godot; +/** + * StageProducer: Handles scene transitions and persistent gameplay data. + */ public partial class StageProducer : Node { - //Generate a map, starting as a width x height grid, pick a starting spot and do (path) paths from that to the last - //row, connecting the path, then connect all at the end to the boss room. public static RandomNumberGenerator GlobalRng = new RandomNumberGenerator(); public static bool IsInitialized; @@ -19,8 +20,7 @@ public partial class StageProducer : Node public static BattleConfig Config; - //Hold here to persist between changes - public static PlayerStats PlayerStats; + public static PlayerStats PlayerStats; //Hold here to persist between changes public static CanvasLayer ContrastFilter; @@ -45,7 +45,7 @@ private void InitFromCfg() GetTree().Root.CallDeferred("add_child", ContrastFilter); } - public void StartGame() + private void StartGame() { GlobalRng.Randomize(); GenerateMapConsistent(); @@ -55,7 +55,7 @@ public void StartGame() IsInitialized = true; } - public bool LoadGame() + private bool LoadGame() { SaveSystem.SaveFile sv = SaveSystem.LoadGame(); if (sv == null) @@ -85,7 +85,7 @@ public bool LoadGame() private void GenerateMapConsistent() { - GlobalRng.State = GlobalRng.Seed << 5 / 2; + GlobalRng.State = GlobalRng.Seed << 5 / 2; //Fudge seed state, to get consistent maps across new/loaded games Map.InitMapGrid(MapSize.X, MapSize.Y, 3); } diff --git a/Globals/TimeKeeper.cs b/Globals/TimeKeeper.cs index 6db364ef..bc87265a 100644 --- a/Globals/TimeKeeper.cs +++ b/Globals/TimeKeeper.cs @@ -1,6 +1,9 @@ using System; using Godot; +/** + * TimeKeeper: Global scale current song position. + */ public partial class TimeKeeper : Node { public static double CurrentTime = 0; diff --git a/Scenes/UI/TitleScreen/Scripts/SceneChange.cs b/Scenes/UI/TitleScreen/Scripts/SceneChange.cs index d82c979f..7666c8da 100644 --- a/Scenes/UI/TitleScreen/Scripts/SceneChange.cs +++ b/Scenes/UI/TitleScreen/Scripts/SceneChange.cs @@ -2,6 +2,9 @@ using FunkEngine; using Godot; +/** + * Generic button to initiate scene transition on press. + */ public partial class SceneChange : Button { [Export] diff --git a/scenes/BattleDirector/scripts/BattleDirector.cs b/scenes/BattleDirector/scripts/BattleDirector.cs index 5f94d96a..3f1f7dca 100644 --- a/scenes/BattleDirector/scripts/BattleDirector.cs +++ b/scenes/BattleDirector/scripts/BattleDirector.cs @@ -5,9 +5,7 @@ using FunkEngine; using Godot; -/** - * @class BattleDirector - * @brief Higher priority director to manage battle effects. Can directly access managers, which should signal up to Director WIP +/**BattleDirector: Higher priority director to manage battle effects. Can directly access managers, which should signal up to Director WIP */ public partial class BattleDirector : Node2D { diff --git a/scenes/BattleDirector/scripts/Conductor.cs b/scenes/BattleDirector/scripts/Conductor.cs index e52688ee..450b5d49 100644 --- a/scenes/BattleDirector/scripts/Conductor.cs +++ b/scenes/BattleDirector/scripts/Conductor.cs @@ -2,6 +2,8 @@ using FunkEngine; using Godot; +/**Conductor: Arm of BattleDirector for handling note lanes and timing. + */ public partial class Conductor : Node { [Export] diff --git a/scenes/BattleDirector/scripts/NotePlacementBar.cs b/scenes/BattleDirector/scripts/NotePlacementBar.cs index 9a793c0f..ebb55bbf 100644 --- a/scenes/BattleDirector/scripts/NotePlacementBar.cs +++ b/scenes/BattleDirector/scripts/NotePlacementBar.cs @@ -4,6 +4,8 @@ using FunkEngine; using Godot; +/**Current charge bar amount and note queue. + */ public partial class NotePlacementBar : Node { const int MaxValue = 80; diff --git a/scenes/BattleDirector/scripts/NoteQueueParticlesFactory.cs b/scenes/BattleDirector/scripts/NoteQueueParticlesFactory.cs index ba1b6d4b..be75336c 100644 --- a/scenes/BattleDirector/scripts/NoteQueueParticlesFactory.cs +++ b/scenes/BattleDirector/scripts/NoteQueueParticlesFactory.cs @@ -1,6 +1,8 @@ using System; using Godot; +/**Particle effects on placing a note. + */ public static class NoteQueueParticlesFactory { private static PackedScene particlesScene = null; diff --git a/scenes/BattleDirector/scripts/TextParticle.cs b/scenes/BattleDirector/scripts/TextParticle.cs index a2a1b402..e8d9fcdf 100644 --- a/scenes/BattleDirector/scripts/TextParticle.cs +++ b/scenes/BattleDirector/scripts/TextParticle.cs @@ -1,6 +1,8 @@ using System; using Godot; +/**Bouncing, self-cleaning text for timing and damage information. + */ public partial class TextParticle : Label { // Called when the node enters the scene tree for the first time. diff --git a/scenes/ChartViewport/scripts/ChartManager.cs b/scenes/ChartViewport/scripts/ChartManager.cs index bf146b12..c93fc66f 100644 --- a/scenes/ChartViewport/scripts/ChartManager.cs +++ b/scenes/ChartViewport/scripts/ChartManager.cs @@ -3,9 +3,7 @@ using FunkEngine; using Godot; -/** - * @class ChartManager - * @brief Chart Manager is meant to handle the visual aspects of a battle. Setting up the chart background, initial notes, and handle looping. WIP +/**Manager for handling the visual aspects of a battle. Placing visual NoteArrows, looping visuals, and combo text. */ public partial class ChartManager : SubViewportContainer { diff --git a/scenes/ChartViewport/scripts/HitParticles.cs b/scenes/ChartViewport/scripts/HitParticles.cs index eab36821..89e06256 100644 --- a/scenes/ChartViewport/scripts/HitParticles.cs +++ b/scenes/ChartViewport/scripts/HitParticles.cs @@ -1,6 +1,9 @@ using System; using Godot; +/** + * Particles on note checker from successful note hits. + */ public partial class HitParticles : CpuParticles2D { public void Emit(int particleAmount) diff --git a/scenes/ChartViewport/scripts/Loopable.cs b/scenes/ChartViewport/scripts/Loopable.cs index c7cb4d20..bffc028a 100644 --- a/scenes/ChartViewport/scripts/Loopable.cs +++ b/scenes/ChartViewport/scripts/Loopable.cs @@ -2,8 +2,7 @@ using Godot; /** - * @class Loopable - * @brief A general class fo textures on the chart which should have a position at which point they loop. WIP + * A general class of textures on the chart which should have a position at which point they loop. */ public partial class Loopable : Sprite2D { diff --git a/scenes/ChestScene/ChestScene.cs b/scenes/ChestScene/ChestScene.cs index d8a2f9a0..225a7c12 100644 --- a/scenes/ChestScene/ChestScene.cs +++ b/scenes/ChestScene/ChestScene.cs @@ -2,6 +2,9 @@ using FunkEngine; using Godot; +/** + * Scene for handling rooms with random loot. + */ public partial class ChestScene : Node2D { public PlayerPuppet Player; diff --git a/scenes/Maps/scripts/Cartographer.cs b/scenes/Maps/scripts/Cartographer.cs index f653340e..d67bb7d6 100644 --- a/scenes/Maps/scripts/Cartographer.cs +++ b/scenes/Maps/scripts/Cartographer.cs @@ -3,6 +3,9 @@ using FunkEngine; using Godot; +/** + * Handles drawing a map from a MapGrid and scene transitions from player input. Currently, this also handles overarching win/lose conditions. + */ public partial class Cartographer : Node2D { [Export] diff --git a/scenes/NoteManager/scripts/InputHandler.cs b/scenes/NoteManager/scripts/InputHandler.cs index d32fefc9..99320545 100644 --- a/scenes/NoteManager/scripts/InputHandler.cs +++ b/scenes/NoteManager/scripts/InputHandler.cs @@ -4,8 +4,7 @@ using Godot; /** - * @class InputHandler - * @brief InputHandler to handle input, and manage note checkers. WIP + * InputHandler to handle note checkers, and bubble input events upwards. */ public partial class InputHandler : Node2D { diff --git a/scenes/NoteManager/scripts/NoteArrow.cs b/scenes/NoteManager/scripts/NoteArrow.cs index dc7a827d..cb4469e9 100644 --- a/scenes/NoteManager/scripts/NoteArrow.cs +++ b/scenes/NoteManager/scripts/NoteArrow.cs @@ -2,8 +2,7 @@ using Godot; /** - * @class NoteArrow - * @brief This class represents a visual note that scrolls across the screen to be played by the player. WIP +*This class represents a visual note that scrolls across the screen to be played by the player. */ public partial class NoteArrow : Sprite2D { //TextRect caused issues later :) diff --git a/scenes/NoteManager/scripts/NoteChecker.cs b/scenes/NoteManager/scripts/NoteChecker.cs index c650a07d..550df4c3 100644 --- a/scenes/NoteManager/scripts/NoteChecker.cs +++ b/scenes/NoteManager/scripts/NoteChecker.cs @@ -1,6 +1,9 @@ using System; using Godot; +/** + * Visual input handlers, glow and emit particles on note hits/player input. + */ public partial class NoteChecker : Sprite2D { private bool _isPressed; diff --git a/scenes/Puppets/scripts/HealthBar.cs b/scenes/Puppets/scripts/HealthBar.cs index cfd757ba..ae8a87df 100644 --- a/scenes/Puppets/scripts/HealthBar.cs +++ b/scenes/Puppets/scripts/HealthBar.cs @@ -1,6 +1,9 @@ using System; using Godot; +/** + * Generic health bar, instantiate from scene. + */ public partial class HealthBar : TextureProgressBar { public override void _Ready() diff --git a/scenes/Puppets/scripts/PuppetTemplate.cs b/scenes/Puppets/scripts/PuppetTemplate.cs index 70861542..4e7d36b8 100644 --- a/scenes/Puppets/scripts/PuppetTemplate.cs +++ b/scenes/Puppets/scripts/PuppetTemplate.cs @@ -1,8 +1,8 @@ using System; using Godot; -/** Essentially a battle entity. Has HP and can be healed or damaged. - * +/** + *Base class for battle entity. Manages sprite, health, and initial conditions. */ public partial class PuppetTemplate : Node2D { @@ -29,7 +29,7 @@ public partial class PuppetTemplate : Node2D //Stats would go here. - public string UniqName = ""; //Eventually make subclasses/scenes/real stuff + protected string UniqName = ""; //Eventually make subclasses/scenes/real stuff public override void _Ready() { @@ -37,10 +37,7 @@ public override void _Ready() Position = StartPos; Sprite.Scale = InitScale; - if (hideHealth) - { - _healthBar.Hide(); - } + _healthBar.Visible = !hideHealth; } public override void _Process(double delta) @@ -48,12 +45,13 @@ public override void _Process(double delta) ProcessShake(delta); } - public void Init(Texture2D texture, string name) + private void Init(Texture2D texture, string name) { Sprite.Texture = texture; UniqName = name; } + #region DamageAnim //Juice - https://www.youtube.com/watch?v=LGt-jjVf-ZU private int _limiter; private const float BaseShake = 100f; @@ -108,6 +106,7 @@ protected virtual void DamageAnimate(int amount) .AsRelative(); tween.Chain().TweenProperty(this, "position", StartPos, 2 * _baseAnimDuration); } + #endregion public virtual void TakeDamage(int amount) { diff --git a/scenes/UI/scripts/DisplayButton.cs b/scenes/UI/scripts/DisplayButton.cs index acf215a4..bffb3871 100644 --- a/scenes/UI/scripts/DisplayButton.cs +++ b/scenes/UI/scripts/DisplayButton.cs @@ -1,6 +1,9 @@ using System; using Godot; +/** + * Generic button for holding and handling displayable objects. + */ public partial class DisplayButton : Button { //TODO: Make various menus change descriptions when focus changes, instead of on click. diff --git a/scenes/UI/scripts/MenuModule.cs b/scenes/UI/scripts/MenuModule.cs index 8e0e9181..7cbcd591 100644 --- a/scenes/UI/scripts/MenuModule.cs +++ b/scenes/UI/scripts/MenuModule.cs @@ -1,6 +1,9 @@ using System; using Godot; +/** + * Simple system for any scene which should display pause and inventory screen. + */ public partial class MenuModule : CanvasLayer { public override void _Input(InputEvent @event) From 8098ebd96b98c63a500cef015739878f618a5d44 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Mon, 17 Mar 2025 18:11:35 -0700 Subject: [PATCH 03/19] Rework and streamline menu functionality Added IFocusableMenu Implemented on menus that pass back and forth focus and handle processmode --- Globals/FunkEngineNameSpace.cs | 9 ++++ Scenes/BattleDirector/BattleScene.tscn | 3 +- Scenes/UI/Options/OptionsMenu.tscn | 2 +- Scenes/UI/Options/Scripts/HowToPlay.cs | 32 +++++++----- Scenes/UI/Options/Scripts/OptionsMenu.cs | 49 ++++++++++-------- Scenes/UI/Remapping/ControlSettings.cs | 53 +++++++++++++------- Scenes/UI/TitleScreen/Scripts/TitleScreen.cs | 30 ++++++++--- scenes/ChestScene/ChestScene.tscn | 3 +- scenes/Maps/cartographer.tscn | 3 +- scenes/Maps/scripts/Cartographer.cs | 16 ------ scenes/UI/Pause.tscn | 2 +- scenes/UI/inventory.tscn | 2 +- scenes/UI/scripts/Inventory.cs | 36 +++++++++---- scenes/UI/scripts/MenuModule.cs | 44 +++++++++++++--- scenes/UI/scripts/PauseMenu.cs | 42 ++++++++++------ 15 files changed, 213 insertions(+), 113 deletions(-) diff --git a/Globals/FunkEngineNameSpace.cs b/Globals/FunkEngineNameSpace.cs index 51b4a8a8..5ac7013c 100644 --- a/Globals/FunkEngineNameSpace.cs +++ b/Globals/FunkEngineNameSpace.cs @@ -217,3 +217,12 @@ public interface IDisplayable string Tooltip { get; set; } Texture2D Texture { get; set; } } + +public interface IFocusableMenu +{ + IFocusableMenu Prev { get; set; } + void OpenMenu(IFocusableMenu parentMenu); + void PauseFocus(); + void ResumeFocus(); + void ReturnToPrev(); +} diff --git a/Scenes/BattleDirector/BattleScene.tscn b/Scenes/BattleDirector/BattleScene.tscn index 93282013..12ef4c2f 100644 --- a/Scenes/BattleDirector/BattleScene.tscn +++ b/Scenes/BattleDirector/BattleScene.tscn @@ -29,8 +29,9 @@ metadata/_edit_lock_ = true [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] -[node name="UILayer" type="CanvasLayer" parent="."] +[node name="UILayer" type="CanvasLayer" parent="." node_paths=PackedStringArray("CurSceneNode")] script = ExtResource("2_ka0ws") +CurSceneNode = NodePath("..") [node name="Conductor" type="Node" parent="." node_paths=PackedStringArray("CM")] script = ExtResource("3_elcaj") diff --git a/Scenes/UI/Options/OptionsMenu.tscn b/Scenes/UI/Options/OptionsMenu.tscn index 1b852e28..0c7a04b4 100644 --- a/Scenes/UI/Options/OptionsMenu.tscn +++ b/Scenes/UI/Options/OptionsMenu.tscn @@ -6,7 +6,7 @@ [node name="OptionsMenu" type="CanvasLayer" node_paths=PackedStringArray("_focused", "_volumeSlider", "_closeButton", "_controlsButton", "_highContrastToggle", "_howToPlayButton")] process_mode = 3 script = ExtResource("1_yjq7i") -_focused = NodePath("Control/CenterContainer/MarginContainer/MarginContainer/VBoxContainer/LanguageSelection") +_focused = NodePath("Control/CenterContainer/MarginContainer/MarginContainer/VBoxContainer/HBoxContainer/CheckBox") _volumeSlider = NodePath("Control/CenterContainer/MarginContainer/MarginContainer/VBoxContainer/Container/Volume") _closeButton = NodePath("Control/CenterContainer/MarginContainer/MarginContainer/VBoxContainer/TitleButton") _controlsButton = NodePath("Control/CenterContainer/MarginContainer/MarginContainer/VBoxContainer/ControlsButton") diff --git a/Scenes/UI/Options/Scripts/HowToPlay.cs b/Scenes/UI/Options/Scripts/HowToPlay.cs index b70975f5..46d34caf 100644 --- a/Scenes/UI/Options/Scripts/HowToPlay.cs +++ b/Scenes/UI/Options/Scripts/HowToPlay.cs @@ -1,32 +1,40 @@ using System; +using FunkEngine; using Godot; -public partial class HowToPlay : Node2D +public partial class HowToPlay : Node2D, IFocusableMenu { [Export] private Button _returnButton; - private Node _previousScene; - private ProcessModeEnum _previousProcessMode; + public IFocusableMenu Prev { get; set; } public override void _Ready() { + _returnButton.Pressed += ReturnToPrev; + } + + public void ResumeFocus() + { + ProcessMode = ProcessModeEnum.Inherit; _returnButton.GrabFocus(); - _returnButton.Pressed += CloseMenu; } - public override void _Process(double delta) { } + public void PauseFocus() + { + ProcessMode = ProcessModeEnum.Disabled; + } - public void OpenMenu(Node prevScene) + public void OpenMenu(IFocusableMenu prev) { - _previousScene = prevScene; - _previousProcessMode = _previousScene.GetProcessMode(); - prevScene.ProcessMode = ProcessModeEnum.Disabled; + Prev = prev; + Prev.PauseFocus(); + _returnButton.GrabFocus(); } - private void CloseMenu() + public void ReturnToPrev() { - _previousScene.ProcessMode = _previousProcessMode; + Prev.ResumeFocus(); QueueFree(); } @@ -34,7 +42,7 @@ public override void _Input(InputEvent @event) { if (@event.IsActionPressed("ui_cancel")) { - CloseMenu(); + ReturnToPrev(); GetViewport().SetInputAsHandled(); } } diff --git a/Scenes/UI/Options/Scripts/OptionsMenu.cs b/Scenes/UI/Options/Scripts/OptionsMenu.cs index 147f4a93..cfa0119c 100644 --- a/Scenes/UI/Options/Scripts/OptionsMenu.cs +++ b/Scenes/UI/Options/Scripts/OptionsMenu.cs @@ -1,9 +1,10 @@ using System; +using FunkEngine; using Godot; -public partial class OptionsMenu : CanvasLayer +public partial class OptionsMenu : CanvasLayer, IFocusableMenu { - private Node _previousScene; + public IFocusableMenu Prev { get; set; } [Export] private Control _focused; @@ -28,8 +29,6 @@ public partial class OptionsMenu : CanvasLayer public override void _Ready() { - _focused.GrabFocus(); - _volumeSlider.MinValue = MinVolumeVal; _volumeSlider.Value = AudioServer.GetBusVolumeDb(AudioServer.GetBusIndex("Master")) + 80; @@ -40,46 +39,52 @@ public override void _Ready() _volumeSlider.DragEnded += VolumeChanged; _volumeSlider.ValueChanged += ChangeVolume; - _closeButton.Pressed += CloseMenu; + _closeButton.Pressed += ReturnToPrev; _controlsButton.Pressed += OpenControls; _highContrastToggle.Toggled += HighContrastChanged; _howToPlayButton.Pressed += OpenHowToPlay; } - //TODO: Menu subclass/interface - public override void _Process(double delta) - { - if (GetViewport().GuiGetFocusOwner() == null) - { - _focused.GrabFocus(); - } - } - public override void _Input(InputEvent @event) { if (@event.IsActionPressed("ui_cancel")) { - CloseMenu(); + ReturnToPrev(); GetViewport().SetInputAsHandled(); } } - public void OpenMenu(Node prevScene) + public void ResumeFocus() { - _previousScene = prevScene; - _previousProcessMode = _previousScene.GetProcessMode(); - prevScene.ProcessMode = ProcessModeEnum.Disabled; + ProcessMode = _previousProcessMode; + _focused.GrabFocus(); + } + + public void PauseFocus() + { + _focused = GetViewport().GuiGetFocusOwner(); + _previousProcessMode = ProcessMode; + ProcessMode = ProcessModeEnum.Disabled; + } + + public void OpenMenu(IFocusableMenu prev) + { + Prev = prev; + Prev.PauseFocus(); + _focused.GrabFocus(); } - private void CloseMenu() + public void ReturnToPrev() { - _previousScene.ProcessMode = _previousProcessMode; + Prev.ResumeFocus(); QueueFree(); } private void OpenControls() { - ControlSettings controlSettings = GD.Load("res://Scenes/UI/Remapping/Remap.tscn") + ControlSettings controlSettings = GD.Load( + "res://Scenes/UI/Remapping/Remap.tscn" + ) .Instantiate(); AddChild(controlSettings); controlSettings.OpenMenu(this); diff --git a/Scenes/UI/Remapping/ControlSettings.cs b/Scenes/UI/Remapping/ControlSettings.cs index aaf99269..ac8f1d08 100644 --- a/Scenes/UI/Remapping/ControlSettings.cs +++ b/Scenes/UI/Remapping/ControlSettings.cs @@ -1,7 +1,8 @@ using System; +using FunkEngine; using Godot; -public partial class ControlSettings : Node2D +public partial class ControlSettings : Node2D, IFocusableMenu { [Export] public Sprite2D leftKey; @@ -15,8 +16,7 @@ public partial class ControlSettings : Node2D [Export] public Sprite2D downKey; - private Node _previousScene; - private ProcessModeEnum _previousProcessMode; + public IFocusableMenu Prev { get; set; } [Export] private Button _closeButton; @@ -36,6 +36,36 @@ public override void _Ready() ControllerConnectionChanged(-1, false); Input.JoyConnectionChanged += ControllerConnectionChanged; + _closeButton.Pressed += ReturnToPrev; + } + + public void ResumeFocus() + { + ProcessMode = ProcessModeEnum.Inherit; + GetCurrentSelection(); + } + + public void PauseFocus() + { + ProcessMode = ProcessModeEnum.Disabled; + } + + public void OpenMenu(IFocusableMenu prev) + { + Prev = prev; + Prev.PauseFocus(); + + GetCurrentSelection(); + } + + public void ReturnToPrev() + { + Prev.ResumeFocus(); + QueueFree(); + } + + private void GetCurrentSelection() + { string scheme = SaveSystem.GetConfigValue(SaveSystem.ConfigSettings.InputKey).As(); switch (scheme) { @@ -56,28 +86,13 @@ public override void _Ready() GetNode