mirror of
https://github.com/Nokorpo/LibreAim.git
synced 2025-06-09 09:35:16 +09:00
Add fullscreen button in settings
This commit is contained in:
parent
5400c49df8
commit
135b35cfac
5 changed files with 76 additions and 7 deletions
|
@ -19,6 +19,7 @@ config/icon="res://icon.svg"
|
|||
|
||||
Global="*res://scenes/autoload/global.gd"
|
||||
DataManager="*res://scenes/autoload/data_manager.gd"
|
||||
DisplayManager="*res://scenes/autoload/display_manager.gd"
|
||||
|
||||
[display]
|
||||
|
||||
|
|
43
scenes/autoload/display_manager.gd
Normal file
43
scenes/autoload/display_manager.gd
Normal file
|
@ -0,0 +1,43 @@
|
|||
extends Node
|
||||
|
||||
signal window_mode_updated(window_mode: DisplayServer.WindowMode)
|
||||
|
||||
func _ready():
|
||||
var category = DataManager.categories.SETTINGS
|
||||
if DataManager.get_data(category, "window_mode"):
|
||||
var selected = DataManager.get_data(category, "window_mode")
|
||||
set_window_mode(get_window_mode_from_string(selected))
|
||||
|
||||
func _input(event):
|
||||
if event.is_action_pressed("fullscreen"):
|
||||
if DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN:
|
||||
set_window_mode(DisplayServer.WINDOW_MODE_MAXIMIZED)
|
||||
else:
|
||||
set_window_mode(DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN)
|
||||
|
||||
func set_window_mode_from_string(window_mode: String):
|
||||
set_window_mode(get_window_mode_from_string(window_mode))
|
||||
|
||||
func get_window_mode_from_string(window_mode: String):
|
||||
match window_mode:
|
||||
"fullscreen":
|
||||
return DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN
|
||||
"windowed":
|
||||
return DisplayServer.WINDOW_MODE_MAXIMIZED
|
||||
return null
|
||||
|
||||
func get_string_from_window_mode(window_mode: DisplayServer.WindowMode):
|
||||
match window_mode:
|
||||
DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN:
|
||||
return "fullscreen"
|
||||
DisplayServer.WINDOW_MODE_MAXIMIZED:
|
||||
return "windowed"
|
||||
return null
|
||||
|
||||
func set_window_mode(window_mode: DisplayServer.WindowMode):
|
||||
window_mode_updated.emit(window_mode)
|
||||
DisplayServer.window_set_mode(window_mode)
|
||||
if window_mode == DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN:
|
||||
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)
|
|
@ -68,10 +68,3 @@ func string_to_color(string_vector: String) -> Color:
|
|||
|
||||
# Create the Vector3D object
|
||||
return Color(r, g, b, a)
|
||||
|
||||
func _input(event):
|
||||
if event.is_action_pressed("fullscreen"):
|
||||
if DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN:
|
||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_MAXIMIZED)
|
||||
else:
|
||||
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN)
|
||||
|
|
|
@ -333,6 +333,19 @@ min_value = 45.0
|
|||
max_value = 130.0
|
||||
value = 80.0
|
||||
|
||||
[node name="WindowModeLabel" type="Label" parent="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Window mode"
|
||||
|
||||
[node name="WindowModeOptions" type="OptionButton" parent="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
item_count = 2
|
||||
selected = 0
|
||||
popup/item_0/text = "fullscreen"
|
||||
popup/item_0/id = 1
|
||||
popup/item_1/text = "windowed"
|
||||
popup/item_1/id = 0
|
||||
|
||||
[node name="Controls" type="Control" parent="HBoxContainer/Control2"]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
|
@ -448,6 +461,7 @@ layout_mode = 2
|
|||
[connection signal="file_selected" from="HBoxContainer/Control2/Crosshair/MarginContainer/VBoxContainer/ImportFileDialog" to="HBoxContainer/Control2/Crosshair" method="_on_import_file_dialog_file_selected"]
|
||||
[connection signal="value_changed" from="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/ResolutionSlider" to="HBoxContainer/Control2/Video" method="_on_resolution_slider_value_changed"]
|
||||
[connection signal="value_changed" from="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/FovSlider" to="HBoxContainer/Control2/Video" method="_on_fov_slider_value_changed"]
|
||||
[connection signal="item_selected" from="HBoxContainer/Control2/Video/MarginContainer/VBoxContainer/WindowModeOptions" to="HBoxContainer/Control2/Video" method="_on_window_mode_options_item_selected"]
|
||||
[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"]
|
||||
|
|
|
@ -4,8 +4,10 @@ extends Control
|
|||
@onready var resolution_slider = $MarginContainer/VBoxContainer/ResolutionSlider
|
||||
@onready var fov_label = $MarginContainer/VBoxContainer/FovLabel
|
||||
@onready var fov_slider = $MarginContainer/VBoxContainer/FovSlider
|
||||
@onready var window_mode_options = $MarginContainer/VBoxContainer/WindowModeOptions
|
||||
|
||||
func _ready():
|
||||
DisplayManager.window_mode_updated.connect(_on_display_manager_window_mode_updated)
|
||||
update_fov_label()
|
||||
update_resolution_label()
|
||||
get_viewport().size_changed.connect(self.update_resolution_label)
|
||||
|
@ -15,6 +17,11 @@ func _ready():
|
|||
resolution_slider.value = DataManager.get_data(category, "resolution")
|
||||
if DataManager.get_data(category, "camera_fov"):
|
||||
fov_slider.value = DataManager.get_data(category, "camera_fov")
|
||||
if DataManager.get_data(category, "window_mode"):
|
||||
var selected = DataManager.get_data(category, "window_mode")
|
||||
for i in range(window_mode_options.item_count):
|
||||
if selected == window_mode_options.get_item_text(i):
|
||||
window_mode_options.select(i)
|
||||
|
||||
func _on_resolution_slider_value_changed(value: float) -> void:
|
||||
get_viewport().scaling_3d_scale = value
|
||||
|
@ -24,6 +31,17 @@ func _on_resolution_slider_value_changed(value: float) -> void:
|
|||
func _on_fov_slider_value_changed(value):
|
||||
update_fov_label()
|
||||
DataManager.save_data("camera_fov", value, DataManager.categories.SETTINGS)
|
||||
|
||||
func _on_window_mode_options_item_selected(index):
|
||||
var option = window_mode_options.get_item_text(index)
|
||||
DisplayManager.set_window_mode_from_string(option)
|
||||
DataManager.save_data("window_mode", option, DataManager.categories.SETTINGS)
|
||||
|
||||
func _on_display_manager_window_mode_updated(window_mode):
|
||||
var selected = DisplayManager.get_string_from_window_mode(window_mode)
|
||||
for i in range(window_mode_options.item_count):
|
||||
if selected == window_mode_options.get_item_text(i):
|
||||
window_mode_options.select(i)
|
||||
|
||||
func update_resolution_label() -> void:
|
||||
var viewport_render_size = get_viewport().size * get_viewport().scaling_3d_scale
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue