From 21cb8d83c82fc73c78d0c3c9dfc55072b424ea50 Mon Sep 17 00:00:00 2001 From: noobour Date: Fri, 9 Oct 2026 11:42:39 -0400 Subject: [PATCH 01/13] feat: auto restart on death + settings cleanup --- export_presets.cfg | 2 +- scripts/database/settings/SettingsProfile.cs | 260 +++++++++++-------- scripts/database/settings/SettingsSection.cs | 5 +- scripts/game/Runner.cs | 16 +- scripts/game/ui/Skip.cs | 7 +- 5 files changed, 175 insertions(+), 115 deletions(-) diff --git a/export_presets.cfg b/export_presets.cfg index d69582c3..f647344f 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -87,7 +87,7 @@ custom_features="" export_filter="all_resources" include_filter="user/*" exclude_filter="" -export_path="../../../Desktop/Linux/Rhythia.zip" +export_path="../../../Desktop/Linux/linux/Rhythia.zip" patches=PackedStringArray() patch_delta_encoding=false patch_delta_compression_level_zstd=19 diff --git a/scripts/database/settings/SettingsProfile.cs b/scripts/database/settings/SettingsProfile.cs index d4a5eeb0..f20d31a2 100644 --- a/scripts/database/settings/SettingsProfile.cs +++ b/scripts/database/settings/SettingsProfile.cs @@ -8,6 +8,11 @@ public partial class SettingsProfile { #region Gameplay + /// + /// Selected skin for the game + /// + [Order] + public SettingsItem Skin { get; private set; } /// /// Adjusts cursor sensitivity @@ -93,15 +98,15 @@ public partial class SettingsProfile [Order] public SettingsItem FoV { get; private set; } - #endregion - - #region Visual - /// - /// Selected skin for the game + /// Auto restarts on death /// [Order] - public SettingsItem Skin { get; private set; } + public SettingsItem AutoRestartOnDeath { get; private set; } + + #endregion + + #region Space /// /// Overrides the skin's background space for the menu @@ -127,6 +132,16 @@ public partial class SettingsProfile [Order] public SettingsItem SpaceEffects { get; private set; } + /// + /// Enables a dark radial fade to help visibility + /// + [Order] + public SettingsItem VisibilityAssist { get; private set; } + + #endregion + + #region Notes + /// /// Overrides the skin's colorset /// @@ -134,28 +149,32 @@ public partial class SettingsProfile public SettingsItem NoteColors { get; private set; } /// - /// Sets the maximum opacity of the notes + /// Overrides the skin's note mesh /// [Order] - public SettingsItem NoteOpacity { get; private set; } + public SettingsItem NoteMesh { get; private set; } /// - /// Adjusts the note opacity curve, a higher value will make any sort of transparency appear more quickly + /// Sets the size of the notes /// [Order] - public SettingsItem NoteOpacityExponent { get; private set; } + public SettingsItem NoteSize { get; private set; } /// - /// Overrides the skin's note mesh + /// Sets the maximum opacity of the notes /// [Order] - public SettingsItem NoteMesh { get; private set; } + public SettingsItem NoteOpacity { get; private set; } /// - /// Sets the size of the notes + /// Adjusts the note opacity curve, a higher value will make any sort of transparency appear more quickly /// [Order] - public SettingsItem NoteSize { get; private set; } + public SettingsItem NoteOpacityExponent { get; private set; } + + #endregion + + #region Cursor /// /// Adjusts the cursor scale @@ -199,6 +218,9 @@ public partial class SettingsProfile [Order] public SettingsItem UseCursorInMenus { get; private set; } + #endregion + + #region HUD /// /// Adjusts the easing when the HP Bar is updated /// @@ -241,12 +263,6 @@ public partial class SettingsProfile [Order] public SettingsItem AltComboCounter { get; private set; } - /// - /// Enables a dark radial fade to help visibility - /// - [Order] - public SettingsItem VisibilityAssist { get; private set; } - /// /// Toggles a popup on a hit /// @@ -448,6 +464,34 @@ public SettingsProfile() { #region Gameplay + Skin = new("default") + { + Id = "Skin", + Title = "Skin", + Description = "Selected skin for the game", + Section = SettingsSection.Gameplay, + UpdateAction = (_, init) => + { + if (!init) + { + SkinManager.Load(); + } + }, + Buttons = + [ + new() + { + Title = "Skin Folder", + Description = "Open the skin folder", + OnPressed = () => + { + OS.ShellOpen($"{Constants.USER_FOLDER}/skins/{SettingsManager.Instance.Settings.Skin}"); + }, + }, + ], + List = new("default") { Values = ["default"] }, + }; + Sensitivity = new(0.5f) { Id = "Sensitivity", @@ -618,44 +662,24 @@ public SettingsProfile() }, }; - #endregion - - #region Visual - - Skin = new("default") + AutoRestartOnDeath = new(false) { - Id = "Skin", - Title = "Skin", - Description = "Selected skin for the game", - Section = SettingsSection.Visual, - UpdateAction = (_, init) => - { - if (!init) - { - SkinManager.Load(); - } - }, - Buttons = - [ - new() - { - Title = "Skin Folder", - Description = "Open the skin folder", - OnPressed = () => - { - OS.ShellOpen($"{Constants.USER_FOLDER}/skins/{SettingsManager.Instance.Settings.Skin}"); - }, - }, - ], - List = new("default") { Values = ["default"] }, + Id = "AutoRestartOnDeath", + Title = "Auto Restart On Death", + Description = "On death, automatically restart the run instead of going to the results screen", + Section = SettingsSection.Gameplay, }; + #endregion + + #region Spaces + MenuSpace = new("skin") { Id = "MenuSpace", Title = "Menu Space", Description = "Overrides the skin's background space for the menu", - Section = SettingsSection.Visual, + Section = SettingsSection.Spaces, UpdateAction = (_, init) => { if (!init) @@ -689,7 +713,7 @@ public SettingsProfile() Id = "GameSpace", Title = "Game Space", Description = "Overrides the skin's background space for gameplay", - Section = SettingsSection.Visual, + Section = SettingsSection.Spaces, UpdateAction = (_, init) => { if (!init) @@ -723,7 +747,7 @@ public SettingsProfile() Id = "SpaceHitEffects", Title = "Space Hit Effects", Description = "Toggles note hit effects for the game space", - Section = SettingsSection.Visual, + Section = SettingsSection.Spaces, }; SpaceEffects = new(true) @@ -731,15 +755,27 @@ public SettingsProfile() Id = "SpaceEffects", Title = "Space Effects", Description = "Toggles non-hit effects for the game space", - Section = SettingsSection.Visual, + Section = SettingsSection.Spaces, }; + VisibilityAssist = new(false) + { + Id = "VisibilityAssist", + Title = "Visibility Assist", + Description = "Enables a dark radial fade to help with visibility (impacts performance significantly)", + Section = SettingsSection.Spaces, + }; + + #endregion + + #region Notes + NoteColors = new("skin") { Id = "Colors", Title = "Colors", Description = "Overrides the skin's colorset", - Section = SettingsSection.Visual, + Section = SettingsSection.Notes, UpdateAction = (_, init) => { if (!init) @@ -750,40 +786,12 @@ public SettingsProfile() List = new("skin") { Values = ["skin", "default"] }, }; - NoteOpacity = new(1) - { - Id = "NoteOpacity", - Title = "Note Opacity", - Description = "Sets the maximum opacity for the notes", - Section = SettingsSection.Visual, - Slider = new() - { - Step = 0.05f, - MinValue = 0, - MaxValue = 1, - }, - }; - - NoteOpacityExponent = new(1.25) - { - Id = "NoteOpacityExponent", - Title = "Note Opacity Exponent", - Description = "Adjusts the note opacity curve, a higher value will make any sort of transparency appear more quickly", - Section = SettingsSection.Visual, - Slider = new() - { - Step = 0.05f, - MinValue = 1, - MaxValue = 2, - }, - }; - NoteMesh = new("skin") { Id = "NoteMesh", Title = "Note Mesh", Description = "Overrides the skin's note mesh", - Section = SettingsSection.Visual, + Section = SettingsSection.Notes, UpdateAction = (_, init) => { if (!init) @@ -799,7 +807,7 @@ public SettingsProfile() Id = "NoteSize", Title = "Note Size", Description = "Sets the size of the notes, does not change hitboxes", - Section = SettingsSection.Visual, + Section = SettingsSection.Notes, Slider = new() { Step = 0.025f, @@ -808,20 +816,44 @@ public SettingsProfile() }, }; - GridGuides = new(true) + NoteOpacity = new(1) { - Id = "GridGuides", - Title = "Grid Guides", - Description = "Enables grid guides", - Section = SettingsSection.Visual, + Id = "NoteOpacity", + Title = "Note Opacity", + Description = "Sets the maximum opacity for the notes", + Section = SettingsSection.Notes, + Slider = new() + { + Step = 0.05f, + MinValue = 0, + MaxValue = 1, + }, + }; + + NoteOpacityExponent = new(1.25) + { + Id = "NoteOpacityExponent", + Title = "Note Opacity Exponent", + Description = "Adjusts the note opacity curve, a higher value will make any sort of transparency appear more quickly", + Section = SettingsSection.Notes, + Slider = new() + { + Step = 0.05f, + MinValue = 1, + MaxValue = 2, + }, }; + #endregion + + #region Cursor + CursorScale = new(1) { Id = "CursorScale", Title = "Cursor Scale", Description = "Adjusts the cursor scale, does not change hitboxes", - Section = SettingsSection.Visual, + Section = SettingsSection.Cursor, Slider = new() { Step = 0.025f, @@ -835,7 +867,7 @@ public SettingsProfile() Id = "CursorOpacity", Title = "Cursor Opacity", Description = "Adjusts the cursor opacity", - Section = SettingsSection.Visual, + Section = SettingsSection.Cursor, Slider = new() { Step = 0.05f, @@ -849,7 +881,7 @@ public SettingsProfile() Id = "CursorRotation", Title = "Cursor Rotation", Description = "Degrees to rotate the cursor by every second", - Section = SettingsSection.Visual, + Section = SettingsSection.Cursor, Slider = new() { Step = 1, @@ -863,7 +895,7 @@ public SettingsProfile() Id = "CursorTrail", Title = "Cursor Trail", Description = "Toggles a trail for your cursor", - Section = SettingsSection.Visual, + Section = SettingsSection.Cursor, }; TrailTime = new(0.05f) @@ -871,7 +903,7 @@ public SettingsProfile() Id = "TrailTime", Title = "Cursor Trail Time", Description = "Adjusts trail visibility time", - Section = SettingsSection.Visual, + Section = SettingsSection.Cursor, Slider = new() { Step = 0.01f, @@ -885,7 +917,7 @@ public SettingsProfile() Id = "TrailDetail", Title = "Cursor Trail Detail", Description = "Adjusts the detail for the trail, a high value may impact performance", - Section = SettingsSection.Visual, + Section = SettingsSection.Cursor, Slider = new() { Step = 1f, @@ -899,7 +931,19 @@ public SettingsProfile() Id = "UseCursorInMenus", Title = "Use Cursor in Menus", Description = "Uses the skin's cursor instead of the native cursor", - Section = SettingsSection.Visual, + Section = SettingsSection.Cursor, + }; + + #endregion + + #region HUD + + GridGuides = new(true) + { + Id = "GridGuides", + Title = "Grid Guides", + Description = "Enables grid guides", + Section = SettingsSection.HUD, }; HPLerpValue = new(60f) @@ -907,7 +951,7 @@ public SettingsProfile() Id = "HPLerpValue", Title = "HP Bar Easing Value", Description = "Adjusts how smooth, or harsh, the HP Bar eases in while it updates", - Section = SettingsSection.Visual, + Section = SettingsSection.HUD, Slider = new() { Step = 1f, @@ -953,7 +997,7 @@ public SettingsProfile() Id = "SimpleHUD", Title = "Simple HUD", Description = "Hides the regular left and right panels, and instead displays a simple miss counter on the right", - Section = SettingsSection.Visual, + Section = SettingsSection.HUD, }; SuperSimpleHUD = new(false) @@ -961,7 +1005,7 @@ public SettingsProfile() Id = "SuperSimpleHUD", Title = "Super Simple HUD", Description = "Hides health bar, song duration, and song name", - Section = SettingsSection.Visual, + Section = SettingsSection.HUD, }; AltComboCounter = new(false) @@ -969,15 +1013,7 @@ public SettingsProfile() Id = "AltComboCounter", Title = "Alt. Combo Counter", Description = "Moves the Combo Counter to the HUD", - Section = SettingsSection.Visual, - }; - - VisibilityAssist = new(false) - { - Id = "VisibilityAssist", - Title = "Visibility Assist", - Description = "Enables a dark radial fade to help with visibility (impacts performance significantly)", - Section = SettingsSection.Visual, + Section = SettingsSection.HUD, }; HitPopups = new(true) @@ -985,7 +1021,7 @@ public SettingsProfile() Id = "HitPopups", Title = "Hit Score Popups", Description = "Toggles a popup on a hit", - Section = SettingsSection.Visual, + Section = SettingsSection.HUD, }; MissPopups = new(true) @@ -993,9 +1029,13 @@ public SettingsProfile() Id = "MissPopups", Title = "Miss Popups", Description = "Toggles a popup on a miss", - Section = SettingsSection.Visual, + Section = SettingsSection.HUD, }; + #endregion + + #region Video + Fullscreen = new(true) { Id = "Fullscreen", diff --git a/scripts/database/settings/SettingsSection.cs b/scripts/database/settings/SettingsSection.cs index 58d4f2d8..2e2bbf0a 100644 --- a/scripts/database/settings/SettingsSection.cs +++ b/scripts/database/settings/SettingsSection.cs @@ -2,7 +2,10 @@ public enum SettingsSection { None, Gameplay, - Visual, + Spaces, + Notes, + Cursor, + HUD, Audio, Video, Other, diff --git a/scripts/game/Runner.cs b/scripts/game/Runner.cs index 7eef5960..9f964a24 100644 --- a/scripts/game/Runner.cs +++ b/scripts/game/Runner.cs @@ -612,10 +612,22 @@ private void onHitResultChanged(int noteIndex, HitResult hitResult) if (!Attempt.IsReplay && Attempt.Health <= 0 && Attempt.Alive) { - Fail(); + if (Attempt.Settings.AutoRestartOnDeath && checkFail(hit, Attempt.Health)) + { + SoundManager.FailSound.Play(); + + Attempt.Alive = false; + Attempt.Qualifies = false; + + Results.Replay(); + } + else + { + Fail(); + } } - if (checkFail(hit, Attempt.Health)) + if (!Attempt.Settings.AutoRestartOnDeath && checkFail(hit, Attempt.Health)) { QueueStop(); } diff --git a/scripts/game/ui/Skip.cs b/scripts/game/ui/Skip.cs index 21252179..7edaa0e0 100644 --- a/scripts/game/ui/Skip.cs +++ b/scripts/game/ui/Skip.cs @@ -32,7 +32,7 @@ public override void Process(double delta, Attempt attempt) public void OnSkipAvailable(Attempt attempt) { - if (Runner.ObjectIndicesStart[typeof(Note)] >= attempt.Map.Notes.Length) + if (Runner.ObjectIndicesStart[typeof(Note)] >= attempt.Map.Notes.Length && !Runner.Attempt.IsReplay) { label.Text = "Press Space to complete"; } @@ -40,6 +40,11 @@ public void OnSkipAvailable(Attempt attempt) if (tween != null) return; + if (Runner.Attempt.IsReplay) + { + label.Text = "Seek forward to skip"; + } + tween = CreateTween().SetLoops().SetTrans(Tween.TransitionType.Sine); tween.TweenProperty(label, "modulate", new Color(label.Modulate, 0.25f), 0.75f); tween.TweenProperty(label, "modulate", new Color(label.Modulate, 0.75f), 0.75f); From f0e9b149370156136a6691926abe5a65d3e60d26 Mon Sep 17 00:00:00 2001 From: noobour Date: Wed, 14 Oct 2026 14:35:45 -0400 Subject: [PATCH 02/13] jfghfgh --- export_presets.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/export_presets.cfg b/export_presets.cfg index f647344f..d69582c3 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -87,7 +87,7 @@ custom_features="" export_filter="all_resources" include_filter="user/*" exclude_filter="" -export_path="../../../Desktop/Linux/linux/Rhythia.zip" +export_path="../../../Desktop/Linux/Rhythia.zip" patches=PackedStringArray() patch_delta_encoding=false patch_delta_compression_level_zstd=19 From 017b4347dd55a76b53b08f655c05e8100beda8b5 Mon Sep 17 00:00:00 2001 From: noobour Date: Thu, 15 Oct 2026 15:28:03 -0400 Subject: [PATCH 03/13] skin preview, edge buffer, mapinfo overhaul wip --- prefabs/map_info_container.tscn | 215 +++--- scenes/game.tscn | 66 +- scenes/main.tscn | 635 +++++++++++++++++- scenes/main_menu.tscn | 4 +- scripts/database/settings/SettingsProfile.cs | 46 ++ scripts/game/camera/CameraLock.cs | 4 + scripts/game/camera/CameraMode.cs | 1 + scripts/game/camera/CameraSpin.cs | 1 + scripts/game/managers/CursorManager.cs | 11 +- scripts/game/ui/Grid.cs | 11 + scripts/ui/SettingsMenu.cs | 39 ++ scripts/ui/menu/SkinPreview/GridPreview.cs | 50 ++ .../ui/menu/SkinPreview/GridPreview.cs.uid | 1 + .../ui/menu/SkinPreview/HealthBarPreview.cs | 42 ++ .../menu/SkinPreview/HealthBarPreview.cs.uid | 1 + .../ui/menu/SkinPreview/PanelLeftPreview.cs | 49 ++ .../menu/SkinPreview/PanelLeftPreview.cs.uid | 1 + .../ui/menu/SkinPreview/PanelRightPreview.cs | 52 ++ .../menu/SkinPreview/PanelRightPreview.cs.uid | 1 + .../ui/menu/SkinPreview/ProgressBarPreview.cs | 32 + .../SkinPreview/ProgressBarPreview.cs.uid | 1 + scripts/ui/menu/SkinPreview/TitlePreview.cs | 28 + .../ui/menu/SkinPreview/TitlePreview.cs.uid | 1 + scripts/ui/menu/play/MapInfoContainer.cs | 21 +- 24 files changed, 1165 insertions(+), 148 deletions(-) create mode 100644 scripts/ui/menu/SkinPreview/GridPreview.cs create mode 100644 scripts/ui/menu/SkinPreview/GridPreview.cs.uid create mode 100644 scripts/ui/menu/SkinPreview/HealthBarPreview.cs create mode 100644 scripts/ui/menu/SkinPreview/HealthBarPreview.cs.uid create mode 100644 scripts/ui/menu/SkinPreview/PanelLeftPreview.cs create mode 100644 scripts/ui/menu/SkinPreview/PanelLeftPreview.cs.uid create mode 100644 scripts/ui/menu/SkinPreview/PanelRightPreview.cs create mode 100644 scripts/ui/menu/SkinPreview/PanelRightPreview.cs.uid create mode 100644 scripts/ui/menu/SkinPreview/ProgressBarPreview.cs create mode 100644 scripts/ui/menu/SkinPreview/ProgressBarPreview.cs.uid create mode 100644 scripts/ui/menu/SkinPreview/TitlePreview.cs create mode 100644 scripts/ui/menu/SkinPreview/TitlePreview.cs.uid diff --git a/prefabs/map_info_container.tscn b/prefabs/map_info_container.tscn index db3771d1..0e36623f 100644 --- a/prefabs/map_info_container.tscn +++ b/prefabs/map_info_container.tscn @@ -33,19 +33,6 @@ corner_radius_top_right = 4 corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 -[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_i21mh"] -content_margin_left = 2.0 -content_margin_top = 2.0 -content_margin_right = 2.0 -content_margin_bottom = 2.0 - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1m5pv"] -bg_color = Color(0, 0, 0, 0.3764706) -corner_radius_top_left = 4 -corner_radius_top_right = 4 -corner_radius_bottom_right = 4 -corner_radius_bottom_left = 4 - [sub_resource type="ShaderMaterial" id="ShaderMaterial_4d08m"] shader = ExtResource("2_nrche") shader_parameter/outline_color = Color(0.05, 0.05, 0.05, 1) @@ -70,6 +57,13 @@ corner_radius_top_right = 4 corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1m5pv"] +bg_color = Color(0, 0, 0, 0.3764706) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 + [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_6xsea"] content_margin_left = 2.0 content_margin_top = 2.0 @@ -176,7 +170,7 @@ outline_color = Color(0, 0, 0, 1) shadow_size = 4 shadow_color = Color(0, 0, 0, 1) -[node name="MapInfoContainer" type="Panel" unique_id=150923669 node_paths=PackedStringArray("info", "dim", "coverBackground", "cover", "infoSubholder", "mainLabel", "extraLabel", "artistLink", "exportButton", "favoriteButton", "videoButton", "videoDialog", "copyButton", "copyDialog", "deleteButton", "actions", "preview", "speedHolder", "speedPresets", "playHolder", "startButton", "leaderboard", "lbScrollContainer", "lbContainer", "lbExpand", "lbHide")] +[node name="MapInfoContainer" type="Panel" unique_id=150923669 node_paths=PackedStringArray("info", "dim", "coverBackground", "cover", "mainLabel", "extraLabel", "artistLink", "exportButton", "favoriteButton", "videoButton", "videoDialog", "copyButton", "copyDialog", "deleteButton", "actions", "preview", "speedHolder", "speedPresets", "playHolder", "startButton", "leaderboard", "lbScrollContainer", "lbContainer", "lbExpand", "lbHide")] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -188,19 +182,18 @@ theme_override_styles/panel = SubResource("StyleBoxEmpty_svokg") script = ExtResource("1_50xtp") info = NodePath("Info") dim = NodePath("Dim") -coverBackground = NodePath("Info/ScrollContainer/HBoxContainer/Background") -cover = NodePath("Info/ScrollContainer/HBoxContainer/Background/Cover") -infoSubholder = NodePath("Info/ScrollContainer/HBoxContainer") -mainLabel = NodePath("Info/ScrollContainer/HBoxContainer/Subholder/Main") -extraLabel = NodePath("Info/ScrollContainer/HBoxContainer/Subholder/Extra") -artistLink = NodePath("Info/ScrollContainer/HBoxContainer/Background/ArtistLink") -exportButton = NodePath("Info/ScrollContainer/HBoxContainer/Subholder/Buttons/Export") -favoriteButton = NodePath("Info/ScrollContainer/HBoxContainer/Subholder/Buttons/Favorite") -videoButton = NodePath("Info/ScrollContainer/HBoxContainer/Subholder/Buttons/Video") -videoDialog = NodePath("Info/ScrollContainer/HBoxContainer/Subholder/Buttons/Video/VideoDialog") -copyButton = NodePath("Info/ScrollContainer/HBoxContainer/Subholder/Buttons/Copy") -copyDialog = NodePath("Info/ScrollContainer/HBoxContainer/Subholder/Buttons/Copy/CopyDialog") -deleteButton = NodePath("Info/ScrollContainer/HBoxContainer/Subholder/Buttons/Delete") +coverBackground = NodePath("Info/Control/Background") +cover = NodePath("Info/Control/Background/Cover") +mainLabel = NodePath("Info/Control/infoControl/infoSubholder/Main") +extraLabel = NodePath("Info/Control/infoControl/infoSubholder/Extra") +artistLink = NodePath("Info/Control/Background/ArtistLink") +exportButton = NodePath("Info/Control/infoControl/infoSubholder/Buttons/Export") +favoriteButton = NodePath("Info/Control/infoControl/infoSubholder/Buttons/Favorite") +videoButton = NodePath("Info/Control/infoControl/infoSubholder/Buttons/Video") +videoDialog = NodePath("Info/Control/infoControl/infoSubholder/Buttons/Video/VideoDialog") +copyButton = NodePath("Info/Control/infoControl/infoSubholder/Buttons/Copy") +copyDialog = NodePath("Info/Control/infoControl/infoSubholder/Buttons/Copy/CopyDialog") +deleteButton = NodePath("Info/Control/infoControl/infoSubholder/Buttons/Delete") actions = NodePath("Actions") preview = NodePath("Actions/ScrollContainer/Holder/Preview/AspectRatioContainer/FlatPreview") speedHolder = NodePath("Actions/ScrollContainer/Holder/Speed") @@ -232,46 +225,57 @@ grow_horizontal = 2 grow_vertical = 2 theme_override_styles/panel = SubResource("StyleBoxFlat_1q06g") -[node name="ScrollContainer" type="ScrollContainer" parent="Info" unique_id=771327651] +[node name="Outline" type="Panel" parent="Info" unique_id=1992047374] +material = SubResource("ShaderMaterial_4d08m") +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_w0o2h") + +[node name="Control" type="Control" parent="Info" unique_id=358752342] +clip_contents = true layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -mouse_filter = 0 mouse_force_pass_scroll_events = false theme = ExtResource("4_4d08m") -theme_override_styles/panel = SubResource("StyleBoxEmpty_i21mh") - -[node name="HBoxContainer" type="HBoxContainer" parent="Info/ScrollContainer" unique_id=660353866] -custom_minimum_size = Vector2(0, 245) -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -[node name="Background" type="TextureRect" parent="Info/ScrollContainer/HBoxContainer" unique_id=1995472053] +[node name="Background" type="TextureRect" parent="Info/Control" unique_id=1995472053] show_behind_parent = true -layout_mode = 2 +layout_mode = 1 +anchors_preset = -1 +anchor_right = 0.34800002 +anchor_bottom = 0.99300003 +offset_left = 2.0 +offset_top = 2.0 +offset_right = -0.34414673 +offset_bottom = -0.040008545 texture = ExtResource("3_ne4r3") expand_mode = 2 -stretch_mode = 4 -[node name="Cover" type="TextureRect" parent="Info/ScrollContainer/HBoxContainer/Background" unique_id=1954943621] +[node name="Cover" type="TextureRect" parent="Info/Control/Background" unique_id=1954943621] layout_mode = 1 anchors_preset = -1 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = 8.0 -offset_right = -8.0 -offset_bottom = -8.0 +anchor_left = 0.029000001 +anchor_top = 0.029000001 +anchor_right = 0.9710001 +anchor_bottom = 0.9710001 +offset_left = -0.0040006638 +offset_top = -0.0040006638 +offset_right = 0.003967285 +offset_bottom = 0.003967285 grow_horizontal = 2 grow_vertical = 2 expand_mode = 1 -stretch_mode = 6 -[node name="ArtistLink" type="Button" parent="Info/ScrollContainer/HBoxContainer/Background" unique_id=752801089] +[node name="ArtistLink" type="Button" parent="Info/Control/Background" unique_id=752801089] layout_mode = 1 anchors_preset = -1 anchor_left = 0.5 @@ -290,7 +294,7 @@ flat = true alignment = 0 script = ExtResource("4_dccrs") -[node name="Panel" type="Panel" parent="Info/ScrollContainer/HBoxContainer/Background/ArtistLink" unique_id=194309589] +[node name="Panel" type="Panel" parent="Info/Control/Background/ArtistLink" unique_id=194309589] show_behind_parent = true layout_mode = 1 anchors_preset = 15 @@ -301,65 +305,96 @@ grow_vertical = 2 mouse_filter = 2 theme_override_styles/panel = SubResource("StyleBoxFlat_1m5pv") -[node name="CoverContainer" type="AspectRatioContainer" parent="Info/ScrollContainer/HBoxContainer" unique_id=1266967334] +[node name="CoverContainer" type="AspectRatioContainer" parent="Info/Control" unique_id=1266967334] visible = false -layout_mode = 2 +layout_mode = 0 +offset_left = 282.0 +offset_top = 2.0 +offset_right = 282.0 +offset_bottom = 278.0 alignment_horizontal = 0 -[node name="Subholder" type="Panel" parent="Info/ScrollContainer/HBoxContainer" unique_id=80746001] -layout_mode = 2 +[node name="infoControl" type="Control" parent="Info/Control" unique_id=1409035100] +layout_mode = 1 +anchor_left = 0.35300002 +anchor_right = 1.0 +anchor_bottom = 0.99300003 +offset_left = -0.34335327 +offset_right = -1.5853882 +offset_bottom = -0.040008545 +grow_horizontal = 0 + +[node name="infoSubholder" type="Panel" parent="Info/Control/infoControl" unique_id=80746001] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.056 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -0.078229904 +offset_right = -0.25408936 +grow_horizontal = 2 +grow_vertical = 2 size_flags_horizontal = 3 -[node name="Extra" type="RichTextLabel" parent="Info/ScrollContainer/HBoxContainer/Subholder" unique_id=469525934] +[node name="Extra" type="RichTextLabel" parent="Info/Control/infoControl/infoSubholder" unique_id=469525934] layout_mode = 1 anchors_preset = -1 +anchor_left = 0.019000001 +anchor_top = 0.572 anchor_right = 1.0 anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = 138.0 -offset_right = -8.399963 -offset_bottom = -50.0 -grow_horizontal = 0 +offset_left = -0.08819294 +offset_top = -0.51600647 +offset_right = -8.0 +offset_bottom = -60.0 +grow_horizontal = 2 +grow_vertical = 2 theme = ExtResource("4_4d08m") theme_override_font_sizes/normal_font_size = 18 bbcode_enabled = true text = "[color=ffffff88]{0} -{1} notes -[color=ffffff44]{2}" +{1} notes" +fit_content = true +autowrap_mode = 2 horizontal_alignment = 2 vertical_alignment = 2 -[node name="Main" type="RichTextLabel" parent="Info/ScrollContainer/HBoxContainer/Subholder" unique_id=394044659] +[node name="Main" type="RichTextLabel" parent="Info/Control/infoControl/infoSubholder" unique_id=394044659] layout_mode = 1 anchors_preset = -1 -anchor_right = 1.0 -offset_left = 8.0 +anchor_left = 0.015000001 +anchor_right = 0.984 +anchor_bottom = 0.57600003 +offset_left = 0.21499968 offset_top = 6.0 -offset_right = -8.399963 -offset_bottom = 130.0 +offset_right = -0.09597778 +offset_bottom = -0.12800598 mouse_filter = 1 theme = ExtResource("4_4d08m") theme_override_constants/paragraph_separation = 4 bbcode_enabled = true text = "[outline_size=2][font_size=24]{0} -[color={1}]{2} [font_size=16][color=909096]by {3}" +[color={1}]{2} [font_size=16][color=909096] +by {3} +[font_size=12][color=ffffff44]{4}" -[node name="Buttons" type="HBoxContainer" parent="Info/ScrollContainer/HBoxContainer/Subholder" unique_id=1191092010] +[node name="Buttons" type="HBoxContainer" parent="Info/Control/infoControl/infoSubholder" unique_id=1191092010] custom_minimum_size = Vector2(0, 40) layout_mode = 1 anchors_preset = -1 -anchor_top = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = 8.0 -offset_top = -46.0 -offset_right = -6.0 -offset_bottom = -6.0 +anchor_left = 0.016 +anchor_top = 0.83500004 +anchor_right = 0.98800004 +anchor_bottom = 0.97800004 +offset_left = 0.20531178 +offset_top = -0.13000488 +offset_right = -0.1539917 +offset_bottom = 0.115997314 grow_horizontal = 0 grow_vertical = 0 alignment = 2 -[node name="Export" type="Button" parent="Info/ScrollContainer/HBoxContainer/Subholder/Buttons" unique_id=2033571562] +[node name="Export" type="Button" parent="Info/Control/infoControl/infoSubholder/Buttons" unique_id=2033571562] layout_mode = 2 tooltip_text = "Exports map into a .phxm file to share easily" focus_mode = 0 @@ -370,7 +405,7 @@ theme_override_constants/icon_max_width = 24 icon = ExtResource("5_g02bu") icon_alignment = 1 -[node name="Favorite" type="Button" parent="Info/ScrollContainer/HBoxContainer/Subholder/Buttons" unique_id=1022164792] +[node name="Favorite" type="Button" parent="Info/Control/infoControl/infoSubholder/Buttons" unique_id=1022164792] layout_mode = 2 tooltip_text = "Favorite" focus_mode = 0 @@ -381,7 +416,7 @@ theme_override_constants/icon_max_width = 24 icon = ExtResource("5_1m5pv") icon_alignment = 1 -[node name="Video" type="Button" parent="Info/ScrollContainer/HBoxContainer/Subholder/Buttons" unique_id=1985048325] +[node name="Video" type="Button" parent="Info/Control/infoControl/infoSubholder/Buttons" unique_id=1985048325] visible = false layout_mode = 2 tooltip_text = "Add Video" @@ -394,7 +429,7 @@ disabled = true icon = ExtResource("6_g02bu") icon_alignment = 1 -[node name="VideoDialog" type="FileDialog" parent="Info/ScrollContainer/HBoxContainer/Subholder/Buttons/Video" unique_id=72805866] +[node name="VideoDialog" type="FileDialog" parent="Info/Control/infoControl/infoSubholder/Buttons/Video" unique_id=72805866] oversampling_override = 1.0 title = "Open a File" position = Vector2i(0, 36) @@ -403,7 +438,7 @@ access = 2 filters = PackedStringArray("*.mp4") use_native_dialog = true -[node name="Copy" type="Button" parent="Info/ScrollContainer/HBoxContainer/Subholder/Buttons" unique_id=2053076461] +[node name="Copy" type="Button" parent="Info/Control/infoControl/infoSubholder/Buttons" unique_id=2053076461] visible = false layout_mode = 2 tooltip_text = "Copy" @@ -415,12 +450,12 @@ theme_override_constants/icon_max_width = 24 icon = ExtResource("7_oibm8") icon_alignment = 1 -[node name="CopyDialog" type="FileDialog" parent="Info/ScrollContainer/HBoxContainer/Subholder/Buttons/Copy" unique_id=1634895255] +[node name="CopyDialog" type="FileDialog" parent="Info/Control/infoControl/infoSubholder/Buttons/Copy" unique_id=1634895255] access = 2 filters = PackedStringArray("*.phxm") use_native_dialog = true -[node name="Delete" type="Button" parent="Info/ScrollContainer/HBoxContainer/Subholder/Buttons" unique_id=2015809903] +[node name="Delete" type="Button" parent="Info/Control/infoControl/infoSubholder/Buttons" unique_id=2015809903] layout_mode = 2 tooltip_text = "Delete" focus_mode = 0 @@ -431,17 +466,6 @@ theme_override_constants/icon_max_width = 24 icon = ExtResource("8_ssthb") icon_alignment = 1 -[node name="Outline" type="Panel" parent="Info" unique_id=1992047374] -material = SubResource("ShaderMaterial_4d08m") -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -theme_override_styles/panel = SubResource("StyleBoxFlat_w0o2h") - [node name="Actions" type="Panel" parent="." unique_id=1101045169] clip_contents = true layout_mode = 1 @@ -533,7 +557,7 @@ offset_right = -8.0 offset_bottom = -8.0 grow_horizontal = 2 grow_vertical = 0 -tooltip_text = "Favorite" +tooltip_text = "Changes how the camera functions: Spin enables a first-person perspective, while Lock keeps the camera still" theme = ExtResource("4_4d08m") script = ExtResource("11_ne4r3") container = NodePath("ScrollContainer/VBoxContainer") @@ -665,6 +689,7 @@ grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("4_4d08m") theme_override_styles/panel = SubResource("StyleBoxEmpty_6xsea") +vertical_scroll_mode = 0 [node name="Presets" type="HBoxContainer" parent="Actions/ScrollContainer/Holder/Speed/ScrollContainer" unique_id=163344429] layout_mode = 2 @@ -907,6 +932,8 @@ layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 +offset_left = -3.0 +offset_right = -3.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 diff --git a/scenes/game.tscn b/scenes/game.tscn index 1d706810..97ec2a45 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -44,7 +44,7 @@ [ext_resource type="Script" uid="uid://dlxxg2h4cl5hj" path="res://scripts/game/ui/PauseMenu.cs" id="38_8ool0"] [ext_resource type="Script" uid="uid://c24b7vefbxvbh" path="res://scripts/game/ui/PlaytestOverlay.cs" id="40_m4url"] -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_a6jk1"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_05nbr"] resource_name = "Material" transparency = 1 shading_mode = 0 @@ -52,10 +52,10 @@ albedo_texture = ExtResource("2_q78ea") texture_repeat = false [sub_resource type="QuadMesh" id="QuadMesh_aih2q"] -material = SubResource("StandardMaterial3D_a6jk1") +material = SubResource("StandardMaterial3D_05nbr") size = Vector2(4, 4) -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lvhmj"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0sl42"] transparency = 1 shading_mode = 0 disable_ambient_light = true @@ -66,7 +66,7 @@ texture_repeat = false distance_fade_min_distance = 1076.07 [sub_resource type="QuadMesh" id="QuadMesh_xij4d"] -material = SubResource("StandardMaterial3D_lvhmj") +material = SubResource("StandardMaterial3D_0sl42") size = Vector2(0.263, 0.263) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ssr8x"] @@ -78,14 +78,14 @@ vertex_color_use_as_albedo = true vertex_color_is_srgb = true albedo_texture = ExtResource("13_6rhgc") -[sub_resource type="QuadMesh" id="QuadMesh_5p2n8"] +[sub_resource type="QuadMesh" id="QuadMesh_458eo"] [sub_resource type="MultiMesh" id="MultiMesh_e28va"] transform_format = 1 use_colors = true -mesh = SubResource("QuadMesh_5p2n8") +mesh = SubResource("QuadMesh_458eo") -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_05nbr"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_h3rex"] resource_name = "Material" transparency = 1 shading_mode = 0 @@ -93,18 +93,18 @@ albedo_texture = ExtResource("12_pr1ej") texture_repeat = false [sub_resource type="QuadMesh" id="QuadMesh_0sl42"] -material = SubResource("StandardMaterial3D_05nbr") +material = SubResource("StandardMaterial3D_h3rex") size = Vector2(4, 4) -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rc4du"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fedci"] transparency = 1 shading_mode = 0 albedo_texture = ExtResource("36_05nbr") [sub_resource type="QuadMesh" id="QuadMesh_oaba0"] -material = SubResource("StandardMaterial3D_rc4du") +material = SubResource("StandardMaterial3D_fedci") -[sub_resource type="ViewportTexture" id="ViewportTexture_pl11u"] +[sub_resource type="ViewportTexture" id="ViewportTexture_qkpxi"] viewport_path = NodePath("Runner/HUD/Health/HealthViewport") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4p8vu"] @@ -112,7 +112,7 @@ resource_local_to_scene = true transparency = 1 shading_mode = 0 disable_fog = true -albedo_texture = SubResource("ViewportTexture_pl11u") +albedo_texture = SubResource("ViewportTexture_qkpxi") texture_repeat = false [sub_resource type="QuadMesh" id="QuadMesh_b1hbo"] @@ -120,7 +120,7 @@ resource_local_to_scene = true material = SubResource("StandardMaterial3D_4p8vu") size = Vector2(10.88, 0.8) -[sub_resource type="ViewportTexture" id="ViewportTexture_sww3w"] +[sub_resource type="ViewportTexture" id="ViewportTexture_tel4y"] viewport_path = NodePath("Runner/HUD/PanelLeft/PanelLeftViewport") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nody0"] @@ -128,7 +128,7 @@ resource_local_to_scene = true transparency = 1 shading_mode = 0 disable_fog = true -albedo_texture = SubResource("ViewportTexture_sww3w") +albedo_texture = SubResource("ViewportTexture_tel4y") texture_repeat = false [sub_resource type="QuadMesh" id="QuadMesh_ssyve"] @@ -158,7 +158,7 @@ font_size = 50 font = ExtResource("21_05nbr") font_size = 50 -[sub_resource type="ViewportTexture" id="ViewportTexture_suyxu"] +[sub_resource type="ViewportTexture" id="ViewportTexture_5q0nq"] viewport_path = NodePath("Runner/HUD/PanelRight/PanelRightViewport") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ro5ir"] @@ -166,7 +166,7 @@ resource_local_to_scene = true transparency = 1 shading_mode = 0 disable_fog = true -albedo_texture = SubResource("ViewportTexture_suyxu") +albedo_texture = SubResource("ViewportTexture_5q0nq") texture_repeat = false [sub_resource type="LabelSettings" id="LabelSettings_5bid2"] @@ -189,7 +189,7 @@ font_size = 50 [sub_resource type="ShaderMaterial" id="ShaderMaterial_gc8yu"] shader = ExtResource("14_3xchs") -[sub_resource type="ViewportTexture" id="ViewportTexture_bhx41"] +[sub_resource type="ViewportTexture" id="ViewportTexture_dgi5k"] viewport_path = NodePath("Runner/HUD/ProgressBar/ProgressBarViewport") [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p1h21"] @@ -197,7 +197,7 @@ resource_local_to_scene = true transparency = 1 shading_mode = 0 disable_fog = true -albedo_texture = SubResource("ViewportTexture_bhx41") +albedo_texture = SubResource("ViewportTexture_dgi5k") texture_repeat = false [sub_resource type="QuadMesh" id="QuadMesh_7mook"] @@ -281,12 +281,13 @@ CursorManager = NodePath("CursorManager") UseGameSpace = true AddSpaceAsChild = true -[node name="CursorManager" type="Node" parent="." unique_id=862696440 node_paths=PackedStringArray("runner", "playerInputController", "replayManager", "cursorMesh", "camera")] +[node name="CursorManager" type="Node" parent="." unique_id=862696440 node_paths=PackedStringArray("runner", "playerInputController", "replayManager", "cursorMesh", "bufferCursor", "camera")] script = ExtResource("2_nepv3") runner = NodePath("../Runner") playerInputController = NodePath("../PlayerInputController") replayManager = NodePath("../ReplayManager") cursorMesh = NodePath("../Runner/HUD/Grid/Cursor") +bufferCursor = NodePath("../Runner/HUD/Grid/BufferCursor") camera = NodePath("../Runner/Camera3D") [node name="TrailRenderer" type="Node" parent="CursorManager" unique_id=2058712869 node_paths=PackedStringArray("cursor", "cursorTrail", "runner")] @@ -325,6 +326,12 @@ script = ExtResource("27_js0lu") mesh = SubResource("QuadMesh_xij4d") skeleton = NodePath("../../../..") +[node name="BufferCursor" type="MeshInstance3D" parent="Runner/HUD/Grid" unique_id=703771191] +visible = false +transparency = 1.0 +mesh = SubResource("QuadMesh_xij4d") +skeleton = NodePath("../../..") + [node name="CursorTrail" type="MultiMeshInstance3D" parent="Runner/HUD/Grid" unique_id=913051903] material_override = SubResource("StandardMaterial3D_ssr8x") multimesh = SubResource("MultiMesh_e28va") @@ -405,9 +412,9 @@ anchor_top = 0.65 anchor_right = 0.5 anchor_bottom = 0.65 offset_left = -128.0 -offset_top = -128.0 +offset_top = -166.25 offset_right = 128.0 -offset_bottom = 128.0 +offset_bottom = 89.75128 theme_override_styles/panel = SubResource("StyleBoxFlat_56f8v") [node name="Score" type="Label" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=1330190508] @@ -416,10 +423,10 @@ anchor_left = 0.5 anchor_top = 0.35 anchor_right = 0.5 anchor_bottom = 0.35 -offset_left = -14.5 -offset_top = -28.5 -offset_right = 14.5 -offset_bottom = 28.5 +offset_left = -15.0 +offset_top = -34.5 +offset_right = 15.0 +offset_bottom = 34.500122 grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("4_rvp5o") @@ -433,6 +440,10 @@ anchor_left = 0.5 anchor_top = 0.65 anchor_right = 0.5 anchor_bottom = 0.65 +offset_left = -28.5 +offset_top = -71.25 +offset_right = 28.5 +offset_bottom = -2.2499695 grow_horizontal = 2 grow_vertical = 2 theme = ExtResource("4_rvp5o") @@ -441,16 +452,15 @@ label_settings = SubResource("LabelSettings_pr1ej") horizontal_alignment = 1 [node name="ComboCount" type="Label" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=531787894] -visible = false anchors_preset = -1 anchor_left = 0.5 anchor_top = 0.86 anchor_right = 0.5 anchor_bottom = 0.86 offset_left = -90.0 -offset_top = -18.0 +offset_top = -34.5 offset_right = 90.0 -offset_bottom = 18.0 +offset_bottom = 34.5 grow_horizontal = 2 grow_vertical = 2 text = "0" diff --git a/scenes/main.tscn b/scenes/main.tscn index 02c331f3..6781d7ef 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -8,8 +8,29 @@ [ext_resource type="Texture2D" uid="uid://men3chmi3esy" path="res://textures/ui/add.png" id="6_ya4ey"] [ext_resource type="Shader" uid="uid://rngh60dyh10b" path="res://scripts/shaders/outline.gdshader" id="7_eb6dy"] [ext_resource type="Texture2D" uid="uid://3e1tjlr4m0wt" path="res://user/skins/default/game/cursor.png" id="8_85g3d"] +[ext_resource type="Texture2D" uid="uid://b3g4aw54n6bow" path="res://user/skins/default/game/grid.png" id="8_dgi5k"] +[ext_resource type="Script" uid="uid://nwvon7h1bvhc" path="res://scripts/ui/menu/SkinPreview/TitlePreview.cs" id="9_5q0nq"] [ext_resource type="Script" uid="uid://carutkgoqpr4e" path="res://scripts/ui/MenuCursor.cs" id="9_choun"] [ext_resource type="Script" uid="uid://bmq7ajx48l7ng" path="res://scripts/ui/FPSCounter.cs" id="10_choun"] +[ext_resource type="Script" uid="uid://bxshhmy8fg6nh" path="res://scripts/ui/menu/SkinPreview/PanelLeftPreview.cs" id="10_qkpxi"] +[ext_resource type="Texture2D" uid="uid://dw2gxd3m24h4m" path="res://user/skins/default/game/hits.png" id="11_kmb1v"] +[ext_resource type="Texture2D" uid="uid://ccdaf14yq65jf" path="res://user/skins/default/game/grid_guides.png" id="12_fuf3a"] +[ext_resource type="Texture2D" uid="uid://bc0w1ujoshiyk" path="res://user/skins/default/game/visibility_assist.png" id="13_pibwh"] +[ext_resource type="Texture2D" uid="uid://cxv6ey5xb6b0f" path="res://user/skins/default/game/health_background.png" id="15_5he1u"] +[ext_resource type="Script" uid="uid://cv27mk2qd18i2" path="res://scripts/ui/menu/SkinPreview/PanelRightPreview.cs" id="15_dgi5k"] +[ext_resource type="Texture2D" uid="uid://4x2vfpyjkri6" path="res://user/skins/default/game/health.png" id="16_5poiv"] +[ext_resource type="Texture2D" uid="uid://80bitp5weqrb" path="res://user/skins/default/game/panel_left_background.png" id="18_chjal"] +[ext_resource type="Shader" uid="uid://bx4888tau78tk" path="res://scripts/shaders/combo_progress.gdshader" id="19_cjqg0"] +[ext_resource type="Script" uid="uid://c3xaw5hps8bel" path="res://scripts/ui/menu/SkinPreview/ProgressBarPreview.cs" id="20_j8jky"] +[ext_resource type="FontFile" uid="uid://dhyog1pif7c5i" path="res://fonts/Nunito/Nunito-Bold.ttf" id="20_vchkt"] +[ext_resource type="FontFile" uid="uid://b0ru0lfde5a21" path="res://fonts/Nunito/Nunito-SemiBold.ttf" id="21_txyw0"] +[ext_resource type="Texture2D" uid="uid://diba7c3s8as4s" path="res://user/skins/default/game/panel_right_background.png" id="23_nvyfr"] +[ext_resource type="Script" uid="uid://cfavwgar504b0" path="res://scripts/ui/menu/SkinPreview/HealthBarPreview.cs" id="24_kmb1v"] +[ext_resource type="Texture2D" uid="uid://c3x2cp3tx4vqt" path="res://user/skins/default/game/misses.png" id="24_ty1g6"] +[ext_resource type="Shader" uid="uid://bp2sv5ynsubi2" path="res://scripts/shaders/alpha_gradient.gdshader" id="25_j2jfr"] +[ext_resource type="Script" uid="uid://c0of2i2mjcd3r" path="res://scripts/ui/menu/SkinPreview/GridPreview.cs" id="28_fuf3a"] +[ext_resource type="Texture2D" uid="uid://dmc5f6ajp8xv1" path="res://user/skins/default/game/progress_background.png" id="28_o7ddy"] +[ext_resource type="Texture2D" uid="uid://d3s17ehomjscd" path="res://user/skins/default/game/progress.png" id="29_0loja"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1q06g"] bg_color = Color(0, 0, 0, 0.8784314) @@ -104,6 +125,187 @@ corner_radius_top_right = 4 corner_radius_bottom_right = 4 corner_radius_bottom_left = 4 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tel4y"] +bg_color = Color(0.16565639, 0.16565642, 0.16565639, 0.8784314) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color(0, 0, 0, 0.6) +corner_radius_top_left = 12 +corner_radius_top_right = 12 +corner_radius_bottom_right = 12 +corner_radius_bottom_left = 12 + +[sub_resource type="ViewportTexture" id="ViewportTexture_152kg"] +viewport_path = NodePath("Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelLeft/PanelLeftViewport") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r4e17"] +resource_local_to_scene = true +transparency = 1 +shading_mode = 0 +disable_fog = true +albedo_texture = SubResource("ViewportTexture_152kg") +texture_repeat = false + +[sub_resource type="QuadMesh" id="QuadMesh_tel4y"] +size = Vector2(4, 10) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_mlv25"] +shader = ExtResource("19_cjqg0") +shader_parameter/progress = 0.8870000421325 +shader_parameter/colour = Color(1, 1, 1, 1) +shader_parameter/background_colour = Color(0.155, 0.155, 0.155, 1) +shader_parameter/sides = 8 +shader_parameter/thickness = 3.0 +shader_parameter/size = 1.0 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_a82wo"] +bg_color = Color(0, 0, 0, 0) + +[sub_resource type="LabelSettings" id="LabelSettings_gdvew"] +font = ExtResource("20_vchkt") +font_size = 50 + +[sub_resource type="LabelSettings" id="LabelSettings_kjtvk"] +font = ExtResource("21_txyw0") +font_size = 50 + +[sub_resource type="LabelSettings" id="LabelSettings_xrs0c"] +font = ExtResource("21_txyw0") +font_size = 50 + +[sub_resource type="ViewportTexture" id="ViewportTexture_fp3uj"] +viewport_path = NodePath("Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelRight/PanelRightViewport") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_j4bwh"] +resource_local_to_scene = true +transparency = 1 +shading_mode = 0 +disable_fog = true +albedo_texture = SubResource("ViewportTexture_fp3uj") +texture_repeat = false + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qkpxi"] + +[sub_resource type="QuadMesh" id="QuadMesh_y57op"] +material = SubResource("StandardMaterial3D_qkpxi") +size = Vector2(4, 10) + +[sub_resource type="LabelSettings" id="LabelSettings_ksmap"] +font = ExtResource("21_txyw0") +font_size = 30 + +[sub_resource type="LabelSettings" id="LabelSettings_ygd8o"] +font = ExtResource("21_txyw0") +font_size = 30 + +[sub_resource type="LabelSettings" id="LabelSettings_2s0kr"] +font = ExtResource("21_txyw0") +font_size = 50 +font_color = Color(1, 1, 1, 0.768627) + +[sub_resource type="LabelSettings" id="LabelSettings_xaipn"] +font = ExtResource("21_txyw0") +font_size = 50 + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ndrjj"] +shader = ExtResource("25_j2jfr") + +[sub_resource type="ViewportTexture" id="ViewportTexture_rc4du"] +viewport_path = NodePath("Settings/SkinPreviewPanel/SkinPreview/SubViewport/ProgressBar/ProgressBarViewport") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_11yus"] +resource_local_to_scene = true +transparency = 1 +shading_mode = 0 +disable_fog = true +albedo_texture = SubResource("ViewportTexture_rc4du") +texture_repeat = false + +[sub_resource type="QuadMesh" id="QuadMesh_b6ruc"] +resource_local_to_scene = true +material = SubResource("StandardMaterial3D_11yus") +size = Vector2(10.88, 0.8) + +[sub_resource type="ViewportTexture" id="ViewportTexture_od4ux"] +viewport_path = NodePath("Settings/SkinPreviewPanel/SkinPreview/SubViewport/Health/HealthViewport") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xhfw6"] +resource_local_to_scene = true +transparency = 1 +shading_mode = 0 +disable_fog = true +albedo_texture = SubResource("ViewportTexture_od4ux") +texture_repeat = false + +[sub_resource type="QuadMesh" id="QuadMesh_1epgm"] +resource_local_to_scene = true +material = SubResource("StandardMaterial3D_xhfw6") +size = Vector2(10.88, 0.8) + +[sub_resource type="Environment" id="Environment_gdxgs"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_a6jk1"] +resource_name = "Material" +transparency = 1 +shading_mode = 0 +albedo_texture = ExtResource("8_dgi5k") +texture_repeat = false + +[sub_resource type="QuadMesh" id="QuadMesh_augu2"] +material = SubResource("StandardMaterial3D_a6jk1") +size = Vector2(4, 4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lvhmj"] +transparency = 1 +shading_mode = 0 +disable_ambient_light = true +disable_fog = true +albedo_texture = ExtResource("8_85g3d") +texture_filter = 5 +texture_repeat = false +distance_fade_min_distance = 1076.07 + +[sub_resource type="QuadMesh" id="QuadMesh_tm6hj"] +material = SubResource("StandardMaterial3D_lvhmj") +size = Vector2(0.263, 0.263) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kf5aa"] +transparency = 1 +cull_mode = 2 +shading_mode = 0 +disable_fog = true +vertex_color_use_as_albedo = true +vertex_color_is_srgb = true +albedo_texture = ExtResource("11_kmb1v") + +[sub_resource type="QuadMesh" id="QuadMesh_5p2n8"] + +[sub_resource type="MultiMesh" id="MultiMesh_t5ykj"] +transform_format = 1 +use_colors = true +mesh = SubResource("QuadMesh_5p2n8") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_05nbr"] +resource_name = "Material" +transparency = 1 +shading_mode = 0 +albedo_texture = ExtResource("12_fuf3a") +texture_repeat = false + +[sub_resource type="QuadMesh" id="QuadMesh_e755i"] +material = SubResource("StandardMaterial3D_05nbr") +size = Vector2(4, 4) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rc4du"] +transparency = 1 +shading_mode = 0 +albedo_texture = ExtResource("13_pibwh") + +[sub_resource type="QuadMesh" id="QuadMesh_ro3en"] +material = SubResource("StandardMaterial3D_rc4du") + [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_o6xl0"] [sub_resource type="LabelSettings" id="LabelSettings_tipki"] @@ -132,7 +334,6 @@ size = Vector2i(1280, 720) render_target_update_mode = 4 [node name="Settings" type="ColorRect" parent="." unique_id=1393582030 node_paths=PackedStringArray("ImportNightlyDialog", "UserFolderDialog")] -visible = false z_index = 1 anchors_preset = 15 anchor_right = 1.0 @@ -159,10 +360,16 @@ button_mask = 3 [node name="Holder" type="Panel" parent="Settings" unique_id=622538118] layout_mode = 1 anchors_preset = -1 -anchor_left = 0.25 +anchor_left = 0.20400001 anchor_top = 0.25 -anchor_right = 0.75 -anchor_bottom = 0.75 +anchor_right = 0.72400004 +anchor_bottom = 0.75000006 +offset_left = 58.879974 +offset_right = 33.27997 +offset_bottom = -6.1035156e-05 +grow_horizontal = 2 +grow_vertical = 2 +offset_transform_visual_only = false theme = ExtResource("3_tipki") theme_override_styles/panel = SubResource("StyleBoxFlat_1q06g") @@ -381,6 +588,18 @@ text = "SETTINGS" label_settings = SubResource("LabelSettings_osuri") vertical_alignment = 1 +[node name="ShowSkinPreview" type="Button" parent="Settings/Holder/Header" unique_id=558443082] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.499 +anchor_top = 0.15 +anchor_right = 0.75500005 +anchor_bottom = 0.9250001 +offset_left = -0.1000061 +offset_right = -11.940033 +theme = ExtResource("3_tipki") +text = "Show Skin Preview" + [node name="Profiles" type="OptionButton" parent="Settings/Holder/Header" unique_id=716644348] layout_mode = 1 anchors_preset = -1 @@ -441,7 +660,7 @@ caret_blink = true [node name="Outline" type="Panel" parent="Settings/Holder" unique_id=1227163057] material = SubResource("ShaderMaterial_3poq1") layout_mode = 1 -anchors_preset = 15 +anchors_preset = -1 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 @@ -462,6 +681,412 @@ file_mode = 2 access = 2 use_native_dialog = true +[node name="SkinPreviewPanel" type="Panel" parent="Settings" unique_id=499692920] +modulate = Color(1, 1, 1, 0) +light_mask = 512 +visibility_layer = 512 +z_index = 1 +z_as_relative = false +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.609 +anchor_top = 0.31100002 +anchor_right = 0.901 +anchor_bottom = 0.70000005 +offset_left = 0.47998047 +offset_top = 0.07998657 +offset_right = -0.25708008 +offset_bottom = 0.19998169 +offset_transform_enabled = true +offset_transform_pivot_ratio = Vector2(1, 1) +offset_transform_visual_only = false +focus_behavior_recursive = 2 +mouse_filter = 2 +mouse_behavior_recursive = 1 +theme_override_styles/panel = SubResource("StyleBoxFlat_tel4y") + +[node name="Label" type="Label" parent="Settings/SkinPreviewPanel" unique_id=742694072] +z_index = 3 +layout_mode = 1 +anchors_preset = 10 +anchor_right = 1.0 +offset_left = -1.0 +offset_top = -12.0 +offset_right = -1.0 +offset_bottom = 11.0 +grow_horizontal = 2 +text = "SKIN PREVIEW" +horizontal_alignment = 1 + +[node name="SkinPreview" type="SubViewportContainer" parent="Settings/SkinPreviewPanel" unique_id=2122293191] +z_index = 2 +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +stretch = true + +[node name="SubViewport" type="SubViewport" parent="Settings/SkinPreviewPanel/SkinPreview" unique_id=732895320] +own_world_3d = true +transparent_bg = true +handle_input_locally = false +scaling_3d_mode = 5 +size = Vector2i(373, 280) +render_target_update_mode = 4 + +[node name="Combo" type="Node3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport" unique_id=385833504] + +[node name="Label" type="Label3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/Combo" unique_id=372830576] +transform = Transform3D(7, 0, 0, 0, 6.89365, -1.21554, 0, 1.21554, 6.89365, 0, 3.5, -10) +pixel_size = 0.0025 +modulate = Color(1, 1, 1, 0) +outline_modulate = Color(1, 1, 1, 0.39215687) +text = "999" +font = ExtResource("5_choun") +font_size = 64 +outline_size = 4 + +[node name="Title" type="Node3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport" unique_id=840531691] +script = ExtResource("9_5q0nq") + +[node name="Label" type="Label3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/Title" unique_id=2059982806] +transform = Transform3D(2, 0, 0, 0, 1.93185, -0.517638, 0, 0.517638, 1.93185, 0, 8.25, -10) +outline_modulate = Color(0, 0, 0, 0) +text = "N/A - N/A" +font = ExtResource("20_vchkt") +font_size = 64 +autowrap_mode = 3 +width = 2500.0 + +[node name="PanelLeft" type="MeshInstance3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport" unique_id=1497917243] +transform = Transform3D(0.984808, 0, 0.173648, 0, 0.99999994, 0, -0.173648, 0, 0.98480797, -7.5, 9.536743e-07, -9.000001) +material_override = SubResource("StandardMaterial3D_r4e17") +mesh = SubResource("QuadMesh_tel4y") +script = ExtResource("10_qkpxi") + +[node name="PanelLeftViewport" type="SubViewport" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelLeft" unique_id=1517733272] +disable_3d = true +transparent_bg = true +size = Vector2i(250, 625) + +[node name="Background" type="TextureRect" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelLeft/PanelLeftViewport" unique_id=1252591779] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("18_chjal") + +[node name="MultiplierProgress" type="Panel" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelLeft/PanelLeftViewport" unique_id=403597694] +clip_children = 2 +material = SubResource("ShaderMaterial_mlv25") +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.65 +anchor_right = 0.5 +anchor_bottom = 0.65 +offset_left = -128.0 +offset_top = -166.25 +offset_right = 128.0 +offset_bottom = 89.75128 +theme_override_styles/panel = SubResource("StyleBoxFlat_a82wo") + +[node name="Score" type="Label" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelLeft/PanelLeftViewport" unique_id=117882971] +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.35 +anchor_right = 0.5 +anchor_bottom = 0.35 +offset_left = -30.0 +offset_top = -34.5 +offset_right = 30.0 +offset_bottom = 34.500122 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("3_tipki") +text = "0" +label_settings = SubResource("LabelSettings_gdvew") +horizontal_alignment = 1 + +[node name="Multiplier" type="Label" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelLeft/PanelLeftViewport" unique_id=1512976271] +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.65 +anchor_right = 0.5 +anchor_bottom = 0.65 +offset_left = -28.5 +offset_top = -71.25 +offset_right = 28.5 +offset_bottom = -2.2499695 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("3_tipki") +text = "1x" +label_settings = SubResource("LabelSettings_kjtvk") +horizontal_alignment = 1 + +[node name="ComboCount" type="Label" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelLeft/PanelLeftViewport" unique_id=132983092] +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.86 +anchor_right = 0.5 +anchor_bottom = 0.86 +offset_left = -90.0 +offset_top = -34.5 +offset_right = 90.0 +offset_bottom = 34.5 +grow_horizontal = 2 +grow_vertical = 2 +text = "0" +label_settings = SubResource("LabelSettings_xrs0c") +horizontal_alignment = 1 + +[node name="PanelRight" type="MeshInstance3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport" unique_id=1186413604] +transform = Transform3D(0.984808, 0, -0.173648, 0, 1, 0, 0.173648, 0, 0.984808, 7.5, 0, -9) +material_override = SubResource("StandardMaterial3D_j4bwh") +mesh = SubResource("QuadMesh_y57op") +script = ExtResource("15_dgi5k") + +[node name="PanelRightViewport" type="SubViewport" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelRight" unique_id=353250979] +process_mode = 3 +disable_3d = true +transparent_bg = true +canvas_item_default_texture_filter = 2 +size = Vector2i(250, 625) + +[node name="Background" type="TextureRect" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelRight/PanelRightViewport" unique_id=519398642] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("23_nvyfr") + +[node name="Accuracy" type="Label" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelRight/PanelRightViewport" unique_id=1917390646] +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.35 +anchor_right = 0.5 +anchor_bottom = 0.35 +grow_horizontal = 2 +grow_vertical = 2 +theme = ExtResource("3_tipki") +text = "100.00%" +label_settings = SubResource("LabelSettings_gdvew") +horizontal_alignment = 1 + +[node name="Hits" type="Label" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelRight/PanelRightViewport" unique_id=163179924] +modulate = Color(1, 1, 1, 0.627451) +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.625 +anchor_right = 0.5 +anchor_bottom = 0.625 +offset_right = -25.0 +offset_bottom = -4.0 +grow_horizontal = 0 +grow_vertical = 2 +size_flags_horizontal = 4 +theme = ExtResource("3_tipki") +text = "0" +label_settings = SubResource("LabelSettings_ksmap") +horizontal_alignment = 2 + +[node name="Misses" type="Label" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelRight/PanelRightViewport" unique_id=1997376473] +modulate = Color(1, 1, 1, 0.627451) +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.625 +anchor_right = 0.5 +anchor_bottom = 0.625 +offset_left = 25.0 +offset_bottom = -4.0 +grow_vertical = 2 +size_flags_horizontal = 4 +theme = ExtResource("3_tipki") +text = "0" +label_settings = SubResource("LabelSettings_ygd8o") + +[node name="SimpleMisses" type="Label" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelRight/PanelRightViewport" unique_id=678419666] +visible = false +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 4 +theme = ExtResource("3_tipki") +text = "0" +label_settings = SubResource("LabelSettings_2s0kr") + +[node name="Sum" type="Label" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelRight/PanelRightViewport" unique_id=1801663974] +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.7 +anchor_right = 0.5 +anchor_bottom = 0.7 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 4 +theme = ExtResource("3_tipki") +text = "0" +label_settings = SubResource("LabelSettings_xaipn") +horizontal_alignment = 1 + +[node name="HitsIcon" type="TextureRect" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelRight/PanelRightViewport" unique_id=744614831] +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.625 +anchor_right = 0.5 +anchor_bottom = 0.625 +offset_top = -12.0 +offset_right = -2.0 +offset_bottom = 7.0 +grow_horizontal = 0 +grow_vertical = 2 +theme = ExtResource("3_tipki") +texture = ExtResource("11_kmb1v") +expand_mode = 2 + +[node name="MissesIcon" type="TextureRect" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelRight/PanelRightViewport" unique_id=350489808] +anchors_preset = -1 +anchor_left = 0.5 +anchor_top = 0.625 +anchor_right = 0.5 +anchor_bottom = 0.625 +offset_left = 2.0 +offset_top = -12.0 +offset_bottom = 7.0 +grow_vertical = 2 +theme = ExtResource("3_tipki") +texture = ExtResource("24_ty1g6") +expand_mode = 2 + +[node name="Line" type="ColorRect" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/PanelRight/PanelRightViewport" unique_id=282594885] +material = SubResource("ShaderMaterial_ndrjj") +anchors_preset = -1 +anchor_top = 0.65 +anchor_right = 1.0 +anchor_bottom = 0.65 +offset_left = 16.0 +offset_right = -16.0 +offset_bottom = 2.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="ProgressBar" type="MeshInstance3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport" unique_id=2054063058] +transform = Transform3D(1, -3.7252903e-09, 0, 0, 0.965926, -0.258819, 1.4901161e-08, 0.258819, 0.965926, 4.7683716e-07, 6.3, -10) +cast_shadow = 0 +mesh = SubResource("QuadMesh_b6ruc") +script = ExtResource("20_j8jky") + +[node name="Progress" type="Node3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/ProgressBar" unique_id=734363712] +transform = Transform3D(1, 0, 0, 0, 0.96592563, 0.25881892, 0, -0.25881892, 0.96592563, 0, -3.4971423, 11.289815) + +[node name="Label" type="Label3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/ProgressBar/Progress" unique_id=72322109] +transform = Transform3D(3.5, 0, 0, 0, 3.38074, -0.905867, 0, 0.905867, 3.38074, 0, 7, -10) +pixel_size = 0.0025 +modulate = Color(1, 1, 1, 0.74509805) +outline_modulate = Color(0, 0, 0, 0) +text = "0:00 / 0:00" +font = ExtResource("21_txyw0") +font_size = 64 + +[node name="ProgressBarViewport" type="SubViewport" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/ProgressBar" unique_id=992979397] +disable_3d = true +transparent_bg = true +canvas_item_default_texture_filter = 2 +size = Vector2i(544, 40) +size_2d_override = Vector2i(1088, 80) +size_2d_override_stretch = true +render_target_update_mode = 4 + +[node name="Background" type="TextureRect" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/ProgressBar/ProgressBarViewport" unique_id=204557992] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("28_o7ddy") + +[node name="Main" type="TextureRect" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/ProgressBar/ProgressBarViewport" unique_id=242643232] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("29_0loja") +expand_mode = 1 +stretch_mode = 1 + +[node name="Health" type="MeshInstance3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport" unique_id=1898914194] +transform = Transform3D(1, 0, 0, 0, 0.965926, 0.258819, 0, -0.258819, 0.965926, 0, -6.3, -10) +cast_shadow = 0 +mesh = SubResource("QuadMesh_1epgm") +script = ExtResource("24_kmb1v") + +[node name="HealthViewport" type="SubViewport" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/Health" unique_id=1286049907] +disable_3d = true +transparent_bg = true +canvas_item_default_texture_filter = 2 +size = Vector2i(544, 40) +size_2d_override = Vector2i(1088, 80) +size_2d_override_stretch = true +render_target_update_mode = 4 + +[node name="Background" type="TextureRect" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/Health/HealthViewport" unique_id=1346647656] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("15_5he1u") + +[node name="Main" type="TextureRect" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/Health/HealthViewport" unique_id=94707981] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("16_5poiv") +expand_mode = 1 +stretch_mode = 1 + +[node name="Camera3D" type="Camera3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport" unique_id=1275593072] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3.75) +environment = SubResource("Environment_gdxgs") +current = true +fov = 70.0 +size = 5.0 + +[node name="Grid" type="MeshInstance3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport" unique_id=379266135] +mesh = SubResource("QuadMesh_augu2") +script = ExtResource("28_fuf3a") + +[node name="Cursor" type="MeshInstance3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/Grid" unique_id=1140205940] +mesh = SubResource("QuadMesh_tm6hj") +skeleton = NodePath("../..") + +[node name="CursorTrail" type="MultiMeshInstance3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/Grid" unique_id=1031907347] +material_override = SubResource("StandardMaterial3D_kf5aa") +multimesh = SubResource("MultiMesh_t5ykj") + +[node name="GridGuides" type="MeshInstance3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/Grid" unique_id=880461795] +transform = Transform3D(1.01, 0, 0, 0, 1.01, 0, 0, 0, 1.01, 0, 0, -0.2) +visible = false +mesh = SubResource("QuadMesh_e755i") +skeleton = NodePath("../..") + +[node name="VisibilityAssist" type="MeshInstance3D" parent="Settings/SkinPreviewPanel/SkinPreview/SubViewport/Grid" unique_id=2848380] +transform = Transform3D(300, 0, 0, 0, 300, 0, 0, 0, 300, 0, 0, -140) +transparency = 0.25 +mesh = SubResource("QuadMesh_ro3en") +skeleton = NodePath("") + [node name="Volume" type="Panel" parent="." unique_id=1219254705] modulate = Color(1, 1, 1, 0) z_index = 1 diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn index cf30d5cd..95114bcf 100644 --- a/scenes/main_menu.tscn +++ b/scenes/main_menu.tscn @@ -764,7 +764,7 @@ alignment = 2 [node name="Settings" type="Button" parent="Menus/Play/SubTopBar/HBoxContainer" unique_id=384311335] custom_minimum_size = Vector2(0, 36) layout_mode = 2 -tooltip_text = "CTRL + O" +tooltip_text = "Game settings, can be opened up at anytime using CTRL + O" focus_mode = 0 mouse_default_cursor_shape = 2 theme = ExtResource("6_engjn") @@ -776,6 +776,7 @@ script = ExtResource("8_yxnar") [node name="UserFolder" type="Button" parent="Menus/Play/SubTopBar/HBoxContainer" unique_id=1212420658] custom_minimum_size = Vector2(0, 36) layout_mode = 2 +tooltip_text = "Opens up the game's user folder, allows you to manually import or modify files." focus_mode = 0 mouse_default_cursor_shape = 2 theme = ExtResource("6_engjn") @@ -787,6 +788,7 @@ script = ExtResource("27_eku7s") [node name="Import" type="Button" parent="Menus/Play/SubTopBar/HBoxContainer" unique_id=554381373] custom_minimum_size = Vector2(0, 36) layout_mode = 2 +tooltip_text = "Import maps, you can mass import with this" focus_mode = 0 mouse_default_cursor_shape = 2 theme = ExtResource("6_engjn") diff --git a/scripts/database/settings/SettingsProfile.cs b/scripts/database/settings/SettingsProfile.cs index f20d31a2..f3280401 100644 --- a/scripts/database/settings/SettingsProfile.cs +++ b/scripts/database/settings/SettingsProfile.cs @@ -449,6 +449,12 @@ public partial class SettingsProfile /// public SettingsItem OptionalPlaytestParameters { get; private set; } + [Order] + /// + /// Hides Notifications, unless they're important + /// + public SettingsItem HideNotifications { get; private set; } + [Order] /// /// Restarts settings to the game's defaults @@ -1488,6 +1494,14 @@ public SettingsProfile() Section = SettingsSection.Other, }; + HideNotifications = new(false) + { + Id = "HideNotifications", + Title = "Hide Notifications", + Description = "Hides notifications, important ones will still display", + Section = SettingsSection.Other, + }; + ResetToDefaults = new(default) { Id = "ResetToDefaults", @@ -1576,6 +1590,38 @@ private static List getAvailableMeshes() return meshes; } + private static List getAvailableSpaces() + { + List spaces = + [ + "skin", + "circulartunnel", + "conspiracy", + "galaxy", + "grid", + "relic", + "solid", + "squircles", + "tritunnel", + "tunnel", + "void", + "vortex", + "waves", + ]; + string spaceDir = $"{Constants.USER_FOLDER}/spaces"; + + if (Directory.Exists(spaceDir)) + { + string[] objFiles = Directory.GetFiles(spaceDir, "*.tscn"); + foreach (string file in objFiles) + { + spaces.Add(Path.GetFileNameWithoutExtension(file)); + } + } + + return spaces; + } + public static void ImportFromNightlySettings(string settingsPath) { string nightlySettings = File.Exists(settingsPath) ? File.ReadAllText(settingsPath) : null; diff --git a/scripts/game/camera/CameraLock.cs b/scripts/game/camera/CameraLock.cs index 8db9f854..6dcbf5d6 100644 --- a/scripts/game/camera/CameraLock.cs +++ b/scripts/game/camera/CameraLock.cs @@ -12,6 +12,7 @@ public override void Process( ReplayManager replayManager, Camera3D camera, MeshInstance3D cursor, + MeshInstance3D bufferCursor, Vector2 mouseDelta, float sensitivity ) @@ -29,6 +30,7 @@ float sensitivity { attempt.RawCursorPosition = attempt.IsReplay ? replayManager.CursorPosition : attempt.RawCursorPosition + delta; attempt.CursorPosition = attempt.RawCursorPosition.Clamp(-Constants.BOUNDS, Constants.BOUNDS); + attempt.BufferCursorPosition = attempt.IsReplay ? replayManager.CursorPosition : attempt.BufferCursorPosition + delta; } var origin = new Vector3(0, 0, 3.75f); @@ -45,10 +47,12 @@ float sensitivity camera.Rotation = Vector3.Zero; Vector3 cursorPos = new(attempt.CursorPosition.X, attempt.CursorPosition.Y, 0); + Vector3 bufferCursorPos = new(attempt.BufferCursorPosition.X, attempt.BufferCursorPosition.Y, 0); if (cursorPos.IsFinite()) { cursor.Position = cursorPos; + bufferCursor.Position = bufferCursorPos; } } } diff --git a/scripts/game/camera/CameraMode.cs b/scripts/game/camera/CameraMode.cs index 4826b87b..54bb012e 100644 --- a/scripts/game/camera/CameraMode.cs +++ b/scripts/game/camera/CameraMode.cs @@ -12,6 +12,7 @@ public abstract void Process( ReplayManager replayManager, Camera3D camera, MeshInstance3D cursor, + MeshInstance3D bufferCursor, Vector2 mouseDelta, float sensitivity ); diff --git a/scripts/game/camera/CameraSpin.cs b/scripts/game/camera/CameraSpin.cs index e031761a..2a20583c 100644 --- a/scripts/game/camera/CameraSpin.cs +++ b/scripts/game/camera/CameraSpin.cs @@ -12,6 +12,7 @@ public override void Process( ReplayManager replayManager, Camera3D camera, MeshInstance3D cursor, + MeshInstance3D bufferCursor, Vector2 mouseDelta, float sensitivity ) diff --git a/scripts/game/managers/CursorManager.cs b/scripts/game/managers/CursorManager.cs index 2420df1c..dde3d263 100644 --- a/scripts/game/managers/CursorManager.cs +++ b/scripts/game/managers/CursorManager.cs @@ -19,6 +19,9 @@ public partial class CursorManager : Node [Export] private MeshInstance3D cursorMesh; + [Export] + private MeshInstance3D bufferCursor; + [Export] private Camera3D camera; @@ -35,6 +38,7 @@ public override void _Ready() defaultCameraTransform = camera.Transform; cursorMesh ??= GetNode("Cursor"); + bufferCursor ??= GetNode("BufferCursor"); playerInputController ??= GetNode("/PlayerInputController"); replayManager ??= GetNode("ReplayManager"); } @@ -120,7 +124,7 @@ public void UpdateCursor(Vector2 inputDelta, int cursorIndex = 0) var attempt = runner.Attempt; - attempt.CameraMode.Process(attempt, replayManager, camera, cursors[cursorIndex], inputDelta, sensitivity); + attempt.CameraMode.Process(attempt, replayManager, camera, cursors[cursorIndex], bufferCursor, inputDelta, sensitivity); } public void UpdateAutoplayCursor(Vector2 position) @@ -146,18 +150,20 @@ public void UpdateAutoplayCursor(Vector2 position) var mouseDelta = new Vector2(-yaw, -pitch) * (120f * Mathf.Pi); - attempt.CameraMode.Process(attempt, replayManager, camera, cursors[0], mouseDelta, 1f); + attempt.CameraMode.Process(attempt, replayManager, camera, cursors[0], bufferCursor, mouseDelta, 1f); return; } attempt.RawCursorPosition = position; attempt.CursorPosition = position; + attempt.BufferCursorPosition = position; Vector3 cursorPosition = new(position.X, position.Y, 0); camera.Position = new Vector3(0, 0, 3.76f) + cursorPosition * (float)settings.CameraParallax; camera.Rotation = Vector3.Zero; cursors[0].Position = cursorPosition; + bufferCursor.Position = cursorPosition; } // Reset everything to zero so it doesn't have infinite sensitivity @@ -166,6 +172,7 @@ private void repositionAbsolute() camera.Rotation = Vector3.Zero; runner.Attempt.RawCursorPosition = Vector2.Zero; runner.Attempt.CursorPosition = Vector2.Zero; + runner.Attempt.BufferCursorPosition = Vector2.Zero; } private void updateCursorRotation(double delta) => diff --git a/scripts/game/ui/Grid.cs b/scripts/game/ui/Grid.cs index 19536c72..620eb038 100644 --- a/scripts/game/ui/Grid.cs +++ b/scripts/game/ui/Grid.cs @@ -7,6 +7,7 @@ public partial class Grid : MeshInstance3D, IUIComponent [Export] public Runner Runner { get; set; } public MeshInstance3D Cursor { get; set; } + public MeshInstance3D BufferCursor { get; set; } public MultiMeshInstance3D CursorTrail { get; set; } public MeshInstance3D GridGuides { get; set; } public MeshInstance3D VisibilityAssist { get; set; } @@ -42,12 +43,22 @@ public void Init() (float)(Constants.CURSOR_SIZE * Runner.Attempt.Settings.CursorScale) ); + BufferCursor ??= GetNode("BufferCursor"); + (BufferCursor.Mesh as QuadMesh).Size = new Vector2( + (float)(Constants.CURSOR_SIZE * Runner.Attempt.Settings.CursorScale), + (float)(Constants.CURSOR_SIZE * Runner.Attempt.Settings.CursorScale) + ); + (Cursor.GetActiveMaterial(0) as StandardMaterial3D).AlbedoTexture = SkinManager.Instance.Skin.CursorImage; + (BufferCursor.GetActiveMaterial(0) as StandardMaterial3D).AlbedoTexture = SkinManager.Instance.Skin.CursorImage; // Cursor Transparency float alpha = Math.Clamp((float)(double)Runner.Attempt.Settings.CursorOpacity, 0, 1); Cursor.Transparency = 1f - alpha; + BufferCursor.Visible = !Runner.Attempt.Settings.CursorDrift && !Runner.Attempt.IsReplay; + BufferCursor.Transparency = 1f - alpha / 4; + CursorTrail ??= GetNode("CursorTrail"); (CursorTrail.MaterialOverride as StandardMaterial3D).AlbedoTexture = SkinManager.Instance.Skin.CursorImage; diff --git a/scripts/ui/SettingsMenu.cs b/scripts/ui/SettingsMenu.cs index ddc91b4e..33e6d9cc 100644 --- a/scripts/ui/SettingsMenu.cs +++ b/scripts/ui/SettingsMenu.cs @@ -10,11 +10,14 @@ public partial class SettingsMenu : ColorRect public static SettingsMenu Instance; public bool Shown = false; + public bool wasSkinPreviewToggled = false; private Dictionary settingPanels = []; private Button hideButton; + private Button showSkinPreview; private Panel holder; private Panel header; + private Panel skinPreviewPanel; private OptionButton profilesButton; private VBoxContainer sidebar; private Panel categories; @@ -36,7 +39,9 @@ public override void _Ready() hideButton = GetNode