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")]
visible = false
[node name="Star Light" parent="Special" instance=ExtResource("20_ty70p")]
[node name="CEC Star" parent="Special" instance=ExtResource("20_ty70p")]
visible = false
[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")]
visible = false
[node name="Star Light" parent="Special" instance=ExtResource("14_g76xr")]
[node name="CEC Star" parent="Special" instance=ExtResource("14_g76xr")]
visible = false
[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="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="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://bmqi57p5yipll" path="res://Scripts/InterfaceOptions.gd" id="9_wyv1s"]
@ -45,6 +48,24 @@ auto_translate_mode = 1
initial_position = 2
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="."]
layout_mode = 1
anchors_preset = 15
@ -74,26 +95,25 @@ offset_right = 324.0
offset_bottom = -52.0
grow_vertical = 0
[node name="EditorButton" type="Button" parent="Buttons"]
[node name="FreeRoamButton" type="Button" parent="Buttons"]
layout_mode = 0
offset_left = 4.0
offset_top = 4.0
offset_right = 260.0
offset_bottom = 52.0
focus_next = NodePath("../FreeRoamButton")
focus_next = NodePath("../EditorButton")
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
offset_left = 4.0
offset_top = 56.0
offset_right = 260.0
offset_bottom = 104.0
focus_next = NodePath("../ModsButton")
focus_previous = NodePath("../EditorButton")
text = "Free Roam
"
focus_previous = NodePath("../FreeRoamButton")
text = "Editor"
[node name="ModsButton" type="Button" parent="Buttons"]
layout_mode = 0
@ -628,8 +648,7 @@ text = "Pneumatic Plaything Animatronic Simulator
Project Oversight: Persephone (KawaiiZenbo)
Interface Design: Persephone
Simulator Backend: Persephone
Interface Design, Simulator Backend: Persephone
Settings System: Pizza Perpetrator
Models:
@ -639,9 +658,11 @@ Luigigamin212: Chuck E's Corner
ToastHQ: Balcony Stage, 3-Stage Bots
Avery: Cyberamic Iris Textures
This project is not associated with CEC Entertainment LLC.
or Creative Engineering Inc."
Title Music: \"Future Tech\" by River City Sound Production
This project is not associated with CEC Entertainment LLC, Creative Engineering Inc, VIZ Media, or River City Sound Production"
horizontal_alignment = 1
autowrap_mode = 2
[node name="SettingsScreen" type="Control" parent="."]
visible = false
@ -717,9 +738,10 @@ offset_right = -4.0
grow_horizontal = 2
grow_vertical = 2
current_tab = 0
tab_count = 2
tab_count = 3
tab_0/title = "Graphics"
tab_1/title = "Interface"
tab_2/title = "Input"
[node name="GraphicsPanel" type="Panel" parent="SettingsScreen/DialogPanel"]
layout_mode = 1
@ -936,6 +958,32 @@ text = "Theme:"
horizontal_alignment = 2
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"]
layout_mode = 1
anchors_preset = -1
@ -970,6 +1018,120 @@ popup/item_0/id = 0
popup/item_1/text = "Light"
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="."]
layout_mode = 1
anchors_preset = -1
@ -987,8 +1149,12 @@ text = "Pneumatic Plaything vX.X"
horizontal_alignment = 2
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/EditorButton" to="." method="_on_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/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="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/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/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="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/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.",
"thumbnail": "res://UI/FreeroamThumbnails/Generic1Stage.png",
"stage": Stages.Cyber1Stage,
"curtains": {
"Curtain": [ "1-Stage" ]
}
}
var GenericTurntable1Stage = {
@ -17,9 +14,6 @@ var GenericTurntable1Stage = {
"description": "A generic showroom featuring the Turntable 1-Stage.\nInstalled from 1993-1998.",
"thumbnail": "res://UI/FreeroamThumbnails/GenericTurntable1Stage.png",
"stage": Stages.Turntable1Stage,
"curtains": {
"Curtain": [ "1-Stage" ]
}
}
var Generic12Stage = {
@ -28,9 +22,6 @@ var Generic12Stage = {
"description": "A generic showroom featuring the 1-Stage with 2-Stage props.\nInstalled from 1992-2011.",
"thumbnail": "res://UI/FreeroamThumbnails/Generic12Stage.png",
"stage": Stages.Cyber12Stage,
"curtains": {
"Curtain": [ "1-Stage" ]
}
}
var Generic2Stage = {
@ -39,9 +30,6 @@ var Generic2Stage = {
"description": "A generic showroom featuring the 2-Stage.\nInstalled from 1992-1997.",
"thumbnail": "res://UI/FreeroamThumbnails/Generic2Stage.png",
"stage": Stages.Cyber2Stage,
"curtains": {
"Curtains": [ "CEC", "Main" ]
}
}
var GenericMiniUnit1Stage = {
@ -50,7 +38,6 @@ var GenericMiniUnit1Stage = {
"description": "A generic showroom featuring the Mini Unit 1-Stage.\nInstalled from 1992-1994.",
"thumbnail": "res://UI/FreeroamThumbnails/GenericMini1Stage.png",
"stage": Stages.MiniUnit1Stage,
"curtains": [ ]
}
var GenericCyber3Stage = {
@ -59,7 +46,6 @@ var GenericCyber3Stage = {
"description": "A generic showroom featuring the Cyberamic 3-Stage.\nInstalled in 2000 and 2017.",
"thumbnail": "res://UI/FreeroamThumbnails/GenericCyber3Stage.png",
"stage": Stages.Cyber3Stage,
"curtains": [ ]
}
var MapIndex = {

View file

@ -1,12 +1,16 @@
extends Node
var FOV = 80
var config = ConfigFile.new()
var msaa = 1
var ssaa = 1
var scaling = 0
var theme = 0
var shadows = 1
var FOV : float = 80
var msaa : int = 1
var ssaa : int = 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 = [
"res://UI/Themes/Dark.tres",
@ -40,6 +44,9 @@ func updateConfig():
config.set_value("GRAPHICS", "shadows", shadows)
config.set_value("INTERFACE", "scaling", scaling)
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")
func loadConfig():
@ -48,13 +55,17 @@ func loadConfig():
if err != OK:
print("Couldn't load config!")
return
FOV = config.get_value("GRAPHICS", "fov")
msaa = config.get_value("GRAPHICS", "msaa")
ssaa = config.get_value("GRAPHICS", "ssaa")
shadows = config.get_value("GRAPHICS", "shadows")
scaling = config.get_value("INTERFACE", "scaling")
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.")
# set msaa

View file

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

View file

@ -234,8 +234,8 @@ func _physics_process(_delta: float) -> void:
func _input(event: InputEvent) -> void:
if event.is_action_pressed("freeroam_open_curtains"):
for curtain in FreeRoamMaps.MapIndex[get_node("../").current_map]["curtains"]:
for curtain_movement in FreeRoamMaps.MapIndex[get_node("../").current_map]["curtains"][curtain]:
for curtain in FreeRoamMaps.MapIndex[get_node("../").current_map]["stage"]["curtains"]:
for curtain_movement in FreeRoamMaps.MapIndex[get_node("../").current_map]["stage"]["curtains"][curtain]:
get_node("../../" + curtain)._movement_in(curtain_movement + " Up", 0.2)
if (transport_enabled):
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:
$ScalingOption.select(GlobalVariables.scaling)
$ThemeOption.select(GlobalVariables.theme)
$MusicOption.select(GlobalVariables.title_music)
$DynamicOption.select(GlobalVariables.title_dynamic)
func _on_tab_bar_tab_changed(tab: int) -> void:
if (thisTab == tab):
@ -21,3 +23,19 @@ func _on_theme_option_item_selected(index: int) -> void:
GlobalVariables.theme = index
get_window().set_theme(load(GlobalVariables.theme_index[GlobalVariables.theme]))
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
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")
if moddir == null:

View file

@ -48,7 +48,7 @@ func _unhandled_input(event: InputEvent) -> void:
if (interact):
if event is InputEventMouseMotion:
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 (!DisplayServer.window_get_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()
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)
move_and_slide()
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