dynamic menu and menu music

This commit is contained in:
Persephone Bubblegum-Holiday 2025-08-18 21:51:12 -07:00
parent 1f13716d42
commit a9efa66b09
18 changed files with 386 additions and 41 deletions

View file

@ -409,7 +409,7 @@ visible = false
[node name="Fiber Curtain" parent="Special" instance=ExtResource("22_6khan")] [node name="Fiber Curtain" parent="Special" instance=ExtResource("22_6khan")]
visible = false visible = false
[node name="Star Light" parent="Special" instance=ExtResource("20_ty70p")] [node name="CEC Star" parent="Special" instance=ExtResource("20_ty70p")]
visible = false visible = false
[node name="GenericRoom" parent="." instance=ExtResource("23_png03")] [node name="GenericRoom" parent="." instance=ExtResource("23_png03")]

View file

@ -437,7 +437,7 @@ visible = false
[node name="Fiber Curtain" parent="Special" instance=ExtResource("18_6oimm")] [node name="Fiber Curtain" parent="Special" instance=ExtResource("18_6oimm")]
visible = false visible = false
[node name="Star Light" parent="Special" instance=ExtResource("14_g76xr")] [node name="CEC Star" parent="Special" instance=ExtResource("14_g76xr")]
visible = false visible = false
[node name="Chuck" parent="." instance=ExtResource("19_bdm46")] [node name="Chuck" parent="." instance=ExtResource("19_bdm46")]

View file

@ -1,8 +1,11 @@
[gd_scene load_steps=18 format=3 uid="uid://1ikkb4b8mw1w"] [gd_scene load_steps=21 format=3 uid="uid://1ikkb4b8mw1w"]
[ext_resource type="Script" uid="uid://b5nh5td5bdsfd" path="res://Scripts/MainMenu.gd" id="1_ocgay"] [ext_resource type="Script" uid="uid://b5nh5td5bdsfd" path="res://Scripts/MainMenu.gd" id="1_ocgay"]
[ext_resource type="Texture2D" uid="uid://dbh0vh85wks2l" path="res://UI/logo.png" id="2_6d82g"] [ext_resource type="Texture2D" uid="uid://dbh0vh85wks2l" path="res://UI/logo.png" id="2_6d82g"]
[ext_resource type="Script" uid="uid://cnhq1jt48m1or" path="res://Scripts/DynamicBackground.gd" id="2_wdeli"]
[ext_resource type="Texture2D" uid="uid://cmvq2wqvp5m64" path="res://UI/FreeroamThumbnails/NoThumb.png" id="3_vaoig"] [ext_resource type="Texture2D" uid="uid://cmvq2wqvp5m64" path="res://UI/FreeroamThumbnails/NoThumb.png" id="3_vaoig"]
[ext_resource type="AudioStream" uid="uid://bcid1hgbabpoo" path="res://UI/Music/future_tech.ogg" id="6_dkd36"]
[ext_resource type="Script" uid="uid://crsjjkf341k7x" path="res://Scripts/InputOptions.gd" id="6_ha2rd"]
[ext_resource type="Script" uid="uid://c8dhm0nhxqlth" path="res://Scripts/GraphicsOptions.gd" id="8_wdeli"] [ext_resource type="Script" uid="uid://c8dhm0nhxqlth" path="res://Scripts/GraphicsOptions.gd" id="8_wdeli"]
[ext_resource type="Script" uid="uid://bmqi57p5yipll" path="res://Scripts/InterfaceOptions.gd" id="9_wyv1s"] [ext_resource type="Script" uid="uid://bmqi57p5yipll" path="res://Scripts/InterfaceOptions.gd" id="9_wyv1s"]
@ -45,6 +48,24 @@ auto_translate_mode = 1
initial_position = 2 initial_position = 2
dialog_text = "Please restart the game for any changes to apply." dialog_text = "Please restart the game for any changes to apply."
[node name="DynamicBackground" type="Control" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("2_wdeli")
[node name="SubViewport" type="Node3D" parent="DynamicBackground"]
[node name="SuperSecretInvisibleZone" type="Control" parent="DynamicBackground"]
visible = false
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="BackgroundImage" type="TextureRect" parent="."] [node name="BackgroundImage" type="TextureRect" parent="."]
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
@ -74,26 +95,25 @@ offset_right = 324.0
offset_bottom = -52.0 offset_bottom = -52.0
grow_vertical = 0 grow_vertical = 0
[node name="EditorButton" type="Button" parent="Buttons"] [node name="FreeRoamButton" type="Button" parent="Buttons"]
layout_mode = 0 layout_mode = 0
offset_left = 4.0 offset_left = 4.0
offset_top = 4.0 offset_top = 4.0
offset_right = 260.0 offset_right = 260.0
offset_bottom = 52.0 offset_bottom = 52.0
focus_next = NodePath("../FreeRoamButton") focus_next = NodePath("../EditorButton")
focus_previous = NodePath("../ExitButton") focus_previous = NodePath("../ExitButton")
text = "Editor" text = "Free Roam"
[node name="FreeRoamButton" type="Button" parent="Buttons"] [node name="EditorButton" type="Button" parent="Buttons"]
layout_mode = 0 layout_mode = 0
offset_left = 4.0 offset_left = 4.0
offset_top = 56.0 offset_top = 56.0
offset_right = 260.0 offset_right = 260.0
offset_bottom = 104.0 offset_bottom = 104.0
focus_next = NodePath("../ModsButton") focus_next = NodePath("../ModsButton")
focus_previous = NodePath("../EditorButton") focus_previous = NodePath("../FreeRoamButton")
text = "Free Roam text = "Editor"
"
[node name="ModsButton" type="Button" parent="Buttons"] [node name="ModsButton" type="Button" parent="Buttons"]
layout_mode = 0 layout_mode = 0
@ -628,8 +648,7 @@ text = "Pneumatic Plaything Animatronic Simulator
Project Oversight: Persephone (KawaiiZenbo) Project Oversight: Persephone (KawaiiZenbo)
Interface Design: Persephone Interface Design, Simulator Backend: Persephone
Simulator Backend: Persephone
Settings System: Pizza Perpetrator Settings System: Pizza Perpetrator
Models: Models:
@ -639,9 +658,11 @@ Luigigamin212: Chuck E's Corner
ToastHQ: Balcony Stage, 3-Stage Bots ToastHQ: Balcony Stage, 3-Stage Bots
Avery: Cyberamic Iris Textures Avery: Cyberamic Iris Textures
This project is not associated with CEC Entertainment LLC. Title Music: \"Future Tech\" by River City Sound Production
or Creative Engineering Inc."
This project is not associated with CEC Entertainment LLC, Creative Engineering Inc, VIZ Media, or River City Sound Production"
horizontal_alignment = 1 horizontal_alignment = 1
autowrap_mode = 2
[node name="SettingsScreen" type="Control" parent="."] [node name="SettingsScreen" type="Control" parent="."]
visible = false visible = false
@ -717,9 +738,10 @@ offset_right = -4.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
current_tab = 0 current_tab = 0
tab_count = 2 tab_count = 3
tab_0/title = "Graphics" tab_0/title = "Graphics"
tab_1/title = "Interface" tab_1/title = "Interface"
tab_2/title = "Input"
[node name="GraphicsPanel" type="Panel" parent="SettingsScreen/DialogPanel"] [node name="GraphicsPanel" type="Panel" parent="SettingsScreen/DialogPanel"]
layout_mode = 1 layout_mode = 1
@ -936,6 +958,32 @@ text = "Theme:"
horizontal_alignment = 2 horizontal_alignment = 2
vertical_alignment = 1 vertical_alignment = 1
[node name="MusicLabel" type="Label" parent="SettingsScreen/DialogPanel/InterfacePanel"]
layout_mode = 1
anchors_preset = -1
anchor_right = 0.5
offset_left = 4.0
offset_top = 76.0
offset_right = -4.0
offset_bottom = 108.0
grow_horizontal = 2
text = "Title Screen Music:"
horizontal_alignment = 2
vertical_alignment = 1
[node name="DynamicLabel" type="Label" parent="SettingsScreen/DialogPanel/InterfacePanel"]
layout_mode = 1
anchors_preset = -1
anchor_right = 0.5
offset_left = 4.0
offset_top = 112.0
offset_right = -4.0
offset_bottom = 144.0
grow_horizontal = 2
text = "Dynamic Title Screen:"
horizontal_alignment = 2
vertical_alignment = 1
[node name="ScalingOption" type="OptionButton" parent="SettingsScreen/DialogPanel/InterfacePanel"] [node name="ScalingOption" type="OptionButton" parent="SettingsScreen/DialogPanel/InterfacePanel"]
layout_mode = 1 layout_mode = 1
anchors_preset = -1 anchors_preset = -1
@ -970,6 +1018,120 @@ popup/item_0/id = 0
popup/item_1/text = "Light" popup/item_1/text = "Light"
popup/item_1/id = 1 popup/item_1/id = 1
[node name="MusicOption" type="OptionButton" parent="SettingsScreen/DialogPanel/InterfacePanel"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
offset_left = 4.0
offset_top = 76.0
offset_right = -4.0
offset_bottom = 108.0
alignment = 1
selected = 1
item_count = 2
popup/item_0/text = "Disabled"
popup/item_0/id = 0
popup/item_1/text = "Enabled"
popup/item_1/id = 1
[node name="DynamicOption" type="OptionButton" parent="SettingsScreen/DialogPanel/InterfacePanel"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
offset_left = 4.0
offset_top = 112.0
offset_right = -4.0
offset_bottom = 144.0
alignment = 1
selected = 1
item_count = 2
popup/item_0/text = "Disabled"
popup/item_0/id = 0
popup/item_1/text = "Enabled"
popup/item_1/id = 1
[node name="InputPanel" type="Panel" parent="SettingsScreen/DialogPanel"]
visible = false
layout_mode = 1
anchors_preset = -1
anchor_top = 0.25
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 4.0
offset_right = -4.0
offset_bottom = -4.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("6_ha2rd")
[node name="SensLabel" type="Label" parent="SettingsScreen/DialogPanel/InputPanel"]
layout_mode = 1
anchors_preset = -1
anchor_right = 0.5
offset_left = 4.0
offset_top = 4.0
offset_right = -4.0
offset_bottom = 52.0
text = "Camera Sensitivity:"
horizontal_alignment = 2
vertical_alignment = 1
[node name="SensSlider" type="HSlider" parent="SettingsScreen/DialogPanel/InputPanel"]
custom_minimum_size = Vector2(215, 0)
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
offset_left = 4.0
offset_top = 4.0
offset_right = -4.0
offset_bottom = 20.0
min_value = 0.1
max_value = 5.0
step = 0.1
value = 1.1
ticks_on_borders = true
[node name="MinLabel" type="Label" parent="SettingsScreen/DialogPanel/InputPanel/SensSlider"]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 16.0
offset_bottom = 32.0
grow_horizontal = 2
grow_vertical = 2
text = "0.1"
vertical_alignment = 1
[node name="CurrentLabel" type="Label" parent="SettingsScreen/DialogPanel/InputPanel/SensSlider"]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 16.0
offset_bottom = 32.0
grow_horizontal = 2
grow_vertical = 2
text = "Sensitivity"
horizontal_alignment = 1
vertical_alignment = 1
[node name="MaxLabel" type="Label" parent="SettingsScreen/DialogPanel/InputPanel/SensSlider"]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 16.0
offset_bottom = 32.0
grow_horizontal = 2
grow_vertical = 2
text = "5"
horizontal_alignment = 2
vertical_alignment = 1
[node name="VersionLabel" type="Label" parent="."] [node name="VersionLabel" type="Label" parent="."]
layout_mode = 1 layout_mode = 1
anchors_preset = -1 anchors_preset = -1
@ -987,8 +1149,12 @@ text = "Pneumatic Plaything vX.X"
horizontal_alignment = 2 horizontal_alignment = 2
vertical_alignment = 1 vertical_alignment = 1
[connection signal="pressed" from="Buttons/EditorButton" to="." method="_on_button_pressed"] [node name="Music" type="AudioStreamPlayer" parent="."]
stream = ExtResource("6_dkd36")
parameters/looping = true
[connection signal="pressed" from="Buttons/FreeRoamButton" to="." method="_on_free_roam_button_pressed"] [connection signal="pressed" from="Buttons/FreeRoamButton" to="." method="_on_free_roam_button_pressed"]
[connection signal="pressed" from="Buttons/EditorButton" to="." method="_on_button_pressed"]
[connection signal="pressed" from="Buttons/ModsButton" to="." method="_on_mods_button_pressed"] [connection signal="pressed" from="Buttons/ModsButton" to="." method="_on_mods_button_pressed"]
[connection signal="pressed" from="Buttons/ControlsButton" to="." method="_on_controls_button_pressed"] [connection signal="pressed" from="Buttons/ControlsButton" to="." method="_on_controls_button_pressed"]
[connection signal="pressed" from="Buttons/CreditsButton" to="." method="_on_credits_button_pressed"] [connection signal="pressed" from="Buttons/CreditsButton" to="." method="_on_credits_button_pressed"]
@ -1005,9 +1171,13 @@ vertical_alignment = 1
[connection signal="pressed" from="SettingsScreen/InputEater" to="." method="_on_input_eater_pressed"] [connection signal="pressed" from="SettingsScreen/InputEater" to="." method="_on_input_eater_pressed"]
[connection signal="tab_changed" from="SettingsScreen/DialogPanel/TabBar" to="SettingsScreen/DialogPanel/GraphicsPanel" method="_on_tab_bar_tab_changed"] [connection signal="tab_changed" from="SettingsScreen/DialogPanel/TabBar" to="SettingsScreen/DialogPanel/GraphicsPanel" method="_on_tab_bar_tab_changed"]
[connection signal="tab_changed" from="SettingsScreen/DialogPanel/TabBar" to="SettingsScreen/DialogPanel/InterfacePanel" method="_on_tab_bar_tab_changed"] [connection signal="tab_changed" from="SettingsScreen/DialogPanel/TabBar" to="SettingsScreen/DialogPanel/InterfacePanel" method="_on_tab_bar_tab_changed"]
[connection signal="tab_changed" from="SettingsScreen/DialogPanel/TabBar" to="SettingsScreen/DialogPanel/InputPanel" method="_on_tab_bar_tab_changed"]
[connection signal="item_selected" from="SettingsScreen/DialogPanel/GraphicsPanel/AAOption" to="SettingsScreen/DialogPanel/GraphicsPanel" method="_on_option_aa_msaa_item_selected"] [connection signal="item_selected" from="SettingsScreen/DialogPanel/GraphicsPanel/AAOption" to="SettingsScreen/DialogPanel/GraphicsPanel" method="_on_option_aa_msaa_item_selected"]
[connection signal="item_selected" from="SettingsScreen/DialogPanel/GraphicsPanel/SSAAOption" to="SettingsScreen/DialogPanel/GraphicsPanel" method="_on_option_aa_ss_item_selected"] [connection signal="item_selected" from="SettingsScreen/DialogPanel/GraphicsPanel/SSAAOption" to="SettingsScreen/DialogPanel/GraphicsPanel" method="_on_option_aa_ss_item_selected"]
[connection signal="value_changed" from="SettingsScreen/DialogPanel/GraphicsPanel/FOVSlider" to="SettingsScreen/DialogPanel/GraphicsPanel" method="_on_fov_slider_value_changed"] [connection signal="value_changed" from="SettingsScreen/DialogPanel/GraphicsPanel/FOVSlider" to="SettingsScreen/DialogPanel/GraphicsPanel" method="_on_fov_slider_value_changed"]
[connection signal="item_selected" from="SettingsScreen/DialogPanel/GraphicsPanel/ShadowsOption" to="SettingsScreen/DialogPanel/GraphicsPanel" method="_on_shadows_option_item_selected"] [connection signal="item_selected" from="SettingsScreen/DialogPanel/GraphicsPanel/ShadowsOption" to="SettingsScreen/DialogPanel/GraphicsPanel" method="_on_shadows_option_item_selected"]
[connection signal="item_selected" from="SettingsScreen/DialogPanel/InterfacePanel/ScalingOption" to="SettingsScreen/DialogPanel/InterfacePanel" method="_on_scaling_option_item_selected"] [connection signal="item_selected" from="SettingsScreen/DialogPanel/InterfacePanel/ScalingOption" to="SettingsScreen/DialogPanel/InterfacePanel" method="_on_scaling_option_item_selected"]
[connection signal="item_selected" from="SettingsScreen/DialogPanel/InterfacePanel/ThemeOption" to="SettingsScreen/DialogPanel/InterfacePanel" method="_on_theme_option_item_selected"] [connection signal="item_selected" from="SettingsScreen/DialogPanel/InterfacePanel/ThemeOption" to="SettingsScreen/DialogPanel/InterfacePanel" method="_on_theme_option_item_selected"]
[connection signal="item_selected" from="SettingsScreen/DialogPanel/InterfacePanel/MusicOption" to="SettingsScreen/DialogPanel/InterfacePanel" method="_on_music_option_item_selected"]
[connection signal="item_selected" from="SettingsScreen/DialogPanel/InterfacePanel/DynamicOption" to="SettingsScreen/DialogPanel/InterfacePanel" method="_on_dynamic_option_item_selected"]
[connection signal="value_changed" from="SettingsScreen/DialogPanel/InputPanel/SensSlider" to="SettingsScreen/DialogPanel/InputPanel" method="_on_sens_slider_value_changed"]

View file

@ -6,9 +6,6 @@ var Generic1Stage = {
"description": "A generic showroom featuring the 1-Stage.\nInstalled from 1992-1998.", "description": "A generic showroom featuring the 1-Stage.\nInstalled from 1992-1998.",
"thumbnail": "res://UI/FreeroamThumbnails/Generic1Stage.png", "thumbnail": "res://UI/FreeroamThumbnails/Generic1Stage.png",
"stage": Stages.Cyber1Stage, "stage": Stages.Cyber1Stage,
"curtains": {
"Curtain": [ "1-Stage" ]
}
} }
var GenericTurntable1Stage = { var GenericTurntable1Stage = {
@ -17,9 +14,6 @@ var GenericTurntable1Stage = {
"description": "A generic showroom featuring the Turntable 1-Stage.\nInstalled from 1993-1998.", "description": "A generic showroom featuring the Turntable 1-Stage.\nInstalled from 1993-1998.",
"thumbnail": "res://UI/FreeroamThumbnails/GenericTurntable1Stage.png", "thumbnail": "res://UI/FreeroamThumbnails/GenericTurntable1Stage.png",
"stage": Stages.Turntable1Stage, "stage": Stages.Turntable1Stage,
"curtains": {
"Curtain": [ "1-Stage" ]
}
} }
var Generic12Stage = { var Generic12Stage = {
@ -28,9 +22,6 @@ var Generic12Stage = {
"description": "A generic showroom featuring the 1-Stage with 2-Stage props.\nInstalled from 1992-2011.", "description": "A generic showroom featuring the 1-Stage with 2-Stage props.\nInstalled from 1992-2011.",
"thumbnail": "res://UI/FreeroamThumbnails/Generic12Stage.png", "thumbnail": "res://UI/FreeroamThumbnails/Generic12Stage.png",
"stage": Stages.Cyber12Stage, "stage": Stages.Cyber12Stage,
"curtains": {
"Curtain": [ "1-Stage" ]
}
} }
var Generic2Stage = { var Generic2Stage = {
@ -39,9 +30,6 @@ var Generic2Stage = {
"description": "A generic showroom featuring the 2-Stage.\nInstalled from 1992-1997.", "description": "A generic showroom featuring the 2-Stage.\nInstalled from 1992-1997.",
"thumbnail": "res://UI/FreeroamThumbnails/Generic2Stage.png", "thumbnail": "res://UI/FreeroamThumbnails/Generic2Stage.png",
"stage": Stages.Cyber2Stage, "stage": Stages.Cyber2Stage,
"curtains": {
"Curtains": [ "CEC", "Main" ]
}
} }
var GenericMiniUnit1Stage = { var GenericMiniUnit1Stage = {
@ -50,7 +38,6 @@ var GenericMiniUnit1Stage = {
"description": "A generic showroom featuring the Mini Unit 1-Stage.\nInstalled from 1992-1994.", "description": "A generic showroom featuring the Mini Unit 1-Stage.\nInstalled from 1992-1994.",
"thumbnail": "res://UI/FreeroamThumbnails/GenericMini1Stage.png", "thumbnail": "res://UI/FreeroamThumbnails/GenericMini1Stage.png",
"stage": Stages.MiniUnit1Stage, "stage": Stages.MiniUnit1Stage,
"curtains": [ ]
} }
var GenericCyber3Stage = { var GenericCyber3Stage = {
@ -59,7 +46,6 @@ var GenericCyber3Stage = {
"description": "A generic showroom featuring the Cyberamic 3-Stage.\nInstalled in 2000 and 2017.", "description": "A generic showroom featuring the Cyberamic 3-Stage.\nInstalled in 2000 and 2017.",
"thumbnail": "res://UI/FreeroamThumbnails/GenericCyber3Stage.png", "thumbnail": "res://UI/FreeroamThumbnails/GenericCyber3Stage.png",
"stage": Stages.Cyber3Stage, "stage": Stages.Cyber3Stage,
"curtains": [ ]
} }
var MapIndex = { var MapIndex = {

View file

@ -1,12 +1,16 @@
extends Node extends Node
var FOV = 80
var config = ConfigFile.new() var config = ConfigFile.new()
var msaa = 1
var ssaa = 1 var FOV : float = 80
var scaling = 0 var msaa : int = 1
var theme = 0 var ssaa : int = 1
var shadows = 1 var scaling : int = 0
var theme : int = 0
var shadows : int = 1
var title_music : int = 1
var title_dynamic : int = 1
var mouse_sens : float = 1.0
var theme_index = [ var theme_index = [
"res://UI/Themes/Dark.tres", "res://UI/Themes/Dark.tres",
@ -40,6 +44,9 @@ func updateConfig():
config.set_value("GRAPHICS", "shadows", shadows) config.set_value("GRAPHICS", "shadows", shadows)
config.set_value("INTERFACE", "scaling", scaling) config.set_value("INTERFACE", "scaling", scaling)
config.set_value("INTERFACE", "theme", theme) config.set_value("INTERFACE", "theme", theme)
config.set_value("INTERFACE", "title_music", title_music)
config.set_value("INTERFACE", "title_dynamic", title_dynamic)
config.set_value("INPUT", "mouse_sens", mouse_sens)
config.save("user://settings.cfg") config.save("user://settings.cfg")
func loadConfig(): func loadConfig():
@ -48,13 +55,17 @@ func loadConfig():
if err != OK: if err != OK:
print("Couldn't load config!") print("Couldn't load config!")
return return
FOV = config.get_value("GRAPHICS", "fov") FOV = config.get_value("GRAPHICS", "fov")
msaa = config.get_value("GRAPHICS", "msaa") msaa = config.get_value("GRAPHICS", "msaa")
ssaa = config.get_value("GRAPHICS", "ssaa") ssaa = config.get_value("GRAPHICS", "ssaa")
shadows = config.get_value("GRAPHICS", "shadows") shadows = config.get_value("GRAPHICS", "shadows")
scaling = config.get_value("INTERFACE", "scaling") scaling = config.get_value("INTERFACE", "scaling")
theme = config.get_value("INTERFACE", "theme") theme = config.get_value("INTERFACE", "theme")
title_music = config.get_value("INTERFACE", "title_music")
title_dynamic = config.get_value("INTERFACE", "title_dynamic")
mouse_sens = config.get_value("INPUT", "mouse_sens")
print("config loaded.") print("config loaded.")
# set msaa # set msaa

View file

@ -7,6 +7,7 @@ var HelenHouse = {
"camera_count": 2, "camera_count": 2,
"ust_type": "Rockafire Explosion/3-Stage", "ust_type": "Rockafire Explosion/3-Stage",
"curtains": { },
"bit_mapping": "bit_mapping":
{ {
@ -43,6 +44,7 @@ var ChuckEsCorner = {
"camera_count": 3, "camera_count": 3,
"ust_type": "Cyberamics", "ust_type": "Cyberamics",
"curtains": { },
"bit_mapping": "bit_mapping":
{ {
@ -75,6 +77,7 @@ var BalconyStage = {
"camera_count": 6, "camera_count": 6,
"ust_type": "Cyberamics", "ust_type": "Cyberamics",
"curtains": { },
"bit_mapping": "bit_mapping":
{ {
@ -167,6 +170,7 @@ var CStage = {
"camera_count": 5, "camera_count": 5,
"ust_type": "Cyberamics", "ust_type": "Cyberamics",
"curtains": { },
"bit_mapping": "bit_mapping":
{ {
@ -255,6 +259,7 @@ var ProtoRoadStage = {
"camera_count": 6, "camera_count": 6,
"ust_type": "Cyberamics", "ust_type": "Cyberamics",
"curtains": { },
"bit_mapping": "bit_mapping":
{ {
@ -340,6 +345,8 @@ var Cyber3Stage = {
"ust_type": "Cyberamics", "ust_type": "Cyberamics",
"curtains": { },
"bit_mapping": "bit_mapping":
{ {
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 }, 1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
@ -431,6 +438,10 @@ var Cyber1Stage = {
"ust_type": "Cyberamics", "ust_type": "Cyberamics",
"curtains": {
"Curtain": [ "1-Stage" ]
},
"bit_mapping": "bit_mapping":
{ {
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 }, 1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
@ -525,6 +536,8 @@ var MiniUnit1Stage = {
"ust_type": "Cyberamics", "ust_type": "Cyberamics",
"curtains": { },
"bit_mapping": "bit_mapping":
{ {
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 }, 1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
@ -614,6 +627,10 @@ var Cyber2Stage = {
"ust_type": "Cyberamics", "ust_type": "Cyberamics",
"curtains": {
"Curtains": [ "CEC", "Main" ]
},
"bit_mapping": "bit_mapping":
{ {
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 }, 1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
@ -710,6 +727,10 @@ var Cyber12Stage = {
"ust_type": "Cyberamics", "ust_type": "Cyberamics",
"curtains": {
"Curtain": [ "1-Stage" ]
},
"bit_mapping": "bit_mapping":
{ {
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 }, 1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },
@ -803,6 +824,10 @@ var Turntable1Stage = {
"ust_type": "Cyberamics", "ust_type": "Cyberamics",
"curtains": {
"Curtain": [ "1-Stage" ]
},
"bit_mapping": "bit_mapping":
{ {
1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 }, 1: { "bot": "Chuck", "movement": "Mouth", "flow_in": 7.5, "flow_out": 6.0 },

View file

@ -0,0 +1,88 @@
extends Control
var currentStage: String
var playing = false
var index = 0
var cam_index = 1
var loaded_frames = []
var in_flows = []
var out_flows = []
var prev_frame_held = []
var animatables_handles = []
var rotationStages = [
"Balcony Stage",
"C-Stage",
"Prototype Road Stage",
"Mini Unit 1-Stage",
"1-Stage w 2-Stage Props",
"1-Stage",
"Turntable 1-Stage",
"2-Stage",
"Cyberamic 3-Stage",
]
func _ready() -> void:
if (GlobalVariables.title_dynamic == 1):
currentStage = rotationStages[randi() % rotationStages.size()]
$SubViewport.add_child(load(Stages.stages_info[currentStage]["scene"]).instantiate())
for curtain in Stages.stages_info[currentStage]["curtains"]:
for curtain_movement in Stages.stages_info[currentStage]["curtains"][curtain]:
get_node(Stages.stages_info[currentStage]["scene_ref_base"] + curtain)._movement_in(curtain_movement + " Up", 100000)
var cosmetics_count = 0
for cosmetic_subtable in Stages.stages_info[currentStage]["cosmetics"]:
for cosmetic in cosmetic_subtable:
var cosmetic_adjustment = load("res://Scenes/GUI/Controls/CosmeticAdjustment.tscn").instantiate()
cosmetic_adjustment.vis_name = cosmetic
cosmetic_adjustment.options = cosmetic_subtable[cosmetic]
cosmetic_adjustment.scene_handle = "../../" + Stages.stages_info[currentStage]["scene_ref_base"]
cosmetic_adjustment.drop_index = Stages.stages_info[currentStage]["cosmetic_defaults"][cosmetics_count]
cosmetics_count += 1
$SuperSecretInvisibleZone.add_child(cosmetic_adjustment)
for bit_number in Stages.stages_info[currentStage]["bit_mapping"]:
var bot = Stages.stages_info[currentStage]["bit_mapping"][bit_number]["bot"]
var in_flow = Stages.stages_info[currentStage]["bit_mapping"][bit_number]["flow_in"]
var out_flow = Stages.stages_info[currentStage]["bit_mapping"][bit_number]["flow_out"]
animatables_handles.push_back(get_node(Stages.stages_info[currentStage]["scene_ref_base"] + bot))
in_flows.push_back(in_flow)
out_flows.push_back(out_flow)
prev_frame_held.push_back(false)
var file = FileAccess.open("res://UI/CybersMenuRandom.txt", FileAccess.READ)
var content = file.get_as_text()
loaded_frames = []
for frame_string in content.split(","):
if (frame_string == ""): continue
var check_frame_split = frame_string.split()
check_frame_split.reverse()
var unpacked_frame = []
for i in Stages.stages_info[currentStage]["bit_mapping"]:
if ((check_frame_split[(i - 1) / 4].hex_to_int() & int(pow(2, ((i - 1) % 4)))) == int(pow(2, ((i - 1) % 4)))):
unpacked_frame.push_back(true)
else: unpacked_frame.push_back(false)
loaded_frames.push_back(unpacked_frame)
playing = true
func _physics_process(_delta: float) -> void:
if (playing):
if (index >= loaded_frames.size()):
index = 0
return
var j = 0
for i in Stages.stages_info[currentStage]["bit_mapping"]:
if (loaded_frames[index][j]):
if (!prev_frame_held[j]):
animatables_handles[j]._movement_in(Stages.stages_info[currentStage]["bit_mapping"][i]["movement"], in_flows[j])
prev_frame_held[j] = true
else:
if (prev_frame_held[j]):
animatables_handles[j]._movement_out(Stages.stages_info[currentStage]["bit_mapping"][i]["movement"], in_flows[j])
prev_frame_held[j] = false
j+=1
index += 1
if (index % 1800 == 0):
cam_index += 1
get_node(Stages.stages_info[currentStage]["scene_ref_base"] + "Angle " + str((cam_index % Stages.stages_info[currentStage]["camera_count"])+1)).current = true

View file

@ -0,0 +1 @@
uid://cnhq1jt48m1or

View file

@ -37,4 +37,5 @@ func _on_option_aa_msaa_item_selected(index: int) -> void:
func _on_shadows_option_item_selected(index: int) -> void: func _on_shadows_option_item_selected(index: int) -> void:
GlobalVariables.shadows = index GlobalVariables.shadows = index
get_tree().set_group("lights", "shadow_enabled", index == 1)
GlobalVariables.updateConfig() GlobalVariables.updateConfig()

View file

@ -234,8 +234,8 @@ func _physics_process(_delta: float) -> void:
func _input(event: InputEvent) -> void: func _input(event: InputEvent) -> void:
if event.is_action_pressed("freeroam_open_curtains"): if event.is_action_pressed("freeroam_open_curtains"):
for curtain in FreeRoamMaps.MapIndex[get_node("../").current_map]["curtains"]: for curtain in FreeRoamMaps.MapIndex[get_node("../").current_map]["stage"]["curtains"]:
for curtain_movement in FreeRoamMaps.MapIndex[get_node("../").current_map]["curtains"][curtain]: for curtain_movement in FreeRoamMaps.MapIndex[get_node("../").current_map]["stage"]["curtains"][curtain]:
get_node("../../" + curtain)._movement_in(curtain_movement + " Up", 0.2) get_node("../../" + curtain)._movement_in(curtain_movement + " Up", 0.2)
if (transport_enabled): if (transport_enabled):
if event.is_action_pressed("freeroam_transport_play_pause"): if event.is_action_pressed("freeroam_transport_play_pause"):

18
Scripts/InputOptions.gd Normal file
View file

@ -0,0 +1,18 @@
extends Panel
@export var thisTab = 2
func _ready() -> void:
$SensSlider.value = GlobalVariables.mouse_sens
$SensSlider/CurrentLabel.text = str(GlobalVariables.mouse_sens)
func _on_tab_bar_tab_changed(tab: int) -> void:
if (thisTab == tab):
visible = true
else:
visible = false
func _on_sens_slider_value_changed(value: float) -> void:
GlobalVariables.mouse_sens = value
$SensSlider/CurrentLabel.text = str(value)
GlobalVariables.updateConfig()

View file

@ -0,0 +1 @@
uid://crsjjkf341k7x

View file

@ -5,6 +5,8 @@ extends Panel
func _ready() -> void: func _ready() -> void:
$ScalingOption.select(GlobalVariables.scaling) $ScalingOption.select(GlobalVariables.scaling)
$ThemeOption.select(GlobalVariables.theme) $ThemeOption.select(GlobalVariables.theme)
$MusicOption.select(GlobalVariables.title_music)
$DynamicOption.select(GlobalVariables.title_dynamic)
func _on_tab_bar_tab_changed(tab: int) -> void: func _on_tab_bar_tab_changed(tab: int) -> void:
if (thisTab == tab): if (thisTab == tab):
@ -21,3 +23,19 @@ func _on_theme_option_item_selected(index: int) -> void:
GlobalVariables.theme = index GlobalVariables.theme = index
get_window().set_theme(load(GlobalVariables.theme_index[GlobalVariables.theme])) get_window().set_theme(load(GlobalVariables.theme_index[GlobalVariables.theme]))
GlobalVariables.updateConfig() GlobalVariables.updateConfig()
func _on_music_option_item_selected(index: int) -> void:
GlobalVariables.title_music = index
if (index == 0): get_node("../../../Music").stop()
else: get_node("../../../Music").play()
GlobalVariables.updateConfig()
func _on_dynamic_option_item_selected(index: int) -> void:
GlobalVariables.title_dynamic = index
if (index == 0):
get_node("../../../BackgroundImage").visible = true
get_node("../../../DynamicBackground").visible = false
else:
get_node("../../../BackgroundImage").visible = false
get_node("../../../DynamicBackground").visible = true
GlobalVariables.updateConfig()

View file

@ -14,6 +14,12 @@ func _ready():
$SettingsScreen/DialogPanel/GraphicsPanel/SSAAOption.selected = GlobalVariables.ssaa $SettingsScreen/DialogPanel/GraphicsPanel/SSAAOption.selected = GlobalVariables.ssaa
get_window().set_theme(load(GlobalVariables.theme_index[GlobalVariables.theme])) get_window().set_theme(load(GlobalVariables.theme_index[GlobalVariables.theme]))
if (GlobalVariables.title_music == 1): $Music.play()
if (GlobalVariables.title_dynamic == 1):
$BackgroundImage.visible = false
$DynamicBackground.visible = true
get_tree().set_group("lights", "shadow_enabled", GlobalVariables.shadows == 1)
var moddir = DirAccess.open("user://Mods") var moddir = DirAccess.open("user://Mods")
if moddir == null: if moddir == null:

View file

@ -48,7 +48,7 @@ func _unhandled_input(event: InputEvent) -> void:
if (interact): if (interact):
if event is InputEventMouseMotion: if event is InputEventMouseMotion:
look_dir = event.relative * 0.001 look_dir = event.relative * 0.001
if mouse_captured: _rotate_camera() if mouse_captured: _rotate_camera(GlobalVariables.mouse_sens)
if event.is_action_pressed(&"fullscreen"): if event.is_action_pressed(&"fullscreen"):
if (!DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_FULLSCREEN): if (!DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_FULLSCREEN):
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN) DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
@ -142,7 +142,7 @@ func _physics_process(delta: float) -> void:
if ($Camera/Flashlight.visible): $FlashlightOnSFX.play() if ($Camera/Flashlight.visible): $FlashlightOnSFX.play()
else: $FlashlightOffSFX.play() else: $FlashlightOffSFX.play()
if mouse_captured: _handle_joypad_camera_rotation(delta) if mouse_captured: _handle_joypad_camera_rotation(delta, GlobalVariables.mouse_sens)
velocity = _walk(delta) + _gravity(delta) + _jump(delta) velocity = _walk(delta) + _gravity(delta) + _jump(delta)
move_and_slide() move_and_slide()
if (self.position.y < -20): if (self.position.y < -20):

1
UI/CybersMenuRandom.txt Normal file

File diff suppressed because one or more lines are too long

BIN
UI/Music/future_tech.ogg Normal file

Binary file not shown.

View file

@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://bcid1hgbabpoo"
path="res://.godot/imported/future_tech.ogg-d18ec4f7cd78fb8a2cbb12385c7ec4ce.oggvorbisstr"
[deps]
source_file="res://UI/Music/future_tech.ogg"
dest_files=["res://.godot/imported/future_tech.ogg-d18ec4f7cd78fb8a2cbb12385c7ec4ce.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4