Add limit fps option

This commit is contained in:
antimundo 2024-03-25 18:23:55 +01:00
parent 05fe45d726
commit 1dc690ab99
No known key found for this signature in database
GPG key ID: F83F260F8F88F0BC
5 changed files with 46 additions and 3 deletions

View file

@ -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)

View file

@ -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():

View file

@ -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:

View file

@ -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"]

View file

@ -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