CORE/events.gd
JeremyStarTM 99703cf03e CORE rewrite (#1)
Reviewed-on: StarOpenSource/core#1

Rewrote CORE and improved the startup process and startup time significantly. The documentation has been beefed up too and is now much better. Existing projects may need major refactoring however.
Co-authored-by: JeremyStarTM <jeremystartm@staropensource.de>
Co-committed-by: JeremyStarTM <jeremystartm@staropensource.de>
2023-08-25 14:34:57 +02:00

95 lines
3.8 KiB
GDScript

######################################
# THE CORE FRAMEWORK #
# MADE BY THE STAROPENSOURCE PROJECT #
# AND CONTRIBUTERS (THANK YOU!) #
# #
# COPYRIGHT 2023 THE STAROPENSOURCE #
# PROJECT AND CONTRIBUTERS #
# #
# LICENSED UNDER THE GNU GENERAL #
# PUBLIC LICENSE VERSION 3 (ONLY) #
######################################
extends Node
# CORE modules
var core: Node = null
var logger: Node = null
# Used for checking if any values have changed
var prev_window_title: String = ""
var prev_window_size_x: int = 0
var prev_window_size_y: int = 0
var prev_window_pos_x: int = 0
var prev_window_pos_y: int = 0
# Event signals
signal window_title
signal window_size
signal window_pos
signal logger_all
signal logger_diag
signal logger_info
signal logger_warn
signal logger_error
# Set up connection between logger's logevent and logger_update()
func initialize() -> void:
if core.protection_mode: return
# logevent (signal) -> logger_update()
logger.connect("logevent",Callable(self,"logger_update"))
func logger_update(type:String,script:String,message:String,_logmessage:String) -> void:
if core.protection_mode: return
# Emit signal logger_all for all log messages
emit_signal("logger_all",type,script,message)
# Check for log type and emit the right signal
if type == "DIAG":
emit_signal("logger_diag",script,message)
elif type == "INFO":
emit_signal("logger_info",script,message)
elif type == "WARN":
emit_signal("logger_warn",script,message)
elif type == "ERR!":
emit_signal("logger_error",script,message)
else:
core.exception("events","The log type \"" + type + "\" is not known to events.gd")
# Check various variables and emit signals if they changed
func _process(_delta:float) -> void:
process_window_title()
process_window_size()
process_window_pos()
func process_window_title() -> void:
var new_window_title: String = get_tree().root.title
if prev_window_title != new_window_title:
emit_signal("window_title",new_window_title,prev_window_title)
prev_window_title = new_window_title
func process_window_size() -> void:
var new_window_size_x: int = DisplayServer.window_get_size().x
var new_window_size_y: int = DisplayServer.window_get_size().y
if new_window_size_x != prev_window_size_x and new_window_size_y != prev_window_size_y:
emit_signal("window_size","BOTH",Vector2i(new_window_size_x,new_window_size_y),Vector2i(prev_window_size_x,prev_window_size_y))
prev_window_size_x = new_window_size_x
prev_window_size_y = new_window_size_y
elif new_window_size_x != prev_window_size_x:
emit_signal("window_size","X",Vector2i(new_window_size_x,new_window_size_y),Vector2i(prev_window_size_x,prev_window_size_y))
prev_window_size_x = new_window_size_x
elif new_window_size_y != prev_window_size_y:
emit_signal("window_size","Y",Vector2i(new_window_size_x,new_window_size_y),Vector2i(prev_window_size_x,prev_window_size_y))
prev_window_size_y = new_window_size_y
func process_window_pos() -> void:
var new_window_pos_x: int = DisplayServer.window_get_position().x
var new_window_pos_y: int = DisplayServer.window_get_position().y
if new_window_pos_x != prev_window_pos_x and new_window_pos_y != prev_window_pos_y:
emit_signal("window_pos","BOTH",Vector2i(new_window_pos_x,new_window_pos_y),Vector2i(prev_window_pos_x,prev_window_pos_y))
prev_window_pos_x = new_window_pos_x
prev_window_pos_y = new_window_pos_y
elif new_window_pos_x != prev_window_pos_x:
emit_signal("window_pos","X",Vector2i(new_window_pos_x,new_window_pos_y),Vector2i(prev_window_pos_x,prev_window_pos_y))
prev_window_pos_x = new_window_pos_x
elif new_window_pos_y != prev_window_pos_y:
emit_signal("window_pos","Y",Vector2i(new_window_pos_x,new_window_pos_y),Vector2i(prev_window_pos_x,prev_window_pos_y))
prev_window_pos_y = new_window_pos_y