From 1dc690ab99ae34d3d41d29ec1991e7823be9bf30 Mon Sep 17 00:00:00 2001 From: antimundo Date: Mon, 25 Mar 2024 18:23:55 +0100 Subject: [PATCH] Add limit fps option --- scenes/autoload/display_manager.gd | 7 +++++++ scenes/game_world/destroyed_sound.gd | 2 +- scenes/game_world/player_manager.gd | 1 + scenes/main_menu/settings.tscn | 20 ++++++++++++++++++-- scenes/main_menu/settings_fps_limit.gd | 19 +++++++++++++++++++ 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 scenes/main_menu/settings_fps_limit.gd diff --git a/scenes/autoload/display_manager.gd b/scenes/autoload/display_manager.gd index 7422b39..49d7b99 100644 --- a/scenes/autoload/display_manager.gd +++ b/scenes/autoload/display_manager.gd @@ -7,6 +7,10 @@ func _ready(): if DataManager.get_data(category, "window_mode"): var selected = DataManager.get_data(category, "window_mode") set_window_mode(get_window_mode_from_string(selected)) + var fps_limit = 120 + if DataManager.get_data(category, "fps_limit"): + fps_limit = int(DataManager.get_data(category, "window_mode")) + set_max_fps(fps_limit) func _input(event): if event.is_action_pressed("fullscreen"): @@ -41,3 +45,6 @@ func set_window_mode(window_mode: DisplayServer.WindowMode): DataManager.save_data("window_mode", "fullscreen", DataManager.categories.SETTINGS) elif window_mode == DisplayServer.WINDOW_MODE_MAXIMIZED: DataManager.save_data("window_mode", "windowed", DataManager.categories.SETTINGS) + +func set_max_fps(value) -> void: + Engine.set_max_fps(value) diff --git a/scenes/game_world/destroyed_sound.gd b/scenes/game_world/destroyed_sound.gd index faebdc1..b32576e 100644 --- a/scenes/game_world/destroyed_sound.gd +++ b/scenes/game_world/destroyed_sound.gd @@ -3,7 +3,7 @@ extends AudioStreamPlayer func _ready(): update_hit_sound() -func _on_volume_updated(value: float): +func _on_volume_updated(_value: float): update_hit_sound() func update_hit_sound(): diff --git a/scenes/game_world/player_manager.gd b/scenes/game_world/player_manager.gd index 922b28d..20e66f1 100644 --- a/scenes/game_world/player_manager.gd +++ b/scenes/game_world/player_manager.gd @@ -24,6 +24,7 @@ func _ready() -> void: user_sensitivity = DataManager.set_parameter_if_exists(category, user_sensitivity, "sensitivity") camera.fov = DataManager.set_parameter_if_exists(category, camera.fov, "camera_fov") mouse_sensitivity = user_sensitivity * conversion_sensitivity + print(str(user_sensitivity) + " " + str(conversion_sensitivity)) func _input(event) -> void: if event is InputEventMouseMotion: diff --git a/scenes/main_menu/settings.tscn b/scenes/main_menu/settings.tscn index 90294ad..f70d135 100644 --- a/scenes/main_menu/settings.tscn +++ b/scenes/main_menu/settings.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=22 format=3 uid="uid://cropshnueuiqr"] +[gd_scene load_steps=23 format=3 uid="uid://cropshnueuiqr"] [ext_resource type="Script" path="res://scenes/main_menu/settings.gd" id="1_4ilr3"] [ext_resource type="Texture2D" uid="uid://ql8v8tau18u1" path="res://assets/images/icons/checkbox_checked.svg" id="2_gf318"] @@ -12,6 +12,7 @@ [ext_resource type="Script" path="res://scenes/main_menu/settings_world_appareance.gd" id="9_78isq"] [ext_resource type="Script" path="res://scenes/main_menu/audio.gd" id="10_0bjg8"] [ext_resource type="Texture2D" uid="uid://b6xs7w20eke54" path="res://assets/images/checkerboard.png" id="10_tgbab"] +[ext_resource type="Script" path="res://scenes/main_menu/settings_fps_limit.gd" id="11_8bk84"] [ext_resource type="Script" path="res://scenes/game_world/destroyed_sound.gd" id="11_yfmwu"] [ext_resource type="Texture2D" uid="uid://nng31j22g6fh" path="res://assets/images/icons/play.svg" id="13_8vd46"] @@ -286,7 +287,6 @@ access = 2 use_native_dialog = true [node name="Video" type="Control" parent="HBoxContainer/Control2"] -visible = false layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -381,6 +381,21 @@ layout_mode = 2 texture = ExtResource("10_tgbab") stretch_mode = 1 +[node name="FPSLimit" type="VBoxContainer" parent="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer"] +layout_mode = 2 +script = ExtResource("11_8bk84") + +[node name="FPSLimitLabel" type="Label" parent="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/FPSLimit"] +layout_mode = 2 +text = "Fps limit" + +[node name="FPSLimitSlider" type="HSlider" parent="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/FPSLimit"] +layout_mode = 2 +min_value = 60.0 +max_value = 360.0 +step = 5.0 +value = 120.0 + [node name="Controls" type="Control" parent="HBoxContainer/Control2"] visible = false layout_mode = 1 @@ -501,6 +516,7 @@ layout_mode = 2 [connection signal="item_selected" from="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/WindowModeOptions" to="HBoxContainer/Control2/Video" method="_on_window_mode_options_item_selected"] [connection signal="color_changed" from="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/WorldAppareance/WorldColor/Color" to="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/WorldAppareance" method="_on_color_color_changed"] [connection signal="item_selected" from="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/WorldAppareance/WorldTexture" to="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/WorldAppareance" method="_on_world_texture_item_selected"] +[connection signal="value_changed" from="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/FPSLimit/FPSLimitSlider" to="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/FPSLimit" method="_on_fps_limit_slider_value_changed"] [connection signal="item_selected" from="HBoxContainer/Control2/Controls/MarginContainer/VBoxContainer/HBoxContainer2/Game" to="HBoxContainer/Control2/Controls" method="_on_game_item_selected"] [connection signal="text_changed" from="HBoxContainer/Control2/Controls/MarginContainer/VBoxContainer/HBoxContainer2/Sensitivity" to="HBoxContainer/Control2/Controls" method="_on_sensitivity_text_changed"] [connection signal="value_changed" from="HBoxContainer/Control2/Audio/MarginContainer/VBoxContainer/VolumeSlider" to="HBoxContainer/Control2/Audio" method="_on_volume_slider_value_changed"] diff --git a/scenes/main_menu/settings_fps_limit.gd b/scenes/main_menu/settings_fps_limit.gd new file mode 100644 index 0000000..a92b73b --- /dev/null +++ b/scenes/main_menu/settings_fps_limit.gd @@ -0,0 +1,19 @@ +extends VBoxContainer + +@onready var fps_limit_slider = $FPSLimitSlider +@onready var fps_limit_label = $FPSLimitLabel + +func _on_fps_limit_slider_value_changed(value): + DataManager.save_data("fps_limit", value, DataManager.categories.SETTINGS) + update_label() + +func _ready(): + var category = DataManager.categories.SETTINGS + + if DataManager.get_data(category, "fps_limit"): + fps_limit_slider.value = DataManager.get_data(category, "fps_limit") + + update_label() + +func update_label() -> void: + fps_limit_label.text = "FPS Limit: %d fps" % fps_limit_slider.value