diff --git a/prefabs/hit_popup.tscn b/prefabs/hit_popup.tscn index 13dd7e77..505d985e 100644 --- a/prefabs/hit_popup.tscn +++ b/prefabs/hit_popup.tscn @@ -3,9 +3,7 @@ [ext_resource type="FontFile" uid="uid://dvb6fvy008bhv" path="res://fonts/Roboto/Roboto-Medium.ttf" id="1_65qcu"] [node name="HitPopup" type="Label3D" unique_id=943142641] -transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 0, 0) modulate = Color(1, 1, 1, 0.47058824) outline_modulate = Color(0, 0, 0, 0) -text = "{0} -{1}" +text = "100" font = ExtResource("1_65qcu") diff --git a/prefabs/map_info_container.tscn b/prefabs/map_info_container.tscn index db3771d1..82cb61d5 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.906 +anchor_right = 0.98800004 +anchor_bottom = 0.97800004 +offset_left = 0.20531178 +offset_top = -19.868011 +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 @@ -825,10 +850,11 @@ ticks_position = 3 layout_mode = 1 anchors_preset = -1 anchor_left = 0.1 -anchor_right = 0.9 -anchor_bottom = 0.75 -offset_top = 48.0 -offset_bottom = -24.0 +anchor_top = 0.21800001 +anchor_right = 0.90000004 +anchor_bottom = 0.64000005 +offset_top = 18.352 +offset_bottom = -9.040009 grow_horizontal = 2 grow_vertical = 2 focus_mode = 0 @@ -907,6 +933,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/prefabs/score_panel.tscn b/prefabs/score_panel.tscn index 83bfe436..44a6109d 100644 --- a/prefabs/score_panel.tscn +++ b/prefabs/score_panel.tscn @@ -6,7 +6,7 @@ [ext_resource type="Texture2D" uid="uid://b0k0ltu15bart" path="res://user/skins/default/modifiers/nofail.png" id="4_ngxw4"] [ext_resource type="Theme" uid="uid://dhuhu3mmaew1a" path="res://themes/theme.tres" id="5_ngxw4"] -[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ngxw4"] +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_bfkib"] [sub_resource type="LabelSettings" id="LabelSettings_ddh1n"] font = ExtResource("2_ngxw4") @@ -52,13 +52,13 @@ shadow_size = 4 shadow_color = Color(0, 0, 0, 1) [node name="ScorePanel" type="Panel" unique_id=1580355860] -custom_minimum_size = Vector2(0, 100) clip_contents = true +custom_minimum_size = Vector2(0, 100) anchors_preset = 10 anchor_right = 1.0 size_flags_horizontal = 3 mouse_filter = 1 -theme_override_styles/panel = SubResource("StyleBoxEmpty_ngxw4") +theme_override_styles/panel = SubResource("StyleBoxEmpty_bfkib") script = ExtResource("1_rwxrw") [node name="Background" type="ColorRect" parent="." unique_id=1143150021] @@ -84,7 +84,7 @@ label_settings = SubResource("LabelSettings_ddh1n") vertical_alignment = 1 text_overrun_behavior = 3 -[node name="Timer" type="Label" parent="." unique_id=1064018268] +[node name="Score" type="Label" parent="." unique_id=1064018268] layout_mode = 1 anchors_preset = -1 anchor_left = 0.6 @@ -98,8 +98,7 @@ label_settings = SubResource("LabelSettings_i1p2f") horizontal_alignment = 2 vertical_alignment = 1 -[node name="Accuracy1" type="Label" parent="." unique_id=696162467] -visible = false +[node name="Accuracy" type="Label" parent="." unique_id=696162467] layout_mode = 1 anchors_preset = -1 anchor_left = 0.6 @@ -114,30 +113,6 @@ label_settings = SubResource("LabelSettings_exmec") horizontal_alignment = 2 vertical_alignment = 1 -[node name="Accuracy" type="RichTextLabel" parent="." unique_id=1126934800] -clip_contents = false -layout_mode = 1 -anchors_preset = -1 -anchor_left = 0.6 -anchor_top = 0.4 -anchor_right = 1.0 -anchor_bottom = 0.4 -offset_left = 4.0 -offset_top = 4.0 -offset_right = -16.0 -offset_bottom = 25.0 -focus_mode = 0 -mouse_filter = 2 -theme_override_fonts/normal_font = ExtResource("3_314mk") -theme_override_font_sizes/normal_font_size = 18 -bbcode_enabled = true -text = "[color=#a0a0a0] ?? [color=#a0a0a0] | 100,000 | 100%" -fit_content = true -scroll_active = false -autowrap_mode = 0 -horizontal_alignment = 2 -vertical_alignment = 1 - [node name="Time" type="Label" parent="." unique_id=254210783] layout_mode = 1 anchors_preset = -1 @@ -150,7 +125,7 @@ offset_top = 4.0 offset_right = -16.0 offset_bottom = -8.0 grow_vertical = 0 -text = "1,000 days ago | Version : #" +text = "1,000 days ago" label_settings = SubResource("LabelSettings_58c0b") horizontal_alignment = 2 vertical_alignment = 1 diff --git a/scenes/game.tscn b/scenes/game.tscn index dfb3003a..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,16 +128,12 @@ 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"] size = Vector2(4, 10) -[sub_resource type="LabelSettings" id="LabelSettings_pr1ej"] -font = ExtResource("21_05nbr") -font_size = 50 - [sub_resource type="ShaderMaterial" id="ShaderMaterial_x2xye"] shader = ExtResource("14_y51pe") shader_parameter/progress = 0.8870000421325 @@ -154,75 +150,15 @@ bg_color = Color(0, 0, 0, 0) font = ExtResource("20_pr1ej") font_size = 50 -[sub_resource type="FontFile" id="FontFile_rc4du"] -cache/0/variation_coordinates = {} -cache/0/face_index = 0 -cache/0/embolden = 0.0 -cache/0/transform = Transform2D(1, 0, 0, 1, 0, 0) -cache/0/spacing_top = 0 -cache/0/spacing_bottom = 0 -cache/0/spacing_space = 0 -cache/0/spacing_glyph = 0 -cache/0/baseline_offset = 0.0 -cache/0/16/0/ascent = 0.0 -cache/0/16/0/descent = 0.0 -cache/0/16/0/underline_position = 0.0 -cache/0/16/0/underline_thickness = 0.0 -cache/0/16/0/scale = 1.0 - -[sub_resource type="FontFile" id="FontFile_ay2bh"] -cache/0/variation_coordinates = {} -cache/0/face_index = 0 -cache/0/embolden = 0.0 -cache/0/transform = Transform2D(1, 0, 0, 1, 0, 0) -cache/0/spacing_top = 0 -cache/0/spacing_bottom = 0 -cache/0/spacing_space = 0 -cache/0/spacing_glyph = 0 -cache/0/baseline_offset = 0.0 -cache/0/16/0/ascent = 0.0 -cache/0/16/0/descent = 0.0 -cache/0/16/0/underline_position = 0.0 -cache/0/16/0/underline_thickness = 0.0 -cache/0/16/0/scale = 1.0 - -[sub_resource type="FontFile" id="FontFile_ag8t5"] -cache/0/variation_coordinates = {} -cache/0/face_index = 0 -cache/0/embolden = 0.0 -cache/0/transform = Transform2D(1, 0, 0, 1, 0, 0) -cache/0/spacing_top = 0 -cache/0/spacing_bottom = 0 -cache/0/spacing_space = 0 -cache/0/spacing_glyph = 0 -cache/0/baseline_offset = 0.0 -cache/0/16/0/ascent = 0.0 -cache/0/16/0/descent = 0.0 -cache/0/16/0/underline_position = 0.0 -cache/0/16/0/underline_thickness = 0.0 -cache/0/16/0/scale = 1.0 - -[sub_resource type="FontFile" id="FontFile_3jteb"] -cache/0/variation_coordinates = {} -cache/0/face_index = 0 -cache/0/embolden = 0.0 -cache/0/transform = Transform2D(1, 0, 0, 1, 0, 0) -cache/0/spacing_top = 0 -cache/0/spacing_bottom = 0 -cache/0/spacing_space = 0 -cache/0/spacing_glyph = 0 -cache/0/baseline_offset = 0.0 -cache/0/16/0/ascent = 0.0 -cache/0/16/0/descent = 0.0 -cache/0/16/0/underline_position = 0.0 -cache/0/16/0/underline_thickness = 0.0 -cache/0/16/0/scale = 1.0 +[sub_resource type="LabelSettings" id="LabelSettings_pr1ej"] +font = ExtResource("21_05nbr") +font_size = 50 [sub_resource type="LabelSettings" id="LabelSettings_pause_counter_title"] 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"] @@ -230,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"] @@ -253,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"] @@ -261,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"] @@ -345,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")] @@ -389,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") @@ -452,7 +395,7 @@ transparent_bg = true canvas_item_default_texture_filter = 2 size = Vector2i(250, 625) -[node name="Background" type="TextureRect" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=634060823] +[node name="Background" type="TextureRect" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=1374853699] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -460,24 +403,7 @@ grow_horizontal = 2 grow_vertical = 2 texture = ExtResource("11_sdncv") -[node name="Multiplier" type="Label" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=845485554] -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 = -171.25 -offset_right = 28.5 -offset_bottom = -102.25 -grow_horizontal = 2 -grow_vertical = 2 -theme = ExtResource("4_rvp5o") -text = "1x" -label_settings = SubResource("LabelSettings_pr1ej") -horizontal_alignment = 1 - -[node name="MultiplierProgress" type="Panel" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=502870620] +[node name="MultiplierProgress" type="Panel" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=1067613329] clip_children = 2 material = SubResource("ShaderMaterial_x2xye") anchors_preset = -1 @@ -486,69 +412,55 @@ anchor_top = 0.65 anchor_right = 0.5 anchor_bottom = 0.65 offset_left = -128.0 -offset_top = -267.125 +offset_top = -166.25 offset_right = 128.0 -offset_bottom = -11.125 +offset_bottom = 89.75128 theme_override_styles/panel = SubResource("StyleBoxFlat_56f8v") -[node name="Score" type="Label" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=1332908445] +[node name="Score" type="Label" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=1330190508] anchors_preset = -1 anchor_left = 0.5 anchor_top = 0.35 anchor_right = 0.5 anchor_bottom = 0.35 -offset_left = -96.0 -offset_top = -126.625 -offset_right = 96.0 -offset_bottom = -57.62497 +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") -text = "100,000" +text = "0" label_settings = SubResource("LabelSettings_usmyc") horizontal_alignment = 1 -[node name="Grade" type="RichTextLabel" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=325733819] -clip_contents = false +[node name="Multiplier" type="Label" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=1660490363] anchors_preset = -1 anchor_left = 0.5 -anchor_top = 0.86 +anchor_top = 0.65 anchor_right = 0.5 -anchor_bottom = 0.86 -offset_left = -90.0 -offset_top = -167.5 -offset_right = 90.0 -offset_bottom = -64.49988 +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 -size_flags_vertical = 4 -focus_mode = 0 -mouse_filter = 2 -theme_override_colors/font_outline_color = Color(0, 0, 0, 0.8627451) -theme_override_fonts/normal_font = ExtResource("20_pr1ej") -theme_override_fonts/bold_font = SubResource("FontFile_rc4du") -theme_override_fonts/bold_italics_font = SubResource("FontFile_ay2bh") -theme_override_fonts/italics_font = SubResource("FontFile_ag8t5") -theme_override_fonts/mono_font = SubResource("FontFile_3jteb") -theme_override_font_sizes/normal_font_size = 60 -bbcode_enabled = true -text = "??" -fit_content = true -scroll_active = false -autowrap_mode = 0 +theme = ExtResource("4_rvp5o") +text = "1x" +label_settings = SubResource("LabelSettings_pr1ej") horizontal_alignment = 1 -vertical_alignment = 1 -[node name="ComboCount" type="Label" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=2093196584] +[node name="ComboCount" type="Label" parent="Runner/HUD/PanelLeft/PanelLeftViewport" unique_id=531787894] 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 = -47.5 +offset_top = -34.5 offset_right = 90.0 -offset_bottom = 21.500244 +offset_bottom = 34.5 grow_horizontal = 2 grow_vertical = 2 text = "0" diff --git a/scenes/main.tscn b/scenes/main.tscn index 989b8f96..aabb6a1c 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"] @@ -160,8 +362,13 @@ layout_mode = 1 anchors_preset = -1 anchor_left = 0.25 anchor_top = 0.25 -anchor_right = 0.75 -anchor_bottom = 0.75 +anchor_right = 0.75000006 +anchor_bottom = 0.75000006 +offset_right = -6.1035156e-05 +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") @@ -432,6 +639,30 @@ text = "SETTINGS" label_settings = SubResource("LabelSettings_osuri") vertical_alignment = 1 +[node name="RefreshSkinPreview" type="Button" parent="Settings/Holder/Header" unique_id=693048162] +layout_mode = 1 +anchors_preset = -1 +anchor_left = 0.27800003 +anchor_top = 0.15 +anchor_right = 0.48600003 +anchor_bottom = 0.9250001 +offset_left = 0.07998657 +offset_right = -0.040008545 +theme = ExtResource("3_tipki") +text = "Refresh Preview" + +[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 = "Toggle Skin Preview" + [node name="Profiles" type="OptionButton" parent="Settings/Holder/Header" unique_id=716644348] layout_mode = 1 anchors_preset = -1 @@ -492,7 +723,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 @@ -513,6 +744,413 @@ file_mode = 2 access = 2 use_native_dialog = true +[node name="SkinPreviewPanel" type="Panel" parent="Settings" unique_id=499692920] +visible = false +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.55200005 +anchor_top = 0.279 +anchor_right = 0.919 +anchor_bottom = 0.72400004 +offset_left = -0.5600586 +offset_top = 0.11999512 +offset_right = 0.34692383 +offset_bottom = -0.2800293 +offset_transform_enabled = true +offset_transform_pivot_ratio = Vector2(1, 1) +offset_transform_visual_only = false +focus_behavior_recursive = 2 +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 = 15 +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 +msaa_3d = 1 +scaling_3d_scale = 1.5 +anisotropic_filtering_level = 1 +size = Vector2i(470, 320) +render_target_update_mode = 0 + +[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 4dc0fcb9..c132aad3 100644 --- a/scenes/main_menu.tscn +++ b/scenes/main_menu.tscn @@ -54,7 +54,10 @@ [ext_resource type="Texture2D" uid="uid://cfl8us0rpkpqs" path="res://textures/ui/github_hovered.png" id="43_sgh51"] [ext_resource type="Script" uid="uid://c1235cyjfh4rl" path="res://scripts/ui/LinkPopupButton.cs" id="44_ybca7"] [ext_resource type="Script" uid="uid://dqi64p5jl23cv" path="res://scripts/ui/menu/VersionLabel.cs" id="45_mb34c"] +[ext_resource type="Texture2D" uid="uid://dyms3l4x385j" path="res://textures/ui/feedback.png" id="46_41a2d"] +[ext_resource type="Texture2D" uid="uid://c0gv3fh2rmlcy" path="res://textures/ui/feedback_pressed.png" id="47_f5cck"] [ext_resource type="Texture2D" uid="uid://8du82a5dxjdk" path="res://user/skins/default/ui/jukebox_play.png" id="48_q1l3m"] +[ext_resource type="Texture2D" uid="uid://cya1kdxwisvmc" path="res://textures/ui/feedback_hovered.png" id="48_s4ogs"] [ext_resource type="Texture2D" uid="uid://bpsvcunhigs6c" path="res://user/skins/default/ui/jukebox_skip.png" id="49_7u5pb"] [sub_resource type="SystemFont" id="SystemFont_lsskb"] @@ -431,7 +434,7 @@ layout_mode = 2 [node name="Header" type="Label" parent="Menus/Home/News/VBoxContainer" unique_id=1350479761] layout_mode = 2 -text = "Score Overhaul PTB" +text = "0.1.2 (early-26apr30)" label_settings = SubResource("LabelSettings_0uejd") horizontal_alignment = 1 vertical_alignment = 1 @@ -445,11 +448,12 @@ theme_override_constants/paragraph_separation = 6 theme_override_fonts/normal_font = ExtResource("7_6h3lr") theme_override_styles/normal = SubResource("StyleBoxEmpty_k5xsf") bbcode_enabled = true -text = "[font_size=28][b]CHANGES[/b][font_size=18] -- Normalized Scoring (Perfect FC = 1 million score)[br]- Judgement Overhaul (4 judgements total, previously 2)[br]- Mult. cap 8 > 6[br]- On note miss, lose Mult. / 2 rounded down[br] -[font_size=28][b]NOTICE[/b][font_size=24] -!! This branch will wipe your old scores set before this version !![font_size=18] [br]- You may encounter bugs, report them via #bug-reports -- We would like to hear your feedback in our #ptb-feedback channel" +text = "[font_size=28][b]FEATURES[/b][font_size=18] ++ Galaxy space[br]+ Tunnel space[br]+ Cursor Rotation setting[br]+ Cursor Opacity setting[br]+ Space to Pause setting[br]+ Local Offset setting[br]+ More volume settings[br]+ Super Simple HUD setting[br]+ Hold R to exit map keybind[br]+ F1 to open wiki keybind[br]+ Ctrl + M to mute keybind[br]+ Miss sounds[br]+ Menu music (currently empty, replace menu.mp3 to your skin folder)[br]* Changed Fade Out setting to a slider & updated its behaviour to work more like Fade In[br]* Added support for nightly colorset format +[font_size=28][b]FIXES[/b][font_size=18] +* Fixed comma decimal separator number formatting[br]* Fixed Start From slider with comma decimal separator[br]* Fixed map info covers resizing after import[br]* Fixed map list not updating on map deletion[br]* Safer cover & skin texture loading[br]* Safer note color parsing[br]* Fixed maps failing to import on systems with <4 threads[br]* Dynamic song resyncing during gameplay[br]* Fixed song progress bar incremental update delay[br]* Fixed double Esc to open game menu after opening settings[br]* Fixed flickering notes in replays[br]* Fixed clicking outside the update popup causing a softlock[br]* Fixed displayed selected profile inaccurate[br]* Fixed number range settings imprecision[br]* Fixed song search bar not focusing on key press after using slider +[font_size=28][b]MISC[/b][font_size=18] +* Cap framerate at 30 when unfocused[br]* Allow windowed mode to be resized" shortcut_keys_enabled = false [node name="Panel" type="Panel" parent="Menus/Home/News/VBoxContainer/RichTextLabel" unique_id=1035549202] @@ -753,9 +757,11 @@ theme_override_styles/panel = SubResource("StyleBoxEmpty_18lcc") [node name="HBoxContainer" type="HBoxContainer" parent="Menus/Play/SubTopBar" unique_id=613796792] layout_mode = 1 anchors_preset = -1 -anchor_top = 0.5 +anchor_top = 0.179 anchor_right = 1.0 -anchor_bottom = 0.5 +anchor_bottom = 0.82100004 +offset_top = 17.976 +offset_bottom = -17.976002 grow_horizontal = 2 grow_vertical = 2 alignment = 2 @@ -763,7 +769,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") @@ -775,6 +781,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") @@ -786,6 +793,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") @@ -1901,9 +1909,32 @@ grow_horizontal = 2 grow_vertical = 2 alignment = 2 +[node name="Feedback" type="TextureButton" parent="TopBar/LinkButtons" unique_id=169604797] +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "Feedback form" +focus_mode = 0 +mouse_default_cursor_shape = 2 +texture_normal = ExtResource("46_41a2d") +texture_pressed = ExtResource("47_f5cck") +texture_hover = ExtResource("48_s4ogs") + +[node name="Button" type="Button" parent="TopBar/LinkButtons/Feedback" unique_id=1650047982] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 +flat = true +script = ExtResource("44_ybca7") +Link = "https://forms.gle/eyGTBKJskSmAux8P8" + [node name="GitHub" type="TextureButton" parent="TopBar/LinkButtons" unique_id=1795081095] layout_mode = 2 size_flags_vertical = 4 +tooltip_text = "Our GitHub page" focus_mode = 0 mouse_default_cursor_shape = 2 texture_normal = ExtResource("41_akqfu") @@ -1925,6 +1956,7 @@ Link = "https://github.com/Rhythia" [node name="Discord" type="TextureButton" parent="TopBar/LinkButtons" unique_id=36147158] layout_mode = 2 size_flags_vertical = 4 +tooltip_text = "Our official Discord" focus_mode = 0 mouse_default_cursor_shape = 2 texture_normal = ExtResource("20_qw82i") diff --git a/scenes/results.tscn b/scenes/results.tscn index 617d1da7..2d910e0f 100644 --- a/scenes/results.tscn +++ b/scenes/results.tscn @@ -66,16 +66,6 @@ font_size = 42 font = ExtResource("2_f4qdi") font_size = 42 -[sub_resource type="LabelSettings" id="LabelSettings_gdxgs"] - -[sub_resource type="LabelSettings" id="LabelSettings_00qb5"] -font_size = 12 -font_color = Color(1, 1, 1, 0.29411766) - -[sub_resource type="LabelSettings" id="LabelSettings_00fns"] -font_size = 8 -font_color = Color(1, 1, 1, 0.29411766) - [sub_resource type="LabelSettings" id="LabelSettings_6anxq"] font = ExtResource("3_rsbg1") font_size = 11 @@ -314,110 +304,22 @@ offset_bottom = -96.0 color = Color(1, 1, 1, 0) script = ExtResource("4_b55ol") -[node name="Perfects" type="Label" parent="Holder/Graph" unique_id=1872425890] -layout_mode = 1 -anchors_preset = 10 -anchor_right = 1.0 -offset_top = -23.0 -offset_bottom = 23.0 -grow_horizontal = 2 -text = "Perfects: #" -label_settings = SubResource("LabelSettings_gdxgs") -horizontal_alignment = 1 - -[node name="Greats" type="Label" parent="Holder/Graph" unique_id=1220219417] -layout_mode = 1 -anchors_preset = 10 -anchor_right = 1.0 -offset_top = 76.0 -offset_bottom = 93.0 -grow_horizontal = 2 -text = "Greats: #" -label_settings = SubResource("LabelSettings_00qb5") -horizontal_alignment = 1 - -[node name="Okays" type="Label" parent="Holder/Graph" unique_id=436182218] -layout_mode = 1 -anchors_preset = 10 -anchor_right = 1.0 -offset_top = 112.0 -offset_bottom = 124.0 -grow_horizontal = 2 -text = "Okays: #" -label_settings = SubResource("LabelSettings_00fns") -horizontal_alignment = 1 - -[node name="Bads" type="Label" parent="Holder/Graph" unique_id=1134517622] -layout_mode = 1 -anchors_preset = 10 -anchor_right = 1.0 -offset_top = 134.0 -offset_bottom = 146.0 -grow_horizontal = 2 -text = "Bads: #" -label_settings = SubResource("LabelSettings_00fns") -horizontal_alignment = 1 - [node name="OffsetTop" type="Label" parent="Holder/Graph" unique_id=465789986] layout_mode = 1 anchors_preset = -1 offset_left = -32.0 -offset_top = -14.0 grow_horizontal = 0 text = "0ms" label_settings = SubResource("LabelSettings_6anxq") horizontal_alignment = 2 vertical_alignment = 1 -[node name="JudgementGood" type="Label" parent="Holder/Graph" unique_id=79263222] -layout_mode = 1 -anchors_preset = -1 -anchor_top = 0.578 -anchor_bottom = 0.578 -offset_left = -32.0 -offset_top = -11.480003 -offset_bottom = 11.519997 -grow_horizontal = 0 -text = "31ms" -label_settings = SubResource("LabelSettings_6anxq") -horizontal_alignment = 2 -vertical_alignment = 1 - -[node name="JudgementOkay" type="Label" parent="Holder/Graph" unique_id=73984163] -layout_mode = 1 -anchors_preset = -1 -anchor_top = 0.76900005 -anchor_bottom = 0.76900005 -offset_left = -32.0 -offset_top = -7.0400085 -offset_bottom = 6.9599915 -grow_horizontal = 0 -text = "41ms" -label_settings = SubResource("LabelSettings_6anxq") -horizontal_alignment = 2 -vertical_alignment = 1 - -[node name="JudgementBad" type="Label" parent="Holder/Graph" unique_id=141723295] -layout_mode = 1 -anchors_preset = -1 -anchor_top = 0.90000004 -anchor_bottom = 0.90000004 -offset_left = -32.0 -offset_top = -7.0 -offset_bottom = 7.0 -grow_horizontal = 0 -text = "51ms" -label_settings = SubResource("LabelSettings_6anxq") -horizontal_alignment = 2 -vertical_alignment = 1 - [node name="OffsetBottom" type="Label" parent="Holder/Graph" unique_id=2053550374] layout_mode = 1 anchors_preset = -1 anchor_top = 1.0 anchor_bottom = 1.0 offset_left = -32.0 -offset_bottom = 14.0 grow_horizontal = 0 grow_vertical = 0 text = "55ms" @@ -425,37 +327,14 @@ label_settings = SubResource("LabelSettings_6anxq") horizontal_alignment = 2 vertical_alignment = 1 -[node name="PerfectDropoffLine" type="ColorRect" parent="Holder/Graph" unique_id=411211979] -material = SubResource("ShaderMaterial_b4pmo") -layout_mode = 1 -anchors_preset = -1 -anchor_top = 0.578 -anchor_right = 1.0 -anchor_bottom = 0.578 -offset_top = -0.4799881 -offset_bottom = 0.5200119 -color = Color(1, 1, 1, 0.12549) - -[node name="GoodDropoffLine" type="ColorRect" parent="Holder/Graph" unique_id=247370308] +[node name="ScoreDropoffLine" type="ColorRect" parent="Holder/Graph" unique_id=411211979] material = SubResource("ShaderMaterial_b4pmo") layout_mode = 1 anchors_preset = -1 -anchor_top = 0.772 +anchor_top = 0.455 anchor_right = 1.0 -anchor_bottom = 0.772 -offset_top = -0.5200043 -offset_bottom = 0.47999573 -color = Color(1, 1, 1, 0.12549) - -[node name="OkayDropoffLine" type="ColorRect" parent="Holder/Graph" unique_id=549385781] -material = SubResource("ShaderMaterial_b4pmo") -layout_mode = 1 -anchors_preset = -1 -anchor_top = 0.90900004 -anchor_right = 1.0 -anchor_bottom = 0.90900004 -offset_top = -0.44000244 -offset_bottom = 0.55999756 +anchor_bottom = 0.455 +offset_bottom = 1.0 color = Color(1, 1, 1, 0.12549) [node name="TopBar" type="Panel" parent="." unique_id=571217894] @@ -591,7 +470,6 @@ text = "Watch Replay" flat = true [node name="Transition" type="ColorRect" parent="." unique_id=529428316] -visible = false self_modulate = Color(1, 1, 1, 0) anchors_preset = 15 anchor_right = 1.0 diff --git a/scripts/KeybindsManager.cs b/scripts/KeybindsManager.cs index 6708caf1..45f6919d 100644 --- a/scripts/KeybindsManager.cs +++ b/scripts/KeybindsManager.cs @@ -42,9 +42,9 @@ public override void _Input(InputEvent @event) { if (eventKey.Keycode == Key.F11 || (eventKey.AltPressed && (eventKey.Keycode == Key.Enter || eventKey.Keycode == Key.KpEnter))) { - bool value = DisplayServer.WindowGetMode() == DisplayServer.WindowMode.Windowed; + bool windowed = DisplayServer.WindowGetMode() == DisplayServer.WindowMode.Windowed; - settings.Fullscreen.Value = value; + settings.WindowMode.Value = (windowed ? WindowDisplayMode.Fullscreen : WindowDisplayMode.Windowed).ToString(); } break; } diff --git a/scripts/Rhythia.cs b/scripts/Rhythia.cs index 15e26357..3cd8db15 100644 --- a/scripts/Rhythia.cs +++ b/scripts/Rhythia.cs @@ -198,6 +198,7 @@ public static void RegisterModifiers() new AutoplayModifier(), new GhostModifier(), new StrobeModifier(), + new FlickerModifier(), new ChaosModifier(), new VortexModifier(), new EarthquakeModifier(), diff --git a/scripts/database/settings/SettingsProfile.cs b/scripts/database/settings/SettingsProfile.cs index c0e53585..0f364d8c 100644 --- a/scripts/database/settings/SettingsProfile.cs +++ b/scripts/database/settings/SettingsProfile.cs @@ -292,16 +292,10 @@ public partial class SettingsProfile #region Video /// - /// Toggles the window to Fullsceen + /// Changes how the window is displayed /// [Order] - public SettingsItem Fullscreen { get; private set; } - - /// - /// Toggles Borderless Fullscreen mode if Fullscreen is enabled - /// - [Order] - public SettingsItem BorderlessFullscreen { get; private set; } + public SettingsItem WindowMode { get; private set; } /// /// Locks maximum frames per second @@ -461,6 +455,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 @@ -783,13 +783,6 @@ public SettingsProfile() Title = "Space Hit Effects", Description = "Toggles note hit effects for the game space", Section = SettingsSection.Spaces, - UpdateAction = (_, init) => - { - if ((bool)SpaceHitEffects.GetVariant()) - { - CustomSpaceColor.SetVariant(false); - } - }, }; SpaceEffects = new(true) @@ -1078,22 +1071,14 @@ public SettingsProfile() #region Video - Fullscreen = new(true) + WindowMode = new(nameof(WindowDisplayMode.Fullscreen)) { - Id = "Fullscreen", - Title = "Fullscreen", - Description = "Toggles the window to fullscreen", - Section = SettingsSection.Video, - UpdateAction = (_, _) => updateWindowMode(), - }; - - BorderlessFullscreen = new(false) - { - Id = "BorderlessFullscreen", - Title = "Borderless Fullscreen", - Description = "Alters the Fullscreen toggle to use Borderless fullscreen instead of Exclusive, may fix some issues with drawing tablets", + Id = "WindowMode", + Title = "Window Mode", + Description = "Changes how the window is displayed, Borderless may fix some issues with drawing tablets", Section = SettingsSection.Video, UpdateAction = (_, _) => updateWindowMode(), + List = new(nameof(WindowDisplayMode.Fullscreen)) { Values = [.. Enum.GetNames()] }, }; LockFPS = new(false) @@ -1530,6 +1515,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", @@ -1594,11 +1587,14 @@ private void updateApproachTime() private void updateWindowMode() { - var windowMode = Fullscreen - ? (!BorderlessFullscreen ? DisplayServer.WindowMode.ExclusiveFullscreen : DisplayServer.WindowMode.Fullscreen) - : DisplayServer.WindowMode.Windowed; - - DisplayServer.WindowSetMode(windowMode); + DisplayServer.WindowSetMode( + Enum.Parse(WindowMode.Value) switch + { + WindowDisplayMode.Fullscreen => DisplayServer.WindowMode.ExclusiveFullscreen, + WindowDisplayMode.Borderless => DisplayServer.WindowMode.Fullscreen, + _ => DisplayServer.WindowMode.Windowed, + } + ); } private static List getAvailableMeshes() @@ -1618,6 +1614,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; @@ -1695,7 +1723,10 @@ double importVolume(string nightlyKey, double range) ["SimpleHUD"] = () => getSetting("simple_hud") ?? nightlyProfile.SimpleHUD, ["HitPopups"] = () => getSetting("score_popup") ?? nightlyProfile.HitPopups, ["MissPopups"] = () => getSetting("show_miss_effect") ?? nightlyProfile.MissPopups, - ["Fullscreen"] = () => getSetting("window_fullscreen") ?? nightlyProfile.Fullscreen, + ["WindowMode"] = () => + getSetting("window_fullscreen") is bool fullscreen + ? (fullscreen ? nameof(WindowDisplayMode.Fullscreen) : nameof(WindowDisplayMode.Windowed)) + : nightlyProfile.WindowMode, ["FPS"] = () => getSetting("target_fps") ?? nightlyProfile.FPS, ["VolumeMaster"] = () => 100, ["VolumeMusic"] = () => importVolume("music_volume", 70), diff --git a/scripts/database/settings/WindowDisplayMode.cs b/scripts/database/settings/WindowDisplayMode.cs new file mode 100644 index 00000000..9ad5af00 --- /dev/null +++ b/scripts/database/settings/WindowDisplayMode.cs @@ -0,0 +1,6 @@ +public enum WindowDisplayMode +{ + Windowed, + Fullscreen, + Borderless, +} diff --git a/scripts/database/settings/WindowDisplayMode.cs.uid b/scripts/database/settings/WindowDisplayMode.cs.uid new file mode 100644 index 00000000..946b3de1 --- /dev/null +++ b/scripts/database/settings/WindowDisplayMode.cs.uid @@ -0,0 +1 @@ +uid://drhcijc4ymcuf diff --git a/scripts/game/Attempt.cs b/scripts/game/Attempt.cs index fb9b6420..3bea801e 100644 --- a/scripts/game/Attempt.cs +++ b/scripts/game/Attempt.cs @@ -29,7 +29,6 @@ public partial class Attempt : RefCounted public double Length; public double Accuracy = 100; - public double Grade = 0; public double Health = 100; public double HealthStep = 15; public bool HasHealthModifier = false; @@ -37,13 +36,7 @@ public partial class Attempt : RefCounted public uint Hits = 0; public uint Misses = 0; public uint Sum = 0; - public double Perfects = 0; - public double Greats = 0; - public double Okays = 0; - public double Bads = 0; - public double Score = 0; - public double UnitHitScore = 0; - public uint NoteWeight; + public uint Score = 0; public uint Combo = 0; public uint ComboMultiplier = 1; public uint ComboMultiplierProgress = 0; @@ -58,6 +51,7 @@ public partial class Attempt : RefCounted public Vector2 CursorPosition = Vector2.Zero; public Vector2 RawCursorPosition = Vector2.Zero; + public Vector2 BufferCursorPosition = Vector2.Zero; public double DistanceMM = 0; public ulong FirstNote = 0; @@ -70,8 +64,6 @@ public partial class Attempt : RefCounted public uint ReplayFrameCountOffset = 0; public uint ReplayAttemptStatusOffset = 0; - public double Version = 1; - public Attempt( Map map, double speed, @@ -99,21 +91,6 @@ public Attempt( Objects[typeof(Note)] = [.. map.Notes]; HitsInfo = IsReplay ? Replays[0].Notes : new float[Map.Notes.Length]; - uint noteWeightIterations = (uint)Math.Clamp(Math.Floor((double)Map.Notes.Length / ComboMultiplierIncrement), 1, 5); - NoteWeight += Math.Min(ComboMultiplierIncrement, (uint)Map.Notes.Length) * (1 + noteWeightIterations) * noteWeightIterations / 2; - NoteWeight += - ((uint)Map.Notes.Length - Math.Min(ComboMultiplierIncrement, (uint)Map.Notes.Length) * noteWeightIterations) * (noteWeightIterations + 1); - - if (Modifiers.Count >= 1) - { - foreach (Modifier modifier in Modifiers) - { - ModsMultiplier += modifier.ScoreMultiplier - 1; - } - } - - UnitHitScore = 1000000f * ModsMultiplier * ((Speed - 1) / 2.5 + 1) / NoteWeight; - if (IsReplay) { foreach (var replay in Replays) diff --git a/scripts/game/Runner.cs b/scripts/game/Runner.cs index 17bafcbc..1fde3d1e 100644 --- a/scripts/game/Runner.cs +++ b/scripts/game/Runner.cs @@ -507,14 +507,12 @@ public void Stop(bool results = true) Attempt.ID, "You", Attempt.Qualifies, - (ulong)Math.Round(Attempt.Score), + Attempt.Score, Attempt.Accuracy, - Attempt.Grade, Time.GetUnixTimeFromSystem(), Attempt.Progress, Attempt.Map.Length, Speed, - Attempt.Version, mods ) ); @@ -523,7 +521,7 @@ public void Stop(bool results = true) if (Attempt.Qualifies) { Stats.Instance.Passes++; - Stats.Instance.TotalScore += (ulong)Math.Round(Attempt.Score); + Stats.Instance.TotalScore += Attempt.Score; if (Attempt.Accuracy == 100) { @@ -532,7 +530,7 @@ public void Stop(bool results = true) if (Attempt.Score > Stats.Instance.HighestScore) { - Stats.Instance.HighestScore = (ulong)Math.Round(Attempt.Score); + Stats.Instance.HighestScore = Attempt.Score; } Stats.Instance.AverageAccuracy = (Stats.Instance.AverageAccuracy + Attempt.Accuracy) / Stats.Instance.Passes; @@ -554,17 +552,15 @@ private void onHitResultChanged(int noteIndex, HitResult hitResult) float lateness = Attempt.IsReplay ? Attempt.HitsInfo[noteIndex] : (float)(((int)judgmentProgress - Attempt.Map.Notes[noteIndex].Millisecond) / Speed); - float factor = 1 - (float)Math.Round(Math.Max(0, lateness - 27) / 104f, 1); - double hitScore = Attempt.UnitHitScore * Attempt.ComboMultiplier * factor; + float factor = 1 - Math.Max(0, lateness - 25) / 150f; + uint hitScore = (uint)(100 * Attempt.ComboMultiplier * Attempt.ModsMultiplier * factor * ((Speed - 1) / 2.5 + 1)); switch (hitResult) { case HitResult.Hit: - judgementCheck(factor); Attempt.Hits++; Attempt.Sum++; Attempt.Accuracy = Math.Floor((float)Attempt.Hits / Attempt.Sum * 10000) / 100; - Attempt.Grade = Math.Clamp(Attempt.Accuracy / 100 * Math.Clamp(Attempt.Score / 1000000, 0, 1), 0, 1); Attempt.Combo++; Attempt.ComboMultiplierProgress++; Attempt.LastHitColour = SkinManager.Instance.Skin.NoteColors[noteIndex % SkinManager.Instance.Skin.NoteColors.Length]; @@ -581,9 +577,9 @@ private void onHitResultChanged(int noteIndex, HitResult hitResult) if (Attempt.ComboMultiplierProgress == Attempt.ComboMultiplierIncrement) { - if (Attempt.ComboMultiplier < 6) + if (Attempt.ComboMultiplier < 8) { - Attempt.ComboMultiplierProgress = Attempt.ComboMultiplier == 5 ? Attempt.ComboMultiplierIncrement : 0; + Attempt.ComboMultiplierProgress = Attempt.ComboMultiplier == 7 ? Attempt.ComboMultiplierIncrement : 0; Attempt.ComboMultiplier++; } } @@ -593,10 +589,9 @@ private void onHitResultChanged(int noteIndex, HitResult hitResult) Attempt.Misses++; Attempt.Sum++; Attempt.Accuracy = Mathf.Floor((float)Attempt.Hits / Attempt.Sum * 10000) / 100; - Attempt.Grade = Math.Clamp(Attempt.Accuracy / 100 * Math.Clamp(Attempt.Score / 1000000, 0, 1), 0, 1); Attempt.Combo = 0; Attempt.ComboMultiplierProgress = 0; - Attempt.ComboMultiplier = Math.Max(1, Attempt.ComboMultiplier - (uint)Math.Truncate((double)Attempt.ComboMultiplier / 2)); + Attempt.ComboMultiplier = Math.Max(1, Attempt.ComboMultiplier - 1); if (!Attempt.IsReplay) { @@ -711,26 +706,4 @@ private void syncSongPosition() // VideoStreamPlayer.StreamPosition = (float)Attempt.Progress / 1000; } } - - private void judgementCheck(float factor) - { - switch (factor) // judgements - { - case 1f: - Attempt.Perfects++; // pawfect - break; - - case 0.9f: - Attempt.Greats++; // gewd - break; - - case 0.8f: - Attempt.Okays++; // okay - break; - - case 0.7f: - Attempt.Bads++; // bad - break; - } - } } 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..bf814465 100644 --- a/scripts/game/camera/CameraSpin.cs +++ b/scripts/game/camera/CameraSpin.cs @@ -1,4 +1,4 @@ -using System; +using System; using Godot; public class CameraSpin : CameraMode @@ -12,6 +12,7 @@ public override void Process( ReplayManager replayManager, Camera3D camera, MeshInstance3D cursor, + MeshInstance3D bufferCursor, Vector2 mouseDelta, float sensitivity ) @@ -48,13 +49,16 @@ float sensitivity // Project Cursor from Camera's "ray cast" attempt.RawCursorPosition = cameraVector2 - lookVector2 * Mathf.Abs(camera.Position.Z / lookVector.Z); + attempt.BufferCursorPosition = attempt.RawCursorPosition; attempt.CursorPosition = attempt.RawCursorPosition.Clamp(-Constants.BOUNDS, Constants.BOUNDS); 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/judgments/HitResult.cs b/scripts/game/judgments/HitResult.cs index a3272bae..7c91badf 100644 --- a/scripts/game/judgments/HitResult.cs +++ b/scripts/game/judgments/HitResult.cs @@ -1,4 +1,4 @@ -using System; +using System; public enum HitResult { 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/managers/ReplayManager.cs b/scripts/game/managers/ReplayManager.cs index f42f9238..1c2010d0 100644 --- a/scripts/game/managers/ReplayManager.cs +++ b/scripts/game/managers/ReplayManager.cs @@ -261,10 +261,6 @@ private void seek(float seekedTime) att.Sum = 0; att.Accuracy = 100; att.Score = 0; - att.Perfects = 0; - att.Greats = 0; - att.Okays = 0; - att.Bads = 0; att.Combo = 0; att.ComboMultiplier = 1; att.ComboMultiplierProgress = 0; diff --git a/scripts/game/modifiers/FlickerModifier.cs b/scripts/game/modifiers/FlickerModifier.cs new file mode 100644 index 00000000..d426b7c6 --- /dev/null +++ b/scripts/game/modifiers/FlickerModifier.cs @@ -0,0 +1,32 @@ +using Godot; + +public class FlickerModifier : Modifier, IObjectRenderModifier +{ + public override string Name => "Flicker"; + + public override Color Color => new(0xc5ff54ff); + + public override bool Rankable => true; + + public override double ScoreMultiplier => 1.035; + + public void ModifyRenderObject(Note note, Attempt attempt) + { + double at = attempt.Settings.ApproachTime; + + if (attempt.Progress / 600 / attempt.Speed % at >= at / 2) + { + if (note.Index % 2 == 0) + { + note.Opacity = 0; + } + } + else + { + if (note.Index % 2 != 0) + { + note.Opacity = 0; + } + } + } +} diff --git a/scripts/game/modifiers/FlickerModifier.cs.uid b/scripts/game/modifiers/FlickerModifier.cs.uid new file mode 100644 index 00000000..f2d043e8 --- /dev/null +++ b/scripts/game/modifiers/FlickerModifier.cs.uid @@ -0,0 +1 @@ +uid://ciktlcnrkha2t diff --git a/scripts/game/ui/Grid.cs b/scripts/game/ui/Grid.cs index 515c0347..620eb038 100644 --- a/scripts/game/ui/Grid.cs +++ b/scripts/game/ui/Grid.cs @@ -7,12 +7,11 @@ 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; } - private string popupLabelFormat; - private static readonly PackedScene hit_feedback = GD.Load("res://prefabs/hit_popup.tscn"); private static readonly PackedScene miss_feedback = GD.Load("res://prefabs/miss_icon.tscn"); private int hitPopups, @@ -44,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; @@ -65,34 +74,13 @@ private void onHitResultChanged(int noteIndex, HitResult result) float lateness = Runner.Attempt.IsReplay ? Runner.Attempt.HitsInfo[noteIndex] : (float)(((int)Runner.Attempt.Progress - Runner.Attempt.Map.Notes[noteIndex].Millisecond) / Runner.Speed); - float factor = 1 - (float)Math.Round(Math.Max(0, lateness - 30) / 104f, 1); - double hitScore = Math.Truncate(Runner.Attempt.UnitHitScore * Runner.Attempt.ComboMultiplier * factor); - - string[] listOfJudgements = { "perfect", "great", "okay", "bad" }; - string judgement = ""; + float factor = 1 - Math.Max(0, lateness - 25) / 150f; + uint hitScore = (uint)(100 * Runner.Attempt.ComboMultiplier * Runner.Attempt.ModsMultiplier * factor * ((Runner.Speed - 1) / 2.5 + 1)); switch (result) { case HitResult.Hit: - switch (factor) // judgements - { - case 1f: - judgement = listOfJudgements[0]; // pawfect - break; - - case 0.9f: - judgement = listOfJudgements[1]; // gewd - break; - - case 0.8f: - judgement = listOfJudgements[2]; // okay - break; - - case 0.7f: - judgement = listOfJudgements[3]; // bad - break; - } - spawnHitIcon(noteIndex, hitScore, judgement); + spawnHitIcon(noteIndex, hitScore); break; case HitResult.Miss: spawnMissIcon(noteIndex); @@ -100,20 +88,17 @@ private void onHitResultChanged(int noteIndex, HitResult result) } } - private void spawnHitIcon(int objIndex, double hitScore, string judgement) + private void spawnHitIcon(int objIndex, uint hitScore) { - if (!Runner.Attempt.Settings.HitPopups || hitPopups >= 8) + if (!Runner.Attempt.Settings.HitPopups || hitPopups >= 64) return; hitPopups++; Label3D popup = hit_feedback.Instantiate(); AddChild(popup); - popupLabelFormat = popup.Text; - - popup.Text = string.Format(CultureInfo.CurrentCulture, popupLabelFormat, hitScore.ToString(CultureInfo.CurrentCulture), judgement); popup.GlobalPosition = new Vector3(Runner.Attempt.Map.Notes[objIndex].X, -1.4f, 0); - // popup.Text = hitScore.ToString(CultureInfo.CurrentCulture); + popup.Text = hitScore.ToString(CultureInfo.CurrentCulture); Tween tween = popup.CreateTween(); tween.TweenProperty(popup, "transparency", 1, 0.25f); tween diff --git a/scripts/game/ui/PanelLeft.cs b/scripts/game/ui/PanelLeft.cs index a6f9b50e..e7c229a9 100644 --- a/scripts/game/ui/PanelLeft.cs +++ b/scripts/game/ui/PanelLeft.cs @@ -15,10 +15,6 @@ public partial class PanelLeft : UIComponent multiplier; private Label altCombo; - private RichTextLabel grade; - - private string Grade = "??"; - public override void _ExitTree() { if (Runner.Attempt == null) @@ -33,7 +29,6 @@ public override void Init() score = viewport.GetNode