Compare commits

...

6 commits
v0.6.1 ... main

Author SHA1 Message Date
Persephone Bubblegum-Holiday
539c09e5fe update logo and change some text 2025-07-31 23:36:33 -07:00
Persephone Bubblegum-Holiday
72b8578ece this ones called "persephone forgets to commit"
rearrange some files
make menu much nicer
add modding support
remove GT files from repo
2025-07-31 22:31:46 -07:00
Persephone Bubblegum-Holiday
e71a64c690 small bugfixes 2025-07-31 14:27:59 -07:00
Persephone Bubblegum-Holiday
f77e90da58 start work on main menu 2025-07-26 22:08:15 -07:00
Persephone Bubblegum-Holiday
1ca6bda653 bump version 2025-07-26 20:38:04 -07:00
Persephone Bubblegum-Holiday
bc02b3e0aa Revert "v0.6.1 semi reversions"
This reverts commit b721c46a0b.
2025-07-26 20:35:08 -07:00
43 changed files with 1055 additions and 309 deletions

1
.gitignore vendored
View file

@ -1,5 +1,4 @@
# Godot 4+ specific ignores
.godot/
/android/
/LoadedModContent/
export_presets.cfg

View file

@ -1,18 +1,17 @@
[gd_scene load_steps=27 format=3 uid="uid://oiehbor0dlqx"]
[gd_scene load_steps=26 format=3 uid="uid://oiehbor0dlqx"]
[ext_resource type="Script" uid="uid://dfiwoln8mdwm8" path="res://Scripts/EditorScreen.gd" id="1_sd512"]
[ext_resource type="Theme" uid="uid://dbgs4id7y5d1c" path="res://UI/Themes/Dark.tres" id="1_v0ton"]
[ext_resource type="Texture2D" uid="uid://xllpr3qc064c" path="res://UI/Play.png" id="3_g6u4d"]
[ext_resource type="Texture2D" uid="uid://dgacnkv2dc65s" path="res://UI/PlayBackwards.png" id="3_mr8sb"]
[ext_resource type="Texture2D" uid="uid://dts4eh6hyt8p3" path="res://UI/SkipBackwards.png" id="3_r4ytj"]
[ext_resource type="Texture2D" uid="uid://bpb3xn54kpxoe" path="res://UI/icon-32px.png" id="4_20noo"]
[ext_resource type="Texture2D" uid="uid://bwhgy4u37jmo1" path="res://UI/Pause.png" id="4_ba3jn"]
[ext_resource type="Theme" uid="uid://dbgs4id7y5d1c" path="res://UI/Themes/EditorDark.tres" id="1_v0ton"]
[ext_resource type="Texture2D" uid="uid://xllpr3qc064c" path="res://UI/TransportControls/Play.png" id="3_g6u4d"]
[ext_resource type="Texture2D" uid="uid://dgacnkv2dc65s" path="res://UI/TransportControls/PlayBackwards.png" id="3_mr8sb"]
[ext_resource type="Texture2D" uid="uid://dts4eh6hyt8p3" path="res://UI/TransportControls/SkipBackwards.png" id="3_r4ytj"]
[ext_resource type="Texture2D" uid="uid://bwhgy4u37jmo1" path="res://UI/TransportControls/Pause.png" id="4_ba3jn"]
[ext_resource type="Texture2D" uid="uid://s3yr2wasxv03" path="res://UI/BlankCam.png" id="4_v0ton"]
[ext_resource type="Texture2D" uid="uid://dhx2v2fd0egxd" path="res://UI/FastBackwards.png" id="4_wy7jo"]
[ext_resource type="Texture2D" uid="uid://cttgtbu1xllwq" path="res://UI/Stop.png" id="8_20noo"]
[ext_resource type="Texture2D" uid="uid://dsr03w7r667fw" path="res://UI/FastForward.png" id="8_v0ton"]
[ext_resource type="Texture2D" uid="uid://bphwtliq2ahus" path="res://UI/SkipForward.png" id="9_20noo"]
[ext_resource type="Texture2D" uid="uid://ckg2ihy105ttj" path="res://UI/Record.png" id="10_wy7jo"]
[ext_resource type="Texture2D" uid="uid://dhx2v2fd0egxd" path="res://UI/TransportControls/FastBackwards.png" id="4_wy7jo"]
[ext_resource type="Texture2D" uid="uid://cttgtbu1xllwq" path="res://UI/TransportControls/Stop.png" id="8_20noo"]
[ext_resource type="Texture2D" uid="uid://dsr03w7r667fw" path="res://UI/TransportControls/FastForward.png" id="8_v0ton"]
[ext_resource type="Texture2D" uid="uid://bphwtliq2ahus" path="res://UI/TransportControls/SkipForward.png" id="9_20noo"]
[ext_resource type="Texture2D" uid="uid://ckg2ihy105ttj" path="res://UI/TransportControls/Record.png" id="10_wy7jo"]
[ext_resource type="ButtonGroup" uid="uid://bij2tonqeslpt" path="res://Scenes/GUI/FlyoutButtonGroup.tres" id="13_wy7jo"]
[sub_resource type="ViewportTexture" id="ViewportTexture_g6u4d"]
@ -99,6 +98,22 @@ ok_button_text = "Proceed"
dialog_text = "You have unsaved data! Are you sure you want to proceed?"
cancel_button_text = "Do Not"
[node name="ExitMenuOverwriteConfirmationDialog" type="ConfirmationDialog" parent="."]
auto_translate_mode = 1
initial_position = 2
size = Vector2i(472, 100)
ok_button_text = "Proceed"
dialog_text = "You have unsaved data! Are you sure you want to proceed?"
cancel_button_text = "Do Not"
[node name="ExitDesktopOverwriteConfirmationDialog" type="ConfirmationDialog" parent="."]
auto_translate_mode = 1
initial_position = 2
size = Vector2i(472, 100)
ok_button_text = "Proceed"
dialog_text = "You have unsaved data! Are you sure you want to proceed?"
cancel_button_text = "Do Not"
[node name="FileDoesntExistDialog" type="AcceptDialog" parent="."]
initial_position = 2
dialog_text = "The specified file does not exist."
@ -126,6 +141,10 @@ dialog_text = "This showtape is not compatible with the currently selected stage
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
[node name="SubViewport" type="SubViewport" parent="."]
msaa_3d = 1
screen_space_aa = 1
use_debanding = true
use_occlusion_culling = true
mesh_lod_threshold = 0.0
size = Vector2i(1280, 720)
@ -138,7 +157,7 @@ grow_horizontal = 2
grow_vertical = 2
color = Color(0.187176, 0.187176, 0.187176, 1)
[node name="Label" type="Label" parent="."]
[node name="InstructionsLabel" type="Button" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_right = 0.5
@ -149,15 +168,20 @@ offset_right = -8.0
offset_bottom = 48.0
grow_horizontal = 2
grow_vertical = 2
text = "Welcome to Pneumatic Plaything Animatronic Simulator!
text = "Welcome to the Pneumatic Plaything Editor!
You can press the buttons to the side to
control the bots manually, adjust their flows,
change the camera angle, or switch their cosmetics.
You can use the menu button on the top bar to
create a new Showtape, load an existing Showtape,
or exit to the menu.
Open the Controls menu to see all of the keybinds."
horizontal_alignment = 1
vertical_alignment = 1
The buttons on the side can be used to manually
control aspects of the show, such as flows, the
camera, and cosmetics.
Controls can be viewed from the main menu
Click on this message to dismiss it."
flat = true
[node name="CameraPlaceholder" type="TextureRect" parent="."]
layout_mode = 1
@ -205,7 +229,7 @@ offset_top = 4.0
offset_right = 260.0
offset_bottom = 36.0
selected = 1
item_count = 6
item_count = 16
popup/item_0/text = "Official Stages"
popup/item_0/id = 0
popup/item_0/separator = true
@ -213,83 +237,68 @@ popup/item_1/text = "Balcony Stage"
popup/item_1/id = 1
popup/item_2/text = "C-Stage"
popup/item_2/id = 2
popup/item_3/text = "Custom Stages"
popup/item_3/id = 5
popup/item_3/separator = true
popup/item_4/text = "Helen House"
popup/item_4/id = 6
popup/item_5/text = "Chuck E's Corner"
popup/item_5/id = 7
[node name="MenuButton" type="MenuButton" parent="MenuBar"]
layout_mode = 0
offset_left = 264.0
offset_top = 4.0
offset_right = 392.0
offset_bottom = 36.0
text = "Showtape"
flat = false
item_count = 3
popup/item_0/text = "New"
popup/item_0/id = 0
popup/item_1/text = "Load"
popup/item_1/id = 1
popup/item_2/text = "Save"
popup/item_2/id = 2
[node name="ControlsButton" type="Button" parent="MenuBar"]
layout_mode = 0
offset_left = 396.0
offset_top = 4.0
offset_right = 524.0
offset_bottom = 36.0
text = "Controls"
[node name="CreditsButton" type="Button" parent="MenuBar"]
layout_mode = 0
offset_left = 528.0
offset_top = 4.0
offset_right = 656.0
offset_bottom = 36.0
text = "Credits"
[node name="Wordmark" type="Label" parent="MenuBar"]
layout_mode = 1
anchors_preset = -1
anchor_left = 1.0
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_left = -264.0
offset_top = -16.0
offset_right = -40.0
offset_bottom = 16.0
grow_horizontal = 0
grow_vertical = 2
text = "Pneumatic Plaything v0.6.1"
horizontal_alignment = 2
vertical_alignment = 1
popup/item_3/text = "Rocker Stage"
popup/item_3/id = 3
popup/item_4/text = "3-Stage"
popup/item_4/id = 4
popup/item_5/text = "Prototype Road Stage"
popup/item_5/id = 5
popup/item_6/text = "Road Stage"
popup/item_6/id = 6
popup/item_7/text = "2-Stage"
popup/item_7/id = 7
popup/item_8/text = "1-Stage"
popup/item_8/id = 8
popup/item_9/text = "Turntable 1-Stage"
popup/item_9/id = 9
popup/item_10/text = "Cyberamic 3-Stage"
popup/item_10/id = 10
popup/item_11/text = "CU-1 Stage"
popup/item_11/id = 11
popup/item_12/text = "Custom Stages"
popup/item_12/id = 12
popup/item_12/separator = true
popup/item_13/text = "Helen House"
popup/item_13/id = 13
popup/item_14/text = "Chuck E's Corner"
popup/item_14/id = 14
popup/item_15/text = "Modded Stages"
popup/item_15/id = 15
popup/item_15/separator = true
[node name="EditingLabel" type="Label" parent="MenuBar"]
layout_mode = 0
offset_left = 660.0
offset_left = 268.0
offset_top = 4.0
offset_right = 899.0
offset_right = 524.0
offset_bottom = 36.0
text = "No showtape loaded."
vertical_alignment = 1
[node name="TextureRect" type="TextureRect" parent="MenuBar"]
[node name="MenuButton" type="MenuButton" parent="MenuBar"]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -36.0
offset_left = -132.0
offset_top = 4.0
offset_right = -4.0
offset_bottom = 36.0
grow_horizontal = 0
texture = ExtResource("4_20noo")
text = "Menu
"
flat = false
item_count = 5
popup/item_0/text = "New Showtape"
popup/item_0/id = 0
popup/item_1/text = "Load Show"
popup/item_1/id = 1
popup/item_2/text = "Save Show"
popup/item_2/id = 2
popup/item_3/text = "Exit to Main Menu"
popup/item_3/id = 3
popup/item_4/text = "Exit to Desktop"
popup/item_4/id = 4
[node name="SequencerPanel" type="Panel" parent="."]
layout_mode = 1
@ -630,135 +639,6 @@ offset_bottom = 388.0
max_value = 0.0
step = 1.0
[node name="ControlsScreen" 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
[node name="InputEater" type="Button" parent="ControlsScreen"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/focus = SubResource("StyleBoxEmpty_wy7jo")
theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_v0ton")
theme_override_styles/disabled = SubResource("StyleBoxEmpty_20noo")
theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_mch36")
theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_fxi2g")
theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_bdf35")
theme_override_styles/hover = SubResource("StyleBoxEmpty_j2w5p")
theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_bv2rw")
theme_override_styles/pressed = SubResource("StyleBoxEmpty_gx718")
theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_gu086")
theme_override_styles/normal = SubResource("StyleBoxEmpty_othvt")
[node name="DialogPanel" type="Panel" parent="ControlsScreen"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -256.0
offset_top = -192.0
offset_right = 256.0
offset_bottom = 192.0
grow_horizontal = 2
grow_vertical = 2
[node name="Label" type="Label" parent="ControlsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
text = "Fullscreen camera view: ESC
Fullscreen program: F11 or Alt+Enter
Play/Pause: Space
Play Reverse: Shift + Space
Fast Forward: Shift + Right Arrow
Fast Reverse: Shift + Left
Step Forward: Right Arrow
Step Backward: Left Arrow
Stop: Home
Change Camera Angle: Tab"
horizontal_alignment = 1
vertical_alignment = 1
[node name="CreditsScreen" 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
[node name="InputEater" type="Button" parent="CreditsScreen"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/focus = SubResource("StyleBoxEmpty_wy7jo")
theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_v0ton")
theme_override_styles/disabled = SubResource("StyleBoxEmpty_20noo")
theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_mch36")
theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_fxi2g")
theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_bdf35")
theme_override_styles/hover = SubResource("StyleBoxEmpty_j2w5p")
theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_bv2rw")
theme_override_styles/pressed = SubResource("StyleBoxEmpty_gx718")
theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_gu086")
theme_override_styles/normal = SubResource("StyleBoxEmpty_othvt")
[node name="DialogPanel" type="Panel" parent="CreditsScreen"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -256.0
offset_top = -256.0
offset_right = 256.0
offset_bottom = 256.0
grow_horizontal = 2
grow_vertical = 2
[node name="Label" type="Label" parent="CreditsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
text = "Pneumatic Plaything Animatronic Simulator
Project Oversight: Persephone (KawaiiZenbo)
Interface Design: Persephone
Simulator Backend: Persephone
3-Stage Bot Models: Persephone
Cyberamic Bot Models: Persephone
C-Stage Model: Persephone
Iris Textures: Avery
Chuck E's Corner Stage: Luigigamin212
Balcony Stage Model: ToastHQ
This project is not associated with CEC Entertainment LLC.
or Creative Engineering Inc."
horizontal_alignment = 1
vertical_alignment = 1
[node name="ShowtapeNewScreen" type="Control" parent="."]
visible = false
layout_mode = 1
@ -1115,9 +995,10 @@ expand_mode = 2
[connection signal="confirmed" from="NewOverwriteConfirmationDialog" to="." method="_on_new_overwrite_confirmation_dialog_confirmed"]
[connection signal="confirmed" from="LoadOverwriteConfirmationDialog" to="." method="_on_load_overwrite_confirmation_dialog_confirmed"]
[connection signal="confirmed" from="StageChangeOverwriteConfirmationDialog" to="." method="_on_stage_change_overwrite_confirmation_dialog_confirmed"]
[connection signal="confirmed" from="ExitMenuOverwriteConfirmationDialog" to="." method="_on_exit_menu_overwrite_confirmation_dialog_confirmed"]
[connection signal="confirmed" from="ExitDesktopOverwriteConfirmationDialog" to="." method="_on_exit_desktop_overwrite_confirmation_dialog_2_confirmed"]
[connection signal="pressed" from="InstructionsLabel" to="." method="_on_instructions_label_pressed"]
[connection signal="item_selected" from="MenuBar/StageSelector" to="." method="_on_stage_selector_item_selected"]
[connection signal="pressed" from="MenuBar/ControlsButton" to="." method="_on_controls_button_pressed"]
[connection signal="pressed" from="MenuBar/CreditsButton" to="." method="_on_credits_button_pressed"]
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/StepBackwardsButton" to="." method="_on_step_backwards_button_pressed"]
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/FastBackwardsButton" to="." method="_on_fast_backwards_button_pressed"]
[connection signal="pressed" from="SequencerPanel/TransportControls/Centered/PlayBackwardsButton" to="." method="_on_play_backwards_button_pressed"]
@ -1135,8 +1016,6 @@ expand_mode = 2
[connection signal="value_changed" from="FlyoutPanel/Movements/VScrollBar" to="." method="_on_movement_v_scroll_bar_value_changed"]
[connection signal="value_changed" from="FlyoutPanel/FlowControls/VScrollBar" to="." method="_on_flow_v_scroll_bar_value_changed"]
[connection signal="value_changed" from="FlyoutPanel/Cosmetics/VScrollBar" to="." method="_on_cosmetics_v_scroll_bar_value_changed"]
[connection signal="pressed" from="ControlsScreen/InputEater" to="." method="_on_input_eater_pressed"]
[connection signal="pressed" from="CreditsScreen/InputEater" to="." method="_on_input_eater_pressed"]
[connection signal="pressed" from="ShowtapeNewScreen/InputEater" to="." method="_on_input_eater_pressed"]
[connection signal="pressed" from="ShowtapeNewScreen/DialogPanel/AudioBrowseButton" to="." method="_on_showtape_new_audio_browse_button_pressed"]
[connection signal="pressed" from="ShowtapeNewScreen/DialogPanel/CancelButton" to="." method="_on_showtape_new_cancel_button_pressed"]

595
Scenes/GUI/MainMenu.tscn Normal file
View file

@ -0,0 +1,595 @@
[gd_scene load_steps=19 format=3 uid="uid://1ikkb4b8mw1w"]
[ext_resource type="Theme" uid="uid://dbgs4id7y5d1c" path="res://UI/Themes/EditorDark.tres" id="1_dkd36"]
[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://6mf6wucl3y6k" path="res://UI/MenuBG/BalconyBG.png" id="2_j6v32"]
[ext_resource type="Texture2D" uid="uid://dr6ir8mgbjrs7" path="res://UI/MenuBG/CStageBG.png" id="3_vaoig"]
[ext_resource type="Texture2D" uid="uid://dyyyg85g3jwip" path="res://UI/MenuBG/ProtoRoadBG.png" id="4_dkd36"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_dkd36"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ha2rd"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wdeli"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wyv1s"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_drn21"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_pcbci"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_he4sq"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_rsjs4"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_rj3vb"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_pocyv"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8uhic"]
[sub_resource type="LabelSettings" id="LabelSettings_dkd36"]
font_size = 48
[node name="MainMenu" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_dkd36")
script = ExtResource("1_ocgay")
[node name="PleaseRestart" type="AcceptDialog" parent="."]
auto_translate_mode = 1
initial_position = 2
dialog_text = "Please restart the game for any changes to apply."
[node name="Backgrounds" type="Control" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="BalconyBG" type="TextureRect" parent="Backgrounds"]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("2_j6v32")
expand_mode = 1
[node name="CStageBG" type="TextureRect" parent="Backgrounds"]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("3_vaoig")
expand_mode = 1
[node name="ProtoRoadBG" type="TextureRect" parent="Backgrounds"]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_dkd36")
expand_mode = 1
[node name="TextureRect" type="TextureRect" parent="."]
layout_mode = 0
offset_left = 64.0
offset_top = 64.0
offset_right = 576.0
offset_bottom = 160.0
texture = ExtResource("2_6d82g")
[node name="Buttons" type="Panel" parent="."]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 60.0
offset_top = -380.0
offset_right = 324.0
offset_bottom = -64.0
grow_vertical = 0
[node name="EditorButton" type="Button" parent="Buttons"]
layout_mode = 0
offset_left = 4.0
offset_top = 4.0
offset_right = 260.0
offset_bottom = 52.0
text = "Editor"
[node name="FreeRoamButton" type="Button" parent="Buttons"]
layout_mode = 0
offset_left = 4.0
offset_top = 56.0
offset_right = 260.0
offset_bottom = 104.0
text = "Free Roam
"
[node name="ModsButton" type="Button" parent="Buttons"]
layout_mode = 0
offset_left = 4.0
offset_top = 108.0
offset_right = 260.0
offset_bottom = 156.0
text = "Manage Mods"
[node name="ControlsButton" type="Button" parent="Buttons"]
layout_mode = 0
offset_left = 4.0
offset_top = 160.0
offset_right = 260.0
offset_bottom = 208.0
text = "Controls"
[node name="CreditsButton" type="Button" parent="Buttons"]
layout_mode = 0
offset_left = 4.0
offset_top = 212.0
offset_right = 260.0
offset_bottom = 260.0
text = "Credits"
[node name="ExitButton" type="Button" parent="Buttons"]
layout_mode = 0
offset_left = 4.0
offset_top = 264.0
offset_right = 260.0
offset_bottom = 312.0
text = "Exit to Desktop"
[node name="FreeRoamChooseScreen" 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
[node name="ColorRect" type="ColorRect" parent="FreeRoamChooseScreen"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.121569, 0.121569, 0.121569, 0.501961)
[node name="InputEater" type="Button" parent="FreeRoamChooseScreen"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/focus = SubResource("StyleBoxEmpty_dkd36")
theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_ha2rd")
theme_override_styles/disabled = SubResource("StyleBoxEmpty_wdeli")
theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_wyv1s")
theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_drn21")
theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_pcbci")
theme_override_styles/hover = SubResource("StyleBoxEmpty_he4sq")
theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_rsjs4")
theme_override_styles/pressed = SubResource("StyleBoxEmpty_rj3vb")
theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_pocyv")
theme_override_styles/normal = SubResource("StyleBoxEmpty_8uhic")
[node name="DialogPanel" type="Panel" parent="FreeRoamChooseScreen"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 64.0
offset_right = -64.0
offset_bottom = -64.0
grow_horizontal = 2
grow_vertical = 2
[node name="Label" type="Label" parent="FreeRoamChooseScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
offset_left = 8.0
offset_top = 8.0
offset_right = -8.0
offset_bottom = 112.0
grow_horizontal = 2
text = "Free Roam"
label_settings = SubResource("LabelSettings_dkd36")
horizontal_alignment = 1
vertical_alignment = 1
[node name="ModsScreen" 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
[node name="ColorRect" type="ColorRect" parent="ModsScreen"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.121569, 0.121569, 0.121569, 0.501961)
[node name="InputEater" type="Button" parent="ModsScreen"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/focus = SubResource("StyleBoxEmpty_dkd36")
theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_ha2rd")
theme_override_styles/disabled = SubResource("StyleBoxEmpty_wdeli")
theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_wyv1s")
theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_drn21")
theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_pcbci")
theme_override_styles/hover = SubResource("StyleBoxEmpty_he4sq")
theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_rsjs4")
theme_override_styles/pressed = SubResource("StyleBoxEmpty_rj3vb")
theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_pocyv")
theme_override_styles/normal = SubResource("StyleBoxEmpty_8uhic")
[node name="DialogPanel" type="Panel" parent="ModsScreen"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 64.0
offset_right = -64.0
offset_bottom = -64.0
grow_horizontal = 2
grow_vertical = 2
[node name="Label" type="Label" parent="ModsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
offset_left = 8.0
offset_top = 8.0
offset_right = -8.0
offset_bottom = 112.0
grow_horizontal = 2
text = "Mods"
label_settings = SubResource("LabelSettings_dkd36")
horizontal_alignment = 1
vertical_alignment = 1
[node name="ModList" type="ItemList" parent="ModsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
anchor_bottom = 0.5
offset_left = 8.0
offset_top = 128.0
offset_right = -8.0
grow_horizontal = 2
grow_vertical = 2
[node name="ModNameText" type="Label" parent="ModsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = 8.0
offset_top = 8.0
offset_bottom = 40.0
text = "Select a mod to view its information"
vertical_alignment = 1
clip_text = true
text_overrun_behavior = 3
[node name="ModAuthorText" type="Label" parent="ModsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 0.5
offset_left = 8.0
offset_top = 8.0
offset_right = -8.0
offset_bottom = 40.0
vertical_alignment = 1
clip_text = true
text_overrun_behavior = 3
[node name="ModVersionText" type="Label" parent="ModsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_top = 1.0
anchor_right = 0.25
anchor_bottom = 1.0
offset_left = 8.0
offset_top = -40.0
offset_bottom = -8.0
vertical_alignment = 1
clip_text = true
text_overrun_behavior = 3
[node name="ModDescriptionText" type="Label" parent="ModsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_top = 0.5
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 8.0
offset_top = 48.0
offset_right = -8.0
offset_bottom = -48.0
grow_horizontal = 2
grow_vertical = 2
autowrap_mode = 2
clip_text = true
text_overrun_behavior = 3
[node name="OpenFolderButton" type="Button" parent="ModsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -264.0
offset_top = -40.0
offset_right = -8.0
offset_bottom = -8.0
grow_horizontal = 0
grow_vertical = 0
text = "Open Mods Folder"
[node name="ControlsScreen" 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
[node name="ColorRect" type="ColorRect" parent="ControlsScreen"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.121569, 0.121569, 0.121569, 0.501961)
[node name="InputEater" type="Button" parent="ControlsScreen"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/focus = SubResource("StyleBoxEmpty_dkd36")
theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_ha2rd")
theme_override_styles/disabled = SubResource("StyleBoxEmpty_wdeli")
theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_wyv1s")
theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_drn21")
theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_pcbci")
theme_override_styles/hover = SubResource("StyleBoxEmpty_he4sq")
theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_rsjs4")
theme_override_styles/pressed = SubResource("StyleBoxEmpty_rj3vb")
theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_pocyv")
theme_override_styles/normal = SubResource("StyleBoxEmpty_8uhic")
[node name="DialogPanel" type="Panel" parent="ControlsScreen"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 64.0
offset_right = -64.0
offset_bottom = -64.0
grow_horizontal = 2
grow_vertical = 2
[node name="Label" type="Label" parent="ControlsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
offset_left = 8.0
offset_top = 8.0
offset_right = -8.0
offset_bottom = 112.0
grow_horizontal = 2
text = "Controls"
label_settings = SubResource("LabelSettings_dkd36")
horizontal_alignment = 1
vertical_alignment = 1
[node name="EditorLabel" type="Label" parent="ControlsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 8.0
offset_top = 128.0
offset_bottom = -8.0
grow_horizontal = 2
grow_vertical = 2
text = "Global:
Fullscreen: F11 or Alt+Enter
In Editor:
Fullscreen camera view: ESC
Play/Pause: Space
Play Reverse: Shift + Space
Fast Forward: Shift + Right Arrow
Fast Reverse: Shift + Left
Step Forward: Right Arrow
Step Backward: Left Arrow
Stop: Home
Change Camera Angle: Tab"
[node name="FreeRoamLabel" type="Label" parent="ControlsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 128.0
offset_right = -8.0
offset_bottom = -8.0
grow_horizontal = 2
grow_vertical = 2
text = "
In Free Roam:
Move: W, A, S, D
Jump: Space
Open Menu: ESC"
[node name="CreditsScreen" 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
[node name="ColorRect" type="ColorRect" parent="CreditsScreen"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.121569, 0.121569, 0.121569, 0.501961)
[node name="InputEater" type="Button" parent="CreditsScreen"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/focus = SubResource("StyleBoxEmpty_dkd36")
theme_override_styles/disabled_mirrored = SubResource("StyleBoxEmpty_ha2rd")
theme_override_styles/disabled = SubResource("StyleBoxEmpty_wdeli")
theme_override_styles/hover_pressed_mirrored = SubResource("StyleBoxEmpty_wyv1s")
theme_override_styles/hover_pressed = SubResource("StyleBoxEmpty_drn21")
theme_override_styles/hover_mirrored = SubResource("StyleBoxEmpty_pcbci")
theme_override_styles/hover = SubResource("StyleBoxEmpty_he4sq")
theme_override_styles/pressed_mirrored = SubResource("StyleBoxEmpty_rsjs4")
theme_override_styles/pressed = SubResource("StyleBoxEmpty_rj3vb")
theme_override_styles/normal_mirrored = SubResource("StyleBoxEmpty_pocyv")
theme_override_styles/normal = SubResource("StyleBoxEmpty_8uhic")
[node name="DialogPanel" type="Panel" parent="CreditsScreen"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = 64.0
offset_right = -64.0
offset_bottom = -64.0
grow_horizontal = 2
grow_vertical = 2
[node name="Label" type="Label" parent="CreditsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
offset_left = 8.0
offset_top = 8.0
offset_right = -8.0
offset_bottom = 112.0
grow_horizontal = 2
text = "Credits"
label_settings = SubResource("LabelSettings_dkd36")
horizontal_alignment = 1
vertical_alignment = 1
[node name="CreditsLabel" type="Label" parent="CreditsScreen/DialogPanel"]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 8.0
offset_top = 128.0
offset_right = -8.0
offset_bottom = -8.0
grow_horizontal = 2
grow_vertical = 2
text = "Pneumatic Plaything Animatronic Simulator
Project Oversight: Persephone (KawaiiZenbo)
Interface Design: Persephone
Simulator Backend: Persephone
3-Stage Bot Models: Persephone
Cyberamic Bot Models: Persephone
C-Stage Model: Persephone
Cyberamic Iris Textures: Avery
Chuck E's Corner Stage: Luigigamin212
Balcony Stage Model: ToastHQ
This project is not associated with CEC Entertainment LLC.
or Creative Engineering Inc."
horizontal_alignment = 1
[node name="VersionLabel" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -264.0
offset_top = -40.0
offset_right = -8.0
offset_bottom = -8.0
grow_horizontal = 0
grow_vertical = 0
text = "Pneumatic Plaything vX.X"
horizontal_alignment = 2
vertical_alignment = 1
[connection signal="pressed" from="Buttons/EditorButton" to="." method="_on_button_pressed"]
[connection signal="pressed" from="Buttons/FreeRoamButton" to="." method="_on_free_roam_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"]
[connection signal="pressed" from="Buttons/ExitButton" to="." method="_on_exit_button_pressed"]
[connection signal="pressed" from="FreeRoamChooseScreen/InputEater" to="." method="_on_input_eater_pressed"]
[connection signal="pressed" from="ModsScreen/InputEater" to="." method="_on_input_eater_pressed"]
[connection signal="item_selected" from="ModsScreen/DialogPanel/ModList" to="." method="_on_mod_list_item_selected"]
[connection signal="pressed" from="ModsScreen/DialogPanel/OpenFolderButton" to="." method="_on_open_folder_button_pressed"]
[connection signal="pressed" from="ControlsScreen/InputEater" to="." method="_on_input_eater_pressed"]
[connection signal="pressed" from="CreditsScreen/InputEater" to="." method="_on_input_eater_pressed"]

View file

@ -35,6 +35,7 @@ transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
[node name="Angle 1" type="Camera3D" parent="."]
transform = Transform3D(-1, 1.31602e-08, -1.50421e-07, 0, 0.996195, 0.0871557, 1.50996e-07, 0.0871557, -0.996195, 0, 1.5, -3)
current = true
fov = 60.0
[node name="Angle 2" type="Camera3D" parent="."]

View file

@ -374,3 +374,14 @@ var Cyber3Stage = {
],
"cosmetic_defaults": [ 4, 4, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 3 ]
}
var stages_info = {
"Helen House": HelenHouse,
"Chuck E's Corner": ChuckEsCorner,
"Balcony Stage": BalconyStage,
"C-Stage": CStage,
"Prototype Road Stage": ProtoRoadStage,
"Cyberamic 3-Stage": Cyber3Stage,
}
var loaded_mods = { }

View file

@ -7,22 +7,12 @@ var playback_rate : int = 1
var transport_enabled : bool = false
var erase_validated : bool = false
var cam_index : int = 0
var fullscreen : bool = false
var showtape_loaded : bool = false
var show_name : String
var current_stage : String
var stages_info = {
"Helen House": Stages.HelenHouse,
"Chuck E's Corner": Stages.ChuckEsCorner,
"Balcony Stage": Stages.BalconyStage,
"C-Stage": Stages.CStage,
"Prototype Road Stage": Stages.ProtoRoadStage,
"Cyber 3-Stage": Stages.Cyber3Stage
}
signal step(amount: int)
signal start_recording()
signal end_recording()
@ -47,14 +37,14 @@ func reload_stage() -> void:
if ($SubViewport.get_child_count() > 0):
$SubViewport.get_child(0).queue_free()
cam_index = 0
var stage = load(stages_info[current_stage]["scene"]).instantiate()
var stage = load(Stages.stages_info[current_stage]["scene"]).instantiate()
$SubViewport.add_child(stage)
var cam_offset = 4
for i in range(1, stages_info[current_stage]["camera_count"]+1):
for i in range(1, Stages.stages_info[current_stage]["camera_count"]+1):
var camera_button = load("res://Scenes/GUI/Controls/CameraButton.tscn").instantiate()
camera_button.camera = "Angle " + str(i)
camera_button.base_scene_path = "../../../" + stages_info[current_stage]["scene_ref_base"]
camera_button.base_scene_path = "../../../" + Stages.stages_info[current_stage]["scene_ref_base"]
camera_button.position.y = cam_offset
cam_offset += 36
$FlyoutPanel/Camera.add_child(camera_button)
@ -62,13 +52,13 @@ func reload_stage() -> void:
var cosmetics_offset = 0
var cosmetics_count = 0
for cosmetic_subtable in stages_info[current_stage]["cosmetics"]:
for cosmetic_subtable in Stages.stages_info[current_stage]["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_info[current_stage]["scene_ref_base"]
cosmetic_adjustment.drop_index = stages_info[current_stage]["cosmetic_defaults"][cosmetics_count]
cosmetic_adjustment.scene_handle = "../../../../../" + Stages.stages_info[current_stage]["scene_ref_base"]
cosmetic_adjustment.drop_index = Stages.stages_info[current_stage]["cosmetic_defaults"][cosmetics_count]
cosmetic_adjustment.position.y = cosmetics_offset
cosmetics_offset += 44
cosmetics_count += 1
@ -78,12 +68,12 @@ func reload_stage() -> void:
var rows_offset = 0
var flows_offset = 0
var flow_count = 0
for bit_number in stages_info[current_stage]["bit_mapping"]:
var bot = stages_info[current_stage]["bit_mapping"][bit_number]["bot"]
var movement = stages_info[current_stage]["bit_mapping"][bit_number]["movement"]
for bit_number in Stages.stages_info[current_stage]["bit_mapping"]:
var bot = Stages.stages_info[current_stage]["bit_mapping"][bit_number]["bot"]
var movement = Stages.stages_info[current_stage]["bit_mapping"][bit_number]["movement"]
var in_flow = stages_info[current_stage]["bit_mapping"][bit_number]["flow_in"]
var out_flow = stages_info[current_stage]["bit_mapping"][bit_number]["flow_out"]
var in_flow = Stages.stages_info[current_stage]["bit_mapping"][bit_number]["flow_in"]
var out_flow = Stages.stages_info[current_stage]["bit_mapping"][bit_number]["flow_out"]
if (in_flow is not String):
var flow_control = load("res://Scenes/GUI/Controls/FlowControl.tscn").instantiate()
flow_control.position.y = flows_offset
@ -98,7 +88,7 @@ func reload_stage() -> void:
var row = load("res://Scenes/GUI/Controls/MovementRow.tscn").instantiate()
row.name = str(bit_number) + " Bit"
row.position.y = rows_offset
row.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"]
row.base_scene_path = "../../../../../" + Stages.stages_info[current_stage]["scene_ref_base"]
row.animatronic = bot
row.current_stage = current_stage
if (in_flow is String): row.flow_path = "None"
@ -108,7 +98,7 @@ func reload_stage() -> void:
var movement_button = load("res://Scenes/GUI/Controls/MovementButton.tscn").instantiate()
movement_button.position.y = rows_offset
movement_button.base_scene_path = "../../../../../" + stages_info[current_stage]["scene_ref_base"]
movement_button.base_scene_path = "../../../../../" + Stages.stages_info[current_stage]["scene_ref_base"]
movement_button.animatronic = bot
movement_button.movement_bit = bit_number
movement_button.current_stage = current_stage
@ -116,8 +106,8 @@ func reload_stage() -> void:
movement_button.movement_name = movement
$FlyoutPanel/Movements/InvisibleMask/MovementHandle.add_child(movement_button)
rows_offset += 44
$SequencerPanel/TimelinePanel/VScrollBar.max_value = stages_info[current_stage]["bits"] - 1
$FlyoutPanel/Movements/VScrollBar.max_value = stages_info[current_stage]["bits"] - 1
$SequencerPanel/TimelinePanel/VScrollBar.max_value = Stages.stages_info[current_stage]["bits"] - 1
$FlyoutPanel/Movements/VScrollBar.max_value = Stages.stages_info[current_stage]["bits"] - 1
$FlyoutPanel/FlowControls/VScrollBar.max_value = flow_count - 1
$CameraPreview.visible = true
@ -149,7 +139,9 @@ func _ready() -> void:
get_tree().get_root().size_changed.connect(_on_size_changed)
erase_all.connect(_erase_all)
$MenuBar/MenuButton.get_popup().id_pressed.connect(_showtape_menu_button_pressed)
OS.request_permissions()
for mod in Stages.loaded_mods:
for moddedStage in Stages.loaded_mods[mod]["implements_stages"]:
$MenuBar/StageSelector.add_item(moddedStage)
current_stage = $MenuBar/StageSelector.get_item_text($MenuBar/StageSelector.selected)
reload_stage()
@ -170,6 +162,12 @@ func _showtape_menu_button_pressed(id: int) -> void:
2: #save
if (showtape_loaded): $ShowtapeSaveScreen.visible = true
else: $NoShowtapeLoadedDialog.show()
3: # exit menu
if (showtape_loaded): $ExitMenuOverwriteConfirmationDialog.show()
else: get_tree().change_scene_to_file("res://Scenes/GUI/MainMenu.tscn")
4: # exit desktop
if (showtape_loaded): $ExitDesktopOverwriteConfirmationDialog.show()
else: get_tree().quit()
func _on_showtape_new_audio_browse_button_pressed() -> void:
@ -224,8 +222,8 @@ func _on_showtape_load_open_button_pressed() -> void:
$IncorrectShowtapeDialog.dialog_text = "This showtape is not the correct version!"
$IncorrectShowtapeDialog.show()
return
if (header[3] != stages_info[current_stage]["ust_type"]):
$IncorrectShowtapeDialog.dialog_text = "This showtape is not compatible with the currently selected stage.\nShowtape stage type: %s\n Current stage type: %s" % [ header[3], stages_info[current_stage]["ust_type"] ]
if (header[3] != Stages.stages_info[current_stage]["ust_type"]):
$IncorrectShowtapeDialog.dialog_text = "This showtape is not compatible with the currently selected stage.\nShowtape stage type: %s\n Current stage type: %s" % [ header[3], Stages.stages_info[current_stage]["ust_type"] ]
$IncorrectShowtapeDialog.show()
return
show_name = header[2]
@ -249,7 +247,7 @@ func _on_showtape_save_create_button_pressed() -> void:
if ($ShowtapeSaveScreen/DialogPanel/OutFilePath.text == ""):
$NoFileSpecified.show()
return
var header = "UST,2,"+show_name.replace(",", "_").replace(";", "_")+","+stages_info[current_stage]["ust_type"]+";"
var header = "UST,2,"+show_name.replace(",", "_").replace(";", "_")+","+Stages.stages_info[current_stage]["ust_type"]+";"
var data_out_string = save_data()
var file = FileAccess.open($ShowtapeSaveScreen/DialogPanel/OutFilePath.text, FileAccess.WRITE)
file.store_string(header+data_out_string+";"+Marshalls.raw_to_base64($AudioStreamPlayer.stream.data))
@ -265,34 +263,32 @@ func _on_save_showtape_file_dialog_file_selected(path: String) -> void:
$ShowtapeSaveScreen/DialogPanel/OutFilePath.text = path
func _input(event: InputEvent) -> void:
if event.is_action_pressed("toggle_editor_screen"):
if event.is_action_pressed("editor_toggle_full_camera"):
$CameraPreview.visible = !$CameraPreview.visible;
$CameraFullScreen.visible = !$CameraFullScreen.visible;
if event.is_action_pressed("fullscreen"):
if (!fullscreen):
fullscreen = true
if (!DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_FULLSCREEN):
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
else:
fullscreen = false
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
if (event.is_action_pressed("cycle_camera_angle")):
if (event.is_action_pressed("editor_cycle_camera_angle")):
cam_index += 1
get_node(stages_info[current_stage]["scene_ref_base"] + "Angle " + str((cam_index % stages_info[current_stage]["camera_count"])+1)).current = true
get_node(Stages.stages_info[current_stage]["scene_ref_base"] + "Angle " + str((cam_index % Stages.stages_info[current_stage]["camera_count"])+1)).current = true
if (transport_enabled):
if event.is_action_pressed("sequencer_play_pause"):
if event.is_action_pressed("editor_sequencer_play_pause"):
if (playing): _on_pause_button_pressed()
else: _on_play_button_pressed()
elif event.is_action_pressed("sequencer_play_reverse"):
elif event.is_action_pressed("editor_sequencer_play_reverse"):
_on_play_backwards_button_pressed()
elif event.is_action_pressed("sequencer_fast_reverse"):
elif event.is_action_pressed("editor_sequencer_fast_reverse"):
_on_fast_backwards_button_pressed()
elif event.is_action_pressed("sequencer_fast_forward"):
elif event.is_action_pressed("editor_sequencer_fast_forward"):
_on_fast_forward_button_pressed()
elif event.is_action_pressed("sequencer_step_backward"):
elif event.is_action_pressed("editor_sequencer_step_backward"):
_on_step_backwards_button_pressed()
elif event.is_action_pressed("sequencer_step_forward"):
elif event.is_action_pressed("editor_sequencer_step_forward"):
_on_step_forward_button_pressed()
elif event.is_action_pressed("sequencer_home"):
elif event.is_action_pressed("editor_sequencer_home"):
_on_stop_button_pressed()
func _physics_process(_delta: float) -> void:
@ -334,8 +330,6 @@ func _on_credits_button_pressed() -> void:
$CreditsScreen.visible = true
func _on_input_eater_pressed() -> void:
$ControlsScreen.visible = false
$CreditsScreen.visible = false
$ShowtapeNewScreen.visible = false
$ShowtapeLoadScreen.visible = false
$ShowtapeSaveScreen.visible = false
@ -470,7 +464,7 @@ func plot_data(data: String):
if (frame_string == ""): continue
var check_frame_split = frame_string.split()
check_frame_split.reverse()
for i in stages_info[current_stage]["bit_mapping"]:
for i in Stages.stages_info[current_stage]["bit_mapping"]:
var er = false
if ((check_frame_split[(i - 1) / 4].hex_to_int() & int(pow(2, ((i - 1) % 4)))) == int(pow(2, ((i - 1) % 4)))):
er = true
@ -496,3 +490,15 @@ func index_s_get_safe(cindex: int, data: Dictionary) -> Array[bool]:
var out = data.get(cindex)
if (out == null): return [ false ]
return out
func _on_exit_menu_overwrite_confirmation_dialog_confirmed() -> void:
get_tree().change_scene_to_file("res://Scenes/GUI/MainMenu.tscn")
func _on_exit_desktop_overwrite_confirmation_dialog_2_confirmed() -> void:
get_tree().quit()
func _on_instructions_label_pressed() -> void:
$InstructionsLabel.visible = false

80
Scripts/MainMenu.gd Normal file
View file

@ -0,0 +1,80 @@
extends Control
func _ready():
OS.request_permissions()
randomize()
$VersionLabel.text = "Pneumatic Plaything v%s" % ProjectSettings.get_setting("application/config/version")
$Backgrounds.get_child(randi() % $Backgrounds.get_child_count()).visible = true
var moddir = DirAccess.open("user://Mods")
if moddir == null:
print("Mod folder was not found. Creating.")
var temp = DirAccess.open("user://")
temp.make_dir("Mods")
moddir = DirAccess.open("user://Mods")
moddir.list_dir_begin()
for file: String in moddir.get_files():
if (!file.ends_with(".pck")): return
ProjectSettings.load_resource_pack("user://Mods/%s" % file, false)
var dir = DirAccess.open("res://LoadedModContent/ModManifest")
if dir == null:
print("No mods were found.")
return
dir.list_dir_begin()
var tempLoadedList = []
for file: String in dir.get_files():
var modManifest = load(dir.get_current_dir() + "/" + file.trim_suffix(".remap")).new()
if (Stages.loaded_mods.get(modManifest.ModInfo["mod_name"]) != null):
if (tempLoadedList.find(modManifest.ModInfo["mod_name"]) == -1):
$ModsScreen/DialogPanel/ModList.add_item(modManifest.ModInfo["mod_name"], null, true)
return
Stages.loaded_mods[modManifest.ModInfo["mod_name"]] = modManifest.ModInfo
for stage in modManifest.ModInfo["implements_stages"]:
Stages.stages_info[stage] = modManifest.ModInfo["implements_stages"][stage]
$ModsScreen/DialogPanel/ModList.add_item(modManifest.ModInfo["mod_name"], null, true)
tempLoadedList.append(modManifest.ModInfo["mod_name"])
print("Loaded Mod \"%s\"" % modManifest.ModInfo["mod_name"])
func _on_button_pressed() -> void:
get_tree().change_scene_to_file("res://Scenes/GUI/EditorScreen.tscn")
func _on_exit_button_pressed() -> void:
get_tree().quit()
func _on_credits_button_pressed() -> void:
$CreditsScreen.visible = true
func _on_controls_button_pressed() -> void:
$ControlsScreen.visible = true
func _on_free_roam_button_pressed() -> void:
$FreeRoamChooseScreen.visible = true
func _on_mods_button_pressed() -> void:
$ModsScreen.visible = true
func _on_input_eater_pressed() -> void:
$CreditsScreen.visible = false
$ControlsScreen.visible = false
$FreeRoamChooseScreen.visible = false
$ModsScreen.visible = false
func _input(event: InputEvent) -> void:
if event.is_action_pressed("fullscreen"):
if (!DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_FULLSCREEN):
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
else:
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
func _on_mod_list_item_selected(index: int) -> void:
var itext = $ModsScreen/DialogPanel/ModList.get_item_text(index)
$ModsScreen/DialogPanel/ModNameText.text = Stages.loaded_mods[itext]["mod_name"]
$ModsScreen/DialogPanel/ModAuthorText.text = "by %s" % Stages.loaded_mods[itext]["mod_creator"]
$ModsScreen/DialogPanel/ModVersionText.text = "Mod version %s" % Stages.loaded_mods[itext]["mod_version"]
$ModsScreen/DialogPanel/ModDescriptionText.text = Stages.loaded_mods[itext]["mod_description"]
func _on_open_folder_button_pressed() -> void:
OS.shell_open(ProjectSettings.globalize_path("user://Mods"))
$PleaseRestart.show()

1
Scripts/MainMenu.gd.uid Normal file
View file

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

View file

@ -17,6 +17,11 @@
- 1-Stage
- Turntable 1-Stage
- Cyberamic 3-Stage
- 3-Stage
- CU 1-Stage
- Great Transformation (as a mod)
## Planned
@ -28,8 +33,6 @@
### 3-Stage
- 3-Stage
- CU 1-Stage
- Hollywood 3-Stage

BIN
UI/MenuBG/BalconyBG.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://6mf6wucl3y6k"
path="res://.godot/imported/BalconyBG.png-77fc3cb12985ad4aa4c7a07719c902d3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/MenuBG/BalconyBG.png"
dest_files=["res://.godot/imported/BalconyBG.png-77fc3cb12985ad4aa4c7a07719c902d3.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
UI/MenuBG/CStageBG.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dr6ir8mgbjrs7"
path="res://.godot/imported/CStageBG.png-e353155e38aa74a5eeb8ad8bbf0ca97f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/MenuBG/CStageBG.png"
dest_files=["res://.godot/imported/CStageBG.png-e353155e38aa74a5eeb8ad8bbf0ca97f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
UI/MenuBG/ProtoRoadBG.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dyyyg85g3jwip"
path="res://.godot/imported/ProtoRoadBG.png-14030153324591d805d6a4c6283133d9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/MenuBG/ProtoRoadBG.png"
dest_files=["res://.godot/imported/ProtoRoadBG.png-14030153324591d805d6a4c6283133d9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

Before

Width:  |  Height:  |  Size: 362 B

After

Width:  |  Height:  |  Size: 362 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dhx2v2fd0egxd"
path="res://.godot/imported/FastBackwards.png-f55ba91d8d237cb6919d5f2a056db594.ctex"
path="res://.godot/imported/FastBackwards.png-baafc41184f250c6fa4ffe3e374078aa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/FastBackwards.png"
dest_files=["res://.godot/imported/FastBackwards.png-f55ba91d8d237cb6919d5f2a056db594.ctex"]
source_file="res://UI/TransportControls/FastBackwards.png"
dest_files=["res://.godot/imported/FastBackwards.png-baafc41184f250c6fa4ffe3e374078aa.ctex"]
[params]

View file

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 337 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dsr03w7r667fw"
path="res://.godot/imported/FastForward.png-acbfeb2710bea5385ca8ad13fa6699e8.ctex"
path="res://.godot/imported/FastForward.png-fb55633376434284021e6fcb868d095e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/FastForward.png"
dest_files=["res://.godot/imported/FastForward.png-acbfeb2710bea5385ca8ad13fa6699e8.ctex"]
source_file="res://UI/TransportControls/FastForward.png"
dest_files=["res://.godot/imported/FastForward.png-fb55633376434284021e6fcb868d095e.ctex"]
[params]

View file

Before

Width:  |  Height:  |  Size: 138 B

After

Width:  |  Height:  |  Size: 138 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bwhgy4u37jmo1"
path="res://.godot/imported/Pause.png-90c47ed988bd7d26b746eb81a6aaeedf.ctex"
path="res://.godot/imported/Pause.png-6e00544a0fac9a91b2c20976bb7ce799.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/Pause.png"
dest_files=["res://.godot/imported/Pause.png-90c47ed988bd7d26b746eb81a6aaeedf.ctex"]
source_file="res://UI/TransportControls/Pause.png"
dest_files=["res://.godot/imported/Pause.png-6e00544a0fac9a91b2c20976bb7ce799.ctex"]
[params]

View file

Before

Width:  |  Height:  |  Size: 346 B

After

Width:  |  Height:  |  Size: 346 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://xllpr3qc064c"
path="res://.godot/imported/Play.png-eec0d54380d32c59b84e7db5fa226d5e.ctex"
path="res://.godot/imported/Play.png-afe759610dc1045a62cd8cc2e725ba25.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/Play.png"
dest_files=["res://.godot/imported/Play.png-eec0d54380d32c59b84e7db5fa226d5e.ctex"]
source_file="res://UI/TransportControls/Play.png"
dest_files=["res://.godot/imported/Play.png-afe759610dc1045a62cd8cc2e725ba25.ctex"]
[params]

View file

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 353 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dgacnkv2dc65s"
path="res://.godot/imported/PlayBackwards.png-52f3d5b871717feab369f20308dd695c.ctex"
path="res://.godot/imported/PlayBackwards.png-fa19f96c52d7ee8953d0dc88bd9de225.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/PlayBackwards.png"
dest_files=["res://.godot/imported/PlayBackwards.png-52f3d5b871717feab369f20308dd695c.ctex"]
source_file="res://UI/TransportControls/PlayBackwards.png"
dest_files=["res://.godot/imported/PlayBackwards.png-fa19f96c52d7ee8953d0dc88bd9de225.ctex"]
[params]

View file

Before

Width:  |  Height:  |  Size: 411 B

After

Width:  |  Height:  |  Size: 411 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ckg2ihy105ttj"
path="res://.godot/imported/Record.png-52d5a1455899304e32054af5c940c434.ctex"
path="res://.godot/imported/Record.png-feac6691f8b44c91b371c385fd49720a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/Record.png"
dest_files=["res://.godot/imported/Record.png-52d5a1455899304e32054af5c940c434.ctex"]
source_file="res://UI/TransportControls/Record.png"
dest_files=["res://.godot/imported/Record.png-feac6691f8b44c91b371c385fd49720a.ctex"]
[params]

View file

Before

Width:  |  Height:  |  Size: 352 B

After

Width:  |  Height:  |  Size: 352 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dts4eh6hyt8p3"
path="res://.godot/imported/SkipBackwards.png-dfebc48054bc60d9671fc8d69c696237.ctex"
path="res://.godot/imported/SkipBackwards.png-07ed2723ebfa991c5eb7dd5b04bbdcc5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/SkipBackwards.png"
dest_files=["res://.godot/imported/SkipBackwards.png-dfebc48054bc60d9671fc8d69c696237.ctex"]
source_file="res://UI/TransportControls/SkipBackwards.png"
dest_files=["res://.godot/imported/SkipBackwards.png-07ed2723ebfa991c5eb7dd5b04bbdcc5.ctex"]
[params]

View file

Before

Width:  |  Height:  |  Size: 331 B

After

Width:  |  Height:  |  Size: 331 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bphwtliq2ahus"
path="res://.godot/imported/SkipForward.png-ca36b20fa5c982368f6b620245865f56.ctex"
path="res://.godot/imported/SkipForward.png-d4be5716d356f8b0d5ac15243372a7e3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/SkipForward.png"
dest_files=["res://.godot/imported/SkipForward.png-ca36b20fa5c982368f6b620245865f56.ctex"]
source_file="res://UI/TransportControls/SkipForward.png"
dest_files=["res://.godot/imported/SkipForward.png-d4be5716d356f8b0d5ac15243372a7e3.ctex"]
[params]

View file

Before

Width:  |  Height:  |  Size: 138 B

After

Width:  |  Height:  |  Size: 138 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://d007317123e27"
path="res://.godot/imported/SmallLock.png-0c9e5ce04a7421f0922124b2fb1d8696.ctex"
path="res://.godot/imported/SmallLock.png-c01b2981fa753e94bcf44ea7af0f5dc4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/SmallLock.png"
dest_files=["res://.godot/imported/SmallLock.png-0c9e5ce04a7421f0922124b2fb1d8696.ctex"]
source_file="res://UI/TransportControls/SmallLock.png"
dest_files=["res://.godot/imported/SmallLock.png-c01b2981fa753e94bcf44ea7af0f5dc4.ctex"]
[params]

View file

Before

Width:  |  Height:  |  Size: 164 B

After

Width:  |  Height:  |  Size: 164 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cn5xdrxdv622h"
path="res://.godot/imported/SmallX.png-fca237bd1b13d37241a1ac9e982c446b.ctex"
path="res://.godot/imported/SmallX.png-3e04f0094c67e8b6434dfe5dacc07c39.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/SmallX.png"
dest_files=["res://.godot/imported/SmallX.png-fca237bd1b13d37241a1ac9e982c446b.ctex"]
source_file="res://UI/TransportControls/SmallX.png"
dest_files=["res://.godot/imported/SmallX.png-3e04f0094c67e8b6434dfe5dacc07c39.ctex"]
[params]

View file

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 132 B

Before After
Before After

View file

@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cttgtbu1xllwq"
path="res://.godot/imported/Stop.png-28cf49bd72d354d073c38f19027d6ddb.ctex"
path="res://.godot/imported/Stop.png-fb014661ae7c7c34a81ed967c5cf7ad4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/Stop.png"
dest_files=["res://.godot/imported/Stop.png-28cf49bd72d354d073c38f19027d6ddb.ctex"]
source_file="res://UI/TransportControls/Stop.png"
dest_files=["res://.godot/imported/Stop.png-fb014661ae7c7c34a81ed967c5cf7ad4.ctex"]
[params]

BIN
UI/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

34
UI/logo.png.import Normal file
View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dbh0vh85wks2l"
path="res://.godot/imported/logo.png-51af639b546fa143c715ebb74d0509d5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/logo.png"
dest_files=["res://.godot/imported/logo.png-51af639b546fa143c715ebb74d0509d5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
UI/logo_prototype.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dg456qc8q7g41"
path="res://.godot/imported/logo_prototype.png-b48e68e1e5cc609b09dc1f21c0861d46.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://UI/logo_prototype.png"
dest_files=["res://.godot/imported/logo_prototype.png-b48e68e1e5cc609b09dc1f21c0861d46.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View file

@ -12,8 +12,8 @@ config_version=5
config/name="Pneumatic Plaything"
config/description="Animatronic Simulator"
config/version="v0.6.1"
run/main_scene="uid://oiehbor0dlqx"
config/version="1.0"
run/main_scene="uid://1ikkb4b8mw1w"
config/features=PackedStringArray("4.4", "GL Compatibility")
boot_splash/show_image=false
config/icon="uid://den5alc77qk1s"
@ -338,55 +338,55 @@ ui_swap_input_direction={
"deadzone": 0.5,
"events": []
}
toggle_editor_screen={
editor_toggle_full_camera={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null)
]
}
sequencer_play_pause={
editor_sequencer_play_pause={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null)
]
}
sequencer_play_reverse={
editor_sequencer_play_reverse={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null)
]
}
sequencer_fast_forward={
editor_sequencer_fast_forward={
"deadzone": 0.2,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":5,"axis_value":1.0,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
sequencer_fast_reverse={
editor_sequencer_fast_reverse={
"deadzone": 0.2,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":4,"axis_value":1.0,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":true,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
sequencer_step_forward={
editor_sequencer_step_forward={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null)
]
}
sequencer_step_backward={
editor_sequencer_step_backward={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null)
]
}
cycle_camera_angle={
editor_cycle_camera_angle={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":false,"script":null)
]
}
sequencer_home={
editor_sequencer_home={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194317,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":false,"script":null)
@ -401,8 +401,9 @@ fullscreen={
[rendering]
renderer/rendering_method="gl_compatibility"
renderer/rendering_method.mobile="gl_compatibility"
textures/vram_compression/import_etc2_astc=true
anti_aliasing/quality/msaa_3d=1
limits/opengl/max_renderable_lights=128
limits/opengl/max_lights_per_object=128
anti_aliasing/quality/screen_space_aa=1
anti_aliasing/quality/use_debanding=true