CORE/wmgr.gd

109 lines
3.4 KiB
GDScript3
Raw Normal View History

# wmgr.gd
2023-03-18 16:34:12 +01:00
# Window Manager
#
# This file is part of StarOpenSource CORE (SOSCORE)
# Made by the StarOpenSource Project and Contributers
# Licensed under GNU GPLv3
extends Node
@onready
var core = get_node(NodePath("/root/core"))
var config_window_size_x = null
var config_window_size_y = null
var config_window_title = null
var config_window_mode = null
2023-03-18 16:34:12 +01:00
var delta = 0
func load_configuration() -> void:
if core.protection_mode: return
config_window_size_x = core.config.wmgr_size_x
config_window_size_y = core.config.wmgr_size_y
config_window_title = core.config.wmgr_title
config_window_mode = core.config.wmgr_mode
func initialize() -> void:
if core.protection_mode: return
Logger.diag("wmgr","Configuring window")
DisplayServer.window_set_size(Vector2i(config_window_size_x,config_window_size_y))
DisplayServer.window_set_min_size(Vector2i(960,540))
DisplayServer.window_set_title(config_window_title)
DisplayServer.window_set_mode(config_window_mode)
core.setready()
func _process(deltap) -> void:
delta = deltap
2023-03-18 16:34:12 +01:00
func set_size(x:int,y:int) -> void:
if core.protection_mode: return
Logger.diag("wmgr","Applying new window size (" + str(x) + "x" + str(y) + ")")
2023-03-18 16:34:12 +01:00
DisplayServer.window_set_size(Vector2i(x,y))
func set_position(x:int,y:int) -> void:
if core.protection_mode: return
Logger.diag("wmgr","Applying new window position (X" + str(x) + " Y" + str(y) + ")")
2023-03-18 16:34:12 +01:00
DisplayServer.window_set_position(Vector2i(x,y))
func set_title(title:String) -> void:
if core.protection_mode: return
Logger.diag("wmgr","Applying new window title (" + title + ")")
2023-03-18 16:34:12 +01:00
DisplayServer.window_set_title(title)
config_window_title = title
2023-03-18 16:34:12 +01:00
func set_mode(mode:String) -> bool:
if core.protection_mode: return false
Logger.diag("wmgr","Applying new window mode (" + mode + ")")
match(mode):
"WINDOWED": DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)
"MINIMIZED": DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_MINIMIZED)
"MAXIMIZED": DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_MAXIMIZED)
"FULLSCREEN": DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
"EXCLUSIVE_FULLSCREEN": DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_EXCLUSIVE_FULLSCREEN)
_:
Logger.error("wmgr","Invalid window mode \"" + mode + "\".")
return false
return true
2023-03-18 16:34:12 +01:00
func get_size() -> Vector2i:
if core.protection_mode: return Vector2i(0,0)
2023-03-18 16:34:12 +01:00
return DisplayServer.window_get_size()
func get_position() -> Vector2i:
if core.protection_mode: return Vector2i(0,0)
2023-03-18 16:34:12 +01:00
return DisplayServer.window_get_position()
func get_title() -> String:
if core.protection_mode: return ""
return config_window_title
2023-03-18 16:34:12 +01:00
func get_mode() -> String:
if core.protection_mode: return ""
match(DisplayServer.window_get_mode()):
0: return "WINDOWED"
1: return "MINIMIZED"
2: return "MAXIMIZED"
3: return "FULLSCREEN"
4: return "EXCLUSIVE_FULLSCREEN"
_:
core.exception("wmgr","The window mode id \"" + str(DisplayServer.window_get_mode()) + "\" is not known to wmgr.gd")
return "INVALID_MODE"
2023-03-18 16:34:12 +01:00
2023-07-08 20:41:59 +02:00
func get_fps(flat:bool = false) -> float:
if core.protection_mode: return 0.0
if str(delta) == "0":
2023-06-26 20:14:38 +02:00
return INF
else:
2023-07-08 20:41:59 +02:00
if flat:
return float(int(1/delta))
else:
return 1/delta
func get_rendertime() -> float:
if core.protection_mode: return 0.0
return Performance.get_monitor(Performance.TIME_PROCESS)
2023-06-26 20:27:22 +02:00
func get_delta() -> float:
if core.protection_mode: return 0.0
return delta