CORE/wmgr.gd
JeremyStarTM b57d00e9cd Many improvements (see commit description)
Added more things to roadmap, removed autoload singleton check, added support for Godot 4.1, all startup messages now use Logger.diag() instead of Logger.info() (making them disappear but can be shown if needed), removed autoload.gd, fixes syntax.
2023-07-07 10:58:49 +02:00

89 lines
2.7 KiB
GDScript

# wmgr.gd
# 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"))
@onready
var window_size_x = core.config.wmgr_size_x
@onready
var window_size_y = core.config.wmgr_size_y
@onready
var window_title = core.config.wmgr_title
@onready
var window_mode = core.config.wmgr_mode
var delta = 0
func _process(deltap) -> void:
delta = deltap
func set_size(x:int,y:int) -> void:
Logger.diag("wmgr","Applying new window size (" + str(x) + "x" + str(y) + ")")
DisplayServer.window_set_size(Vector2i(x,y))
func set_position(x:int,y:int) -> void:
Logger.diag("wmgr","Applying new window position (X" + str(x) + " Y" + str(y) + ")")
DisplayServer.window_set_position(Vector2i(x,y))
func set_title(title:String) -> void:
Logger.diag("wmgr","Applying new window title (" + title + ")")
DisplayServer.window_set_title(title)
window_title = title
func set_mode(mode:String) -> bool:
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
func get_size() -> Vector2i:
return DisplayServer.window_get_size()
func get_position() -> Vector2i:
return DisplayServer.window_get_position()
func get_title() -> String:
return window_title
func get_mode() -> String:
match(DisplayServer.window_get_mode()):
0: return "WINDOWED"
1: return "MINIMIZED"
2: return "MAXIMIZED"
3: return "FULLSCREEN"
4: return "EXCLUSIVE_FULLSCREEN"
_:
Logger.error("wmgr","Failed to get window mode: The window mode id \"" + str(DisplayServer.window_get_mode()) + "\" is not known to CORE.")
return "INVALID_MODE"
func get_fps() -> float:
if str(delta) == "0":
return INF
else:
return 1/delta
func get_rendertime() -> float:
return Performance.get_monitor(Performance.TIME_PROCESS)
func get_delta() -> float:
return delta
func _ready() -> void:
Logger.diag("wmgr","Configuring window")
DisplayServer.window_set_size(Vector2i(window_size_x,window_size_y))
DisplayServer.window_set_min_size(Vector2i(960,540))
DisplayServer.window_set_title(window_title)
DisplayServer.window_set_mode(window_mode)
core.setready()