diff --git a/src/base-environments/youth_room/fairylights.tscn b/src/base-environments/youth_room/fairylights.tscn index c87f2e5..8def46f 100644 --- a/src/base-environments/youth_room/fairylights.tscn +++ b/src/base-environments/youth_room/fairylights.tscn @@ -17,7 +17,7 @@ extends Node3D @onready var wires:LineRenderer3D = $wires @onready var diodes:MultiMeshInstance3D = $diodes -@export var seed:int = 42 +@export var rng_seed:int = 42 var rng = RandomNumberGenerator.new() @export var size:float = 0.1: set(new_size): @@ -32,14 +32,13 @@ func _ready(): rebuild() func rebuild(): - rng.seed = seed + rng.seed = rng_seed rng.state = 0 for child in wires.get_children(): child.free() wires.points = light_array diodes.multimesh.instance_count = light_array.size() var meshBuffer:PackedFloat32Array for point in light_array: - rng var base:Basis = Basis(Vector3(rng.randf_range(-1, 1), rng.randf_range(-1, 1), rng.randf_range(-1, 1)).normalized(), rng.randf_range(0, PI*2)) base = base.scaled(Vector3(size, size, size)) meshBuffer.append_array([base.x.x, base.x.y, base.x.z, point.x, base.y.x, base.y.y, base.y.z, point.y, base.z.x, base.z.y, base.z.z, point.z]) @@ -56,13 +55,13 @@ albedo_texture = ExtResource("1_xsr58") normal_enabled = true normal_texture = ExtResource("1_p3lcj") -[sub_resource type="ImmediateMesh" id="ImmediateMesh_lq63p"] +[sub_resource type="ImmediateMesh" id="ImmediateMesh_30v5y"] [sub_resource type="MultiMesh" id="MultiMesh_ic3h7"] transform_format = 1 -instance_count = 2 +instance_count = 30 mesh = ExtResource("4_qh8yy") -buffer = PackedFloat32Array(0.0998169, 0.00482103, -0.00365424, 0, -0.00428558, 0.0989875, 0.0135316, 0, 0.0042696, -0.0133502, 0.0990128, 0, 0.0700075, -0.0358849, 0.0617351, 0, 0.0525334, 0.0844406, -0.0104897, 1, -0.0483653, 0.0397751, 0.0779663, 0) +buffer = PackedFloat32Array(0.0998169, 0.00482103, -0.00365424, -0.545, -0.00428558, 0.0989875, 0.0135316, 0.915, 0.0042696, -0.0133502, 0.0990128, 1.035, 0.0700075, -0.0358849, 0.0617351, -0.47, 0.0525334, 0.0844406, -0.0104897, 0.855, -0.0483653, 0.0397751, 0.0779663, 0.905, 0.0042587, 0.0920312, -0.0388859, -0.44, -0.00571533, 0.0390819, 0.0918692, 0.871, 0.0997457, -0.00168997, 0.00692427, 0.78, 0.0219999, -0.0870806, -0.0439656, -0.385, 0.0800974, 0.041851, -0.0428124, 0.91, 0.0556813, -0.0257966, 0.0789565, 0.69, 0.0923335, 0.0288341, -0.0253597, -0.38, -0.0359662, 0.088075, -0.0308096, 0.995, 0.0134518, 0.0375685, 0.0916933, 0.595, 0.0410372, 0.0236122, 0.0880819, -0.39, -0.0818364, -0.0330796, 0.0469951, 0.925, 0.0402337, -0.0913685, 0.00574842, 0.465, 0.0963897, 0.0249758, -0.00923199, -0.364, -0.025153, 0.0967818, -0.000788714, 0.86, 0.0087379, 0.00308236, 0.0995698, 0.211, 0.0905162, -0.0353528, 0.0236008, -0.295, 0.00980512, 0.0713907, 0.0693341, 0.82, -0.0413604, -0.0604445, 0.0680866, 0.06, 0.0999699, -0.000440024, 0.00241425, -0.255, 0.00037743, 0.0999657, 0.0025912, 0.805, -0.00242483, -0.00258131, 0.0999373, -0.15, 0.0666952, -0.0744692, 0.00246829, -0.175, 0.0669796, 0.0613729, 0.0417982, 0.83, -0.0326417, -0.0262242, 0.090812, -0.355, 0.00827521, 0.0528018, -0.0845191, -0.135, 0.0951837, -0.0293119, -0.00899272, 0.955, -0.0295225, -0.0797043, -0.0526844, -0.515, 0.0983988, -0.0102168, 0.0146044, -0.025, 0.00642553, 0.0967642, 0.0244007, 0.78, -0.0166249, -0.0230716, 0.0958714, -0.615, -0.0341773, -0.0716575, -0.0608039, 0.115, 0.0144934, 0.059907, -0.078747, 0.63, 0.0928539, -0.0357262, -0.010089, -0.695, -0.0232891, -0.0711249, 0.066324, 0.245, 0.0795472, -0.0531651, -0.0290812, 0.555, 0.0559451, 0.0459861, 0.0689595, -0.745, -0.0599926, -0.0254553, -0.075848, 0.37, -0.0708402, 0.0609612, 0.0355725, 0.595, 0.0371828, 0.0750717, -0.0546048, -0.805, 0.0107775, 0.0912119, 0.0395505, 0.455, 0.0273445, -0.0409675, 0.0870284, 0.745, 0.0955831, 0.00143545, -0.0293567, -0.84, 0.0745873, 0.00700857, -0.0662391, 0.505, -0.0366242, 0.0873785, -0.0319947, 0.89, 0.0556363, 0.0481236, 0.0677401, -0.87, -0.0524777, -0.0408163, -0.0747002, 0.445, -0.0771795, -0.0142038, 0.0619805, 1.175, -0.0359084, 0.0901791, -0.024048, -0.87, 0.0652616, -0.0746751, 0.0128275, 0.26, -0.071962, -0.0663868, -0.0203536, 1.28, 0.0237149, 0.00405218, -0.0970628, -0.815, 0.0477617, -0.0860534, 0.0177096, 0.125, -0.0450234, -0.00666441, 0.089042, 1.35, -0.0754435, -0.0505014, -0.0419272, -0.8, 0.0526553, -0.07791, -0.0340215, -0.037, -0.0570784, -0.00274075, -0.0820643, 1.479, 0.0630038, 0.0626301, -0.0459129, -0.834, 0.0726285, 0.053708, 0.0429017, -0.2, -0.0349996, 0.0826095, -0.0441667, 1.601, -0.0591619, 0.0170622, 0.0787956, -0.851, 0.0581542, 0.0297762, -0.0757065, -0.359, -0.0464154, 0.0885717, -0.000817926, 1.769, 0.0668109, 0.0356151, 0.0653289, -0.85, 0.0875991, -0.0425381, 0.0227357, -0.5, 0.0336438, 0.0876653, 0.0343932, 1.949, -0.0345616, -0.022479, 0.0911054, -0.85, 0.0946831, -0.0299322, -0.0117972, -0.594, 0.0199689, 0.0259233, 0.0944946, 2.126, -0.0252261, -0.0918261, 0.0305222, -0.85, 0.0626413, -0.0766232, 0.0143161, -0.634, 0.0779479, 0.0616799, -0.0109416, 2.238, -0.000446323, 0.0180131, 0.0983633, -0.85, 0.0510754, -0.0397606, 0.076226, -0.634, -0.0155809, 0.0829139, 0.0536891, 2.035, -0.084549, -0.0392986, 0.0361536, -0.85, -0.055891, -0.072196, -0.0407913, -0.614, -0.0700671, 0.0148083, 0.0697948, 1.875, -0.0443486, 0.0675903, -0.0588622, -0.85, -0.0545317, 0.0517385, -0.0659501, -0.65, 0.0389976, 0.0853039, 0.0346761, 1.655, 0.0741989, -0.00680947, -0.0666945, -0.85, 0.0858331, 0.0430527, -0.0279131, -0.65, 0.0302511, -0.0864024, -0.040243, 1.475, -0.0414433, 0.0260978, -0.0871858, -0.87) [node name="fairylights" type="Node3D"] script = SubResource("GDScript_2caij") @@ -70,7 +69,7 @@ light_array = Array[Vector3]([Vector3(0, 0, 0), Vector3(0, 1, 0)]) [node name="wires" type="MeshInstance3D" parent="."] material_override = SubResource("StandardMaterial3D_5ca5e") -mesh = SubResource("ImmediateMesh_lq63p") +mesh = SubResource("ImmediateMesh_30v5y") script = ExtResource("2_javfj") points = Array[Vector3]([Vector3(0, 0, 0), Vector3(0, 1, 0)]) start_thickness = 0.01 diff --git a/src/base-environments/youth_room/room_handle.gd b/src/base-environments/youth_room/room_handle.gd index 319bfaf..4efb9af 100644 --- a/src/base-environments/youth_room/room_handle.gd +++ b/src/base-environments/youth_room/room_handle.gd @@ -50,8 +50,9 @@ func _on_scene_finished(id: int, _repeat:bool): save_game.mementos_complete &= 1 << id save_room() +#FIXME forgot to comment what this means, just marking it for removal var fixed := false -func hotfix(discard): +func hotfix(_discard): print("meep") if not fixed: await get_tree().create_timer(0.1).timeout diff --git a/src/base-environments/youth_room/scnees/scene_player.gd b/src/base-environments/youth_room/scnees/scene_player.gd index 2f9efe4..dbcdaf2 100644 --- a/src/base-environments/youth_room/scnees/scene_player.gd +++ b/src/base-environments/youth_room/scnees/scene_player.gd @@ -16,9 +16,9 @@ var max_lines: float = 0 substring_sizes = [] if Engine.is_editor_hint(): TranslationServer.set_locale("en") - for str in array: - label.text += TranslationServer.translate(str).replace("[/p]", "[/p][p][font_size=8] [/font_size][/p]") - substring_sizes.append(TranslationServer.translate(str).replace("[/p]", ".").replace("[p]", "").length()) + for string in array: + label.text += TranslationServer.translate(string).replace("[/p]", "[/p][p][font_size=8] [/font_size][/p]") + substring_sizes.append(TranslationServer.translate(string).replace("[/p]", ".").replace("[p]", "").length()) max_lines = float(label.get_line_count()) @export var progress: float = 0: @@ -60,7 +60,7 @@ var substring_sizes: Array[int] func _ready() -> void: skip_control = %SkipControl - if skip_control is SkipControl: + if skip_control is SkipControl and not Engine.is_editor_hint(): skip_control.skip.connect(skip_text) if get_tree().root.get_child(-1) == self: diff --git a/src/base-environments/youth_room/youth_room.tscn b/src/base-environments/youth_room/youth_room.tscn index c57daf5..a6f192a 100644 --- a/src/base-environments/youth_room/youth_room.tscn +++ b/src/base-environments/youth_room/youth_room.tscn @@ -1420,7 +1420,6 @@ script = ExtResource("1_aitp0") [node name="PlayerController" parent="logic" groups=["camera_owner"] instance=ExtResource("3_foj4y")] unique_name_in_owner = true -process_mode = 4 transform = Transform3D(0.686123, 0, 0.727485, 0, 1, 0, -0.727485, 0, 0.686123, 0.63, 0, 0.925) [node name="colission" type="Node3D" parent="logic"] @@ -1937,7 +1936,7 @@ transparent_bg = true size = Vector2i(400, 350) render_target_update_mode = 4 -[node name="CollectableUI" parent="logic/DoorTrigger/UiWrapper/UiSprite/SubViewport" instance=ExtResource("25_ghmim")] +[node name="CollectableUi" parent="logic/DoorTrigger/UiWrapper/UiSprite/SubViewport" instance=ExtResource("25_ghmim")] [node name="HoverDetect" type="CollisionShape3D" parent="logic/DoorTrigger"] transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0) diff --git a/src/dev-util/click-trough-area.gd b/src/dev-util/click-trough-area.gd index 27bf46f..4d45e2c 100644 --- a/src/dev-util/click-trough-area.gd +++ b/src/dev-util/click-trough-area.gd @@ -3,13 +3,6 @@ extends Area3D @export var billboard = true @onready var sprite: Sprite3D = $UiSprite @onready var viewport: SubViewport = $UiSprite/SubViewport - -func _ready() -> void: - return - var viewport_tex := ViewportTexture.new() - viewport_tex.viewport_path = "SubViewport" #viewport.get_path() - print(viewport_tex.viewport_path) - sprite.texture = viewport_tex func _process(_delta): diff --git a/src/dev-util/savegame.gd b/src/dev-util/savegame.gd index 1b6058e..97c3f6b 100644 --- a/src/dev-util/savegame.gd +++ b/src/dev-util/savegame.gd @@ -7,21 +7,21 @@ class_name SaveGame extends Resource @export var mementos_complete: int = 0 @export var board_state: Dictionary = {} @export var thumbnail: Texture = preload("res://import/interface-elements/empty_save_slot.png") -@export var last_saved: float = Time.get_unix_time_from_system() +@export var last_saved: int = int(Time.get_unix_time_from_system()) @export var is_save_file_valid: bool = false -# FIXME: for some reason this does not prevent the property from being saved. func _validate_property(property: Dictionary): if property.name == "thumbnail": - property.usage != PROPERTY_USAGE_STORAGE + property.usage = not PROPERTY_USAGE_STORAGE -func _init(filepath = "") -> void: +func _init(initial_filepath = "") -> void: - if filepath == "": + if initial_filepath == "": filepath = "%s/%s" % [State.user_saves_path, unique_save_name] - + else: + filepath = initial_filepath read_save_file() func read_save_file(): diff --git a/src/logic-scenes/board/card-board.gd b/src/logic-scenes/board/card-board.gd index c9ca994..1a07d71 100644 --- a/src/logic-scenes/board/card-board.gd +++ b/src/logic-scenes/board/card-board.gd @@ -41,7 +41,7 @@ var has_stage = false: @onready var dropzone = $HBoxContainer/dropzone var dropzone_size: Vector2 -@export var dropzone_padding = 100 +@export var dropzone_padding:int = 100 @onready var sticky_note_container = $HBoxContainer/ScrollContainer/VBoxContainer @onready var board_of_devs = $"board of devs" @onready var current_context:int = NAVIGATE: @@ -145,9 +145,6 @@ func populate_board(card_names: Array[String]): var all_new:Dictionary = board_of_devs.get_cards_by_name_array(card_names) - var new_cards:Array = all_new["cards"] - var new_sticky_notes:Array = all_new["sticky_notes"] - # spawning the cards and adding them to the dictionary for new_card in all_new["cards"]: add_card(new_card) diff --git a/src/logic-scenes/board/card.gd b/src/logic-scenes/board/card.gd index eefcb21..e0201ee 100644 --- a/src/logic-scenes/board/card.gd +++ b/src/logic-scenes/board/card.gd @@ -162,7 +162,7 @@ func _on_mouse_exited(): highlighted = false is_mouse_entered = false -func _on_input_event(viewport, event, shape_idx): +func _on_input_event(_viewport, event, _shape_idx): if event is InputEventMouseMotion: _move_card() diff --git a/src/logic-scenes/board/sticky-note.gd b/src/logic-scenes/board/sticky-note.gd index 84d2412..c37b801 100644 --- a/src/logic-scenes/board/sticky-note.gd +++ b/src/logic-scenes/board/sticky-note.gd @@ -35,9 +35,9 @@ signal transform_tween_finished if modulate_tween: modulate_tween.kill() if shift_tween: shift_tween.kill() if highlighted: - var modulate_tween = get_tree().create_tween() + modulate_tween = get_tree().create_tween() modulate_tween.tween_property(self, "modulate", highlight_color, 0.1) - var shift_tween = get_tree().create_tween() + shift_tween = get_tree().create_tween() shift_tween.tween_property($Content, "position", shift_by, 0.2) else: modulate_tween = get_tree().create_tween() @@ -140,7 +140,7 @@ func _on_area_exit(card: Area2D): elif card is StickyNote and is_sticky_note_in_panel(): attached_to.collapse_gap() -func _on_input_event(viewport, event, shape_idx): +func _on_input_event(_viewport, event, _shape_idx): if event is InputEventMouseButton: if (event.button_index == MOUSE_BUTTON_LEFT and event.pressed) or event.button_index == MOUSE_BUTTON_RIGHT: if "handle_hover" in current_handle: diff --git a/src/logic-scenes/collectable/new_collectable_ui.gd b/src/logic-scenes/collectable/new_collectable_ui.gd index 3964a59..d2172da 100644 --- a/src/logic-scenes/collectable/new_collectable_ui.gd +++ b/src/logic-scenes/collectable/new_collectable_ui.gd @@ -31,7 +31,7 @@ class_name CollectableUi extends CenterContainer # # if collapse and has_stage: State.leave_stage(self) -@export var scene: Scenes.id = 0: +@export var scene: Scenes.id = Scenes.id.YOUTH_DRAEVEN: set(id): scene = id if is_inside_tree() and not is_board: diff --git a/src/logic-scenes/main menu/main_menu.gd b/src/logic-scenes/main menu/main_menu.gd index 43ba438..c16104e 100644 --- a/src/logic-scenes/main menu/main_menu.gd +++ b/src/logic-scenes/main menu/main_menu.gd @@ -37,8 +37,8 @@ func _ready() -> void: save_game_handle.picked.connect(_on_save_picked) continue_button.visible = save_game_handle.get_most_recent_save().current_room != 0 continue_button.pressed.connect(func(): start_game.emit(save_game_handle.get_most_recent_save())) - new_game_button.pressed.connect(func(): save_game_handle.pick_slot(true)) - load_game_button.pressed.connect(func(): save_game_handle.pick_slot(false)) + new_game_button.pressed.connect(func(): save_game_handle.pick_save_slot(true)) + load_game_button.pressed.connect(func(): save_game_handle.pick_save_slot(false)) settings_button.get_popup().index_pressed.connect(settings_popup.show_settings) quit_button.pressed.connect(get_tree().quit) diff --git a/src/logic-scenes/main menu/pause_menu.gd b/src/logic-scenes/main menu/pause_menu.gd index 3601ff2..1d8ea3e 100644 --- a/src/logic-scenes/main menu/pause_menu.gd +++ b/src/logic-scenes/main menu/pause_menu.gd @@ -10,17 +10,11 @@ class_name PauseManu extends PanelContainer # Called when the node enters the scene tree for the first time. func _ready() -> void: resume_button.pressed.connect(owner.toggle_pause_menu) - to_menu_button.pressed.connect(_process) + #to_menu_button.pressed.connect(_process) to_desktop_button.pressed.connect(func(): get_tree().quit()) - to_settings_button.pressed.connect(_process) + #to_settings_button.pressed.connect(_process) helpline_button.pressed.connect(func(): OS.shell_open("https://findahelpline.com/")) - skip_story_button.pressed.connect(_process) - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass - + #skip_story_button.pressed.connect(_process) func _on_help_pressed(): OS.shell_open("https://findahelpline.com/") diff --git a/src/logic-scenes/main menu/save_game_list.gd b/src/logic-scenes/main menu/save_game_list.gd index f6ccacc..05afa9c 100644 --- a/src/logic-scenes/main menu/save_game_list.gd +++ b/src/logic-scenes/main menu/save_game_list.gd @@ -16,7 +16,7 @@ var save_buttons: Array[SaveGameDisplay] load_games() var scroll_container: ScrollContainer -var create_new_game: bool = false +var override_save_slot: bool = false func _ready() -> void: #FIXME: stop this from creating countless save games! @@ -57,7 +57,7 @@ func load_games(): new_button.pressed.connect(func(): _on_game_picked(i)) func _on_game_picked(id: int): - if create_new_game: + if override_save_slot: if saves[id].current_room == 0: picked.emit(id) else: @@ -66,9 +66,10 @@ func _on_game_picked(id: int): else: picked.emit(id) -func pick_slot(create_new_game: bool): +# This function is called when the user us supposed to choose a slot to load or create a new game. +func pick_save_slot(create_new_game: bool): State.take_stage(self) - self.create_new_game = create_new_game + self.override_save_slot = create_new_game func get_most_recent_save() -> SaveGame: var most_recent_time := 0.0 diff --git a/src/logic-scenes/main menu/video_settings.gd b/src/logic-scenes/main menu/video_settings.gd index 21dccdd..cc35a1b 100644 --- a/src/logic-scenes/main menu/video_settings.gd +++ b/src/logic-scenes/main menu/video_settings.gd @@ -1,47 +1,47 @@ extends VBoxContainer +# This is a hack so values changing to the default to not create a recursion. signal changed signal leave_stage var has_stage:bool = false: set(stage): has_stage = stage - preset_selected = preset_selected + match preset_selected: + 1: %PerformancePreset.grab_focus() + 2: %BalancedPreset.grab_focus() + 3: %QualityPreset.grab_focus() + _: %FullscreenMode.grab_focus() @export_file(".json") var settings_path = "user://video_settings.json" @export_enum("None", "Performance", "Balanced", "Quality") var preset_selected:int = 2: set(value): + # this may not call changed! preset_selected = value - if has_stage: - match preset_selected: - 1: %PerformancePreset.grab_focus() - 2: %BalancedPreset.grab_focus() - 3: %QualityPreset.grab_focus() - _: %FullscreenMode.grab_focus() @export var window_mode: DisplayServer.WindowMode = DisplayServer.WindowMode.WINDOW_MODE_FULLSCREEN: set(value): window_mode = value - changed.emit() + if not ignore_changes: changed.emit() @onready var fullscreen_selector: OptionButton = %FullscreenMode @export_range(0.5, 2) var render_scale: float = 1: set(value): render_scale = value - changed.emit() + if not ignore_changes: changed.emit() @onready var scale_selector: SpinBox = %RenderScale @export var upscale_mode: RenderingServer.ViewportScaling3DMode = RenderingServer.ViewportScaling3DMode.VIEWPORT_SCALING_3D_MODE_BILINEAR : set(value): upscale_mode = value - changed.emit() + if not ignore_changes: changed.emit() @onready var upscale_selector: OptionButton = %SuperResolution @export_range(30, 144) var max_fps: int = 60: set(value): max_fps = value - changed.emit() + if not ignore_changes: changed.emit() @onready var fps_enabler: CheckBox = %EnableFps var fps_enabled: bool: set(value): @@ -52,37 +52,39 @@ var fps_enabled: bool: @export_enum("low", "medium", "high", "ultra") var lighting_quality: int = 3: set(value): lighting_quality = value - changed.emit() + if not ignore_changes: changed.emit() @onready var lightning_selector: OptionButton = %LightingQuality @export_enum("low", "medium", "high") var shadow_quality: int = 3: set(value): shadow_quality = value - changed.emit() + if not ignore_changes: changed.emit() @onready var shadow_selector: OptionButton = %ShadowQuality @export_enum("no", "1x", "2x", "4x", "8x") var texture_filtering:int = 3: set(value): texture_filtering = value - changed.emit() + if not ignore_changes: changed.emit() @onready var texture_selector: OptionButton = %TextureFiltering @export_enum("no", "1x", "2x", "4x") var msaa = 0: set(value): msaa = value - changed.emit() + if not ignore_changes: changed.emit() @onready var msaa_selector: OptionButton = %AntiAlaising @export var vsync_mode: DisplayServer.VSyncMode = DisplayServer.VSyncMode.VSYNC_ENABLED: set(value): vsync_mode = value - changed.emit() + if not ignore_changes: changed.emit() @onready var vsync_selector: OptionButton = %vSync +var ignore_changes: bool = false var has_changed: bool = false: set(value): has_changed = value - preset_selected = 0 + if not ignore_changes: + preset_selected = 0 if has_changed: %ExitButton.text = "discard" else: @@ -93,7 +95,7 @@ func _ready() -> void: propagate_settings() - fullscreen_selector.item_selected.connect(func(value): window_mode = value) + fullscreen_selector.item_selected.connect(func(value): window_mode = select_id_to_window_mode(value)) scale_selector.value_changed.connect(func(value): render_scale = value) upscale_selector.item_selected.connect(func(value): upscale_mode = value) lightning_selector.item_selected.connect(func(value): lighting_quality = value) @@ -106,7 +108,7 @@ func _ready() -> void: fps_selector.value_changed.connect(func(value): max_fps = value) fps_enabler.toggled.connect(func(value): fps_enabled = value) - changed.connect(func():has_changed = true) + changed.connect(func(): has_changed = true) preset_selected = preset_selected @@ -114,6 +116,9 @@ func _ready() -> void: %ConfirmExit.pressed.connect(_on_exit_confirmed) %ConfirmSave.pressed.connect(_on_confirm_button_pressed) %ConfirmAbort.pressed.connect($Popup.hide) + %PerformancePreset.pressed.connect(_on_performance_preset_pressed) + %BalancedPreset.pressed.connect(_on_balanced_preset_pressed) + %QualityPreset.pressed.connect(_on_quality_preset_pressed) func load_settings(): @@ -127,7 +132,7 @@ func load_settings(): set(key, parsed[key]) func propagate_settings(): - fullscreen_selector.select(window_mode) + fullscreen_selector.select(window_mode_to_select_id(window_mode)) scale_selector.value = render_scale upscale_selector.select(upscale_mode) fps_enabler.button_pressed = fps_enabled @@ -172,7 +177,7 @@ func _on_exit_button_pressed() -> void: State.leave_stage(self) func _on_confirm_button_pressed() -> void: - ProjectSettings.set_setting("display/window/size/mode", fullscreen_selector) + ProjectSettings.set_setting("display/window/size/mode", window_mode) ProjectSettings.set_setting("rendering/scaling_3d/scale", render_scale) ProjectSettings.set_setting("rendering/scaling_3d/mode", upscale_mode) ProjectSettings.set_setting("application/run/max_fps", max_fps if fps_enabled else 0) @@ -205,6 +210,9 @@ func _on_confirm_button_pressed() -> void: save_settings() func _on_performance_preset_pressed() -> void: + ignore_changes = true + has_changed = true + render_scale = 0.8 max_fps = 60 fps_enabled = true @@ -212,13 +220,19 @@ func _on_performance_preset_pressed() -> void: shadow_quality = 0 texture_filtering = 1 msaa = 0 - vsync_mode = 0 + vsync_mode = DisplayServer.VSyncMode.VSYNC_DISABLED propagate_settings() + changed.emit() + ignore_changes = false + preset_selected = 1 func _on_balanced_preset_pressed() -> void: + ignore_changes = true + has_changed = true + render_scale = 1 max_fps = 60 fps_enabled = true @@ -226,13 +240,19 @@ func _on_balanced_preset_pressed() -> void: shadow_quality = 1 texture_filtering = 3 msaa = 1 - vsync_mode = 1 + vsync_mode = DisplayServer.VSyncMode.VSYNC_ENABLED propagate_settings() + changed.emit() + ignore_changes = false + preset_selected = 2 func _on_quality_preset_pressed() -> void: + ignore_changes = true + has_changed = true + render_scale = 1 max_fps = 60 fps_enabled = false @@ -240,8 +260,17 @@ func _on_quality_preset_pressed() -> void: shadow_quality = 2 texture_filtering = 4 msaa = 3 - vsync_mode = 1 + vsync_mode = DisplayServer.VSyncMode.VSYNC_ENABLED propagate_settings() + + changed.emit() + ignore_changes = false preset_selected = 3 + +func window_mode_to_select_id(mode: DisplayServer.WindowMode) -> int: + return int(mode) - 2 if int(mode) != 0 else 0 + +func select_id_to_window_mode(item_id) -> DisplayServer.WindowMode: + return item_id + 2 if item_id != 0 else 0 diff --git a/src/logic-scenes/main menu/video_settings.tscn b/src/logic-scenes/main menu/video_settings.tscn index d4d6e66..74b90cb 100644 --- a/src/logic-scenes/main menu/video_settings.tscn +++ b/src/logic-scenes/main menu/video_settings.tscn @@ -44,37 +44,37 @@ func _ready() -> void: func _input(event: InputEvent) -> void: if has_focus(): - if Input.is_action_just_pressed(\"ui_accept\"): - print(\"pressed!\") - print(pressed) + if event.is_action_pressed(\"ui_accept\"): pressed = not pressed - print(pressed) get_viewport().set_input_as_handled() if pressed: - - if Input.is_action_just_pressed(\"ui_up\") or Input.is_action_just_pressed(\"ui_right\"): + grab_focus() + # + if event.is_action_pressed(\"ui_up\") or event.is_action_pressed(\"ui_right\"): value += step - get_viewport().set_input_as_handled() - await(get_tree().create_timer(hold_down_delay).timeout) + call_deferred(\"check_input_held\", true) - while Input.is_action_pressed(\"ui_up\") or Input.is_action_pressed(\"ui_right\"): - value += step * repeat_multiplier - await(get_tree().create_timer(repeat_delay).timeout) - - elif Input.is_action_just_pressed(\"ui_down\") or Input.is_action_just_pressed(\"ui_left\"): + elif event.is_action_pressed(\"ui_down\", true) or event.is_action_pressed(\"ui_left\", true): value -= step - get_viewport().set_input_as_handled() - else: - if Input.is_action_just_pressed(\"ui_up\"): - print(focus_neighbor_top) + + call_deferred(\"check_input_held\", false) + get_viewport().set_input_as_handled() + func _on_focus_enter(): get_line_edit().add_theme_stylebox_override(\"normal\", focus_stylebox) func _on_focus_exit(): get_line_edit().remove_theme_stylebox_override(\"normal\") + +func check_input_held(upward: bool): + await(get_tree().create_timer(repeat_delay).timeout) + while ((Input.is_action_pressed(\"ui_up\", true) or Input.is_action_pressed(\"ui_right\", true) and upward) or (Input.is_action_pressed(\"ui_down\", true) or Input.is_action_pressed(\"ui_left\", true) and not upward)): + value += step * repeat_multiplier * (1 if upward else -1) + await(get_tree().create_timer(repeat_delay).timeout) + " [node name="Video Settings" type="VBoxContainer"] @@ -134,6 +134,7 @@ layout_mode = 2 selected = 1 item_count = 3 popup/item_0/text = "Windowed" +popup/item_0/id = 0 popup/item_1/text = "Fullscreen" popup/item_1/id = 1 popup/item_2/text = "exclusive Fullscreen" @@ -152,6 +153,7 @@ text = "reset" [node name="RenderScale" type="SpinBox" parent="GridContainer/HBoxContainer"] unique_name_in_owner = true +custom_minimum_size = Vector2(120, 0) layout_mode = 2 focus_mode = 2 min_value = 0.25 @@ -174,7 +176,8 @@ layout_mode = 2 selected = 0 item_count = 3 popup/item_0/text = "disabled" -popup/item_1/text = " " +popup/item_0/id = 0 +popup/item_1/text = " FSR 1.0" popup/item_1/id = 1 popup/item_2/text = "FSR 2.2" popup/item_2/id = 2 @@ -214,6 +217,7 @@ layout_mode = 2 selected = 1 item_count = 4 popup/item_0/text = "minimum" +popup/item_0/id = 0 popup/item_1/text = "low (SDF Global Illumination)" popup/item_1/id = 1 popup/item_2/text = "medium (SDF and Screen Space Global Illumination)" @@ -231,6 +235,7 @@ layout_mode = 2 selected = 1 item_count = 3 popup/item_0/text = "performance" +popup/item_0/id = 0 popup/item_1/text = "balanced" popup/item_1/id = 1 popup/item_2/text = "quality" @@ -246,6 +251,7 @@ layout_mode = 2 selected = 1 item_count = 6 popup/item_0/text = "disabled" +popup/item_0/id = 0 popup/item_1/text = "1x (very fast)" popup/item_1/id = 1 popup/item_2/text = "2x (fast)" @@ -267,6 +273,7 @@ layout_mode = 2 selected = 1 item_count = 4 popup/item_0/text = "disabled" +popup/item_0/id = 0 popup/item_1/text = "2x MSAA" popup/item_1/id = 1 popup/item_2/text = "4x MSAA" @@ -284,6 +291,7 @@ layout_mode = 2 selected = 1 item_count = 4 popup/item_0/text = "disabled" +popup/item_0/id = 0 popup/item_1/text = "enabled" popup/item_1/id = 1 popup/item_2/text = "adaptive" diff --git a/src/logic-scenes/player_controller/player_controller.gd b/src/logic-scenes/player_controller/player_controller.gd index 71fc50f..2cbfd93 100644 --- a/src/logic-scenes/player_controller/player_controller.gd +++ b/src/logic-scenes/player_controller/player_controller.gd @@ -176,21 +176,10 @@ func _input(event:InputEvent): elif Input.is_action_just_pressed("zoom_out_mouse"): zoomed = false - - #FIXME remove this if it has been determined that this kind of reveal all is no longer planned. - #else: - #State.free_focus() - #get_tree().call_group("interactables", "reveal") if event.is_action_pressed("collect_memento_ui") or event.is_action_pressed("option_memento_ui"): - focus_ray.get_collider().handle(event) - get_viewport().set_input_as_handled() - #FIXME this code jeets focxus back to the player, but I think it may be an anti-pattern. - #else: - # if event is InputEventMouseButton: - # if event.button_index == MOUSE_BUTTON_RIGHT and event.pressed: - # if !Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT): - # State.take_stage(self, true) - # get_tree().call_group("interactables", "collapse") + if focus_ray.is_colliding(): + focus_ray.get_collider().handle(event) + get_viewport().set_input_as_handled() func play_scene(id: int, _repeat): if id == Scenes.id.YOUTH_DRAEVEN: diff --git a/src/logic-scenes/startup/startup.tscn b/src/logic-scenes/startup/startup.tscn index 71e9de0..72bb31b 100644 --- a/src/logic-scenes/startup/startup.tscn +++ b/src/logic-scenes/startup/startup.tscn @@ -109,8 +109,9 @@ script/source = "extends TabContainer var focus_list: Array -@onready var disable_rendering = $\"physical Accessibility/Container2/margin2/show nav buttons\" -@onready var simplified_controls = $\"physical Accessibility/Container2/simplified controls\" +#FIXME when accessability setting is implemented properly +@onready var disable_rendering = false +@onready var simplified_controls = false func _ready(): for child in get_children(): @@ -292,6 +293,7 @@ size_flags_vertical = 4 selected = 1 item_count = 5 popup/item_0/text = "messy handwriting" +popup/item_0/id = 0 popup/item_0/disabled = true popup/item_1/text = "easy handwriting" popup/item_1/id = 1 @@ -317,6 +319,7 @@ disabled = true selected = 1 item_count = 3 popup/item_0/text = "none" +popup/item_0/id = 0 popup/item_1/text = "spoken text" popup/item_1/id = 1 popup/item_2/text = "closed captions" diff --git a/src/main.gd b/src/main.gd index d9f8ea2..6ac94fc 100644 --- a/src/main.gd +++ b/src/main.gd @@ -42,7 +42,7 @@ func _ready(): get_tree().tree_process_mode_changed.connect(pause_mode_changed) -func _process(delta: float) -> void: +func _process(_delta: float) -> void: if currently_loading_room != "": if ResourceLoader.load_threaded_get_status(currently_loading_room) == 3: current_room = ResourceLoader.load_threaded_get(youth_room_path).instantiate() @@ -69,7 +69,7 @@ func toggle_pause_menu(): get_tree().paused = false var state_machine = menu_animation["parameters/playback"] state_machine.travel("start_game") - Input.mouse_mode = Input.MOUSE_MODE_HIDDEN + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED func debug_youth(): get_child(1).hide()