JeremyStarTM
b57d00e9cd
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.
89 lines
2.7 KiB
GDScript
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()
|