generated from mstar/godot-template
185 lines
9 KiB
GDScript
185 lines
9 KiB
GDScript
@tool
|
|
|
|
## LoggieSystemSpecs is a helper class that defines various functions on how to access data about the local machine and its specs
|
|
## and creates displayable strings out of them.
|
|
class_name LoggieSystemSpecsMsg extends LoggieMsg
|
|
|
|
## Embeds various system specs into the content of this message.
|
|
func embed_specs() -> LoggieSystemSpecsMsg:
|
|
self.embed_system_specs()
|
|
self.embed_localization_specs()
|
|
self.embed_date_data().nl()
|
|
self.embed_hardware_specs().nl()
|
|
self.embed_video_specs().nl()
|
|
self.embed_display_specs().nl()
|
|
self.embed_audio_specs().nl()
|
|
self.embed_engine_specs().nl()
|
|
self.embed_input_specs()
|
|
return self
|
|
|
|
## Embeds essential data about the logger into the content of this message.
|
|
func embed_essential_logger_specs() -> LoggieSystemSpecsMsg:
|
|
var loggie = get_logger()
|
|
self.add(loggie.msg("|\t Is in Production:").bold(), loggie.is_in_production()).nl()
|
|
self.add(loggie.msg("|\t Terminal Mode:").bold(), LoggieEnums.TerminalMode.keys()[loggie.settings.terminal_mode]).nl()
|
|
self.add(loggie.msg("|\t Log Level:").bold(), LoggieEnums.LogLevel.keys()[loggie.settings.log_level]).nl()
|
|
return self
|
|
|
|
## Embeds advanced data about the logger into the content of this message.
|
|
func embed_advanced_logger_specs() -> LoggieSystemSpecsMsg:
|
|
var loggie = get_logger()
|
|
|
|
self.add(loggie.msg("|\t Is in Production:").bold(), loggie.is_in_production()).nl()
|
|
|
|
var settings_dict = loggie.settings.to_dict()
|
|
for setting_var_name : String in settings_dict.keys():
|
|
var setting_value = settings_dict[setting_var_name]
|
|
var content_to_print = setting_value
|
|
|
|
match setting_var_name:
|
|
"terminal_mode":
|
|
content_to_print = LoggieEnums.TerminalMode.keys()[setting_value]
|
|
"log_level":
|
|
content_to_print = LoggieEnums.LogLevel.keys()[setting_value]
|
|
"box_characters_mode":
|
|
content_to_print = LoggieEnums.BoxCharactersMode.keys()[setting_value]
|
|
|
|
self.add(loggie.msg("|\t", setting_var_name.capitalize(), ":").bold(), content_to_print).nl()
|
|
|
|
return self
|
|
|
|
## Adds data about the user's software to the content of this message.
|
|
func embed_system_specs() -> LoggieSystemSpecsMsg:
|
|
var loggie = get_logger()
|
|
var header = loggie.msg("Operating System: ").color(Color.ORANGE).add(OS.get_name()).box(4)
|
|
self.add(header)
|
|
return self
|
|
|
|
## Adds data about localization to the content of this message.
|
|
func embed_localization_specs() -> LoggieSystemSpecsMsg:
|
|
var loggie = get_logger()
|
|
var header = loggie.msg("Localization: ").color(Color.ORANGE).add(OS.get_locale()).box(7)
|
|
self.add(header)
|
|
return self
|
|
|
|
## Adds data about the current date/time to the content of this message.
|
|
func embed_date_data() -> LoggieSystemSpecsMsg:
|
|
var loggie = get_logger()
|
|
var header = loggie.msg("Date").color(Color.ORANGE).box(15)
|
|
self.add(header)
|
|
self.add(loggie.msg("Date and time (local):").bold(), Time.get_datetime_string_from_system(false, true)).nl()
|
|
self.add(loggie.msg("Date and time (UTC):").bold(), Time.get_datetime_string_from_system(true, true)).nl()
|
|
self.add(loggie.msg("Date (local):").bold(), Time.get_date_string_from_system(false)).nl()
|
|
self.add(loggie.msg("Date (UTC):").bold(), Time.get_date_string_from_system(true)).nl()
|
|
self.add(loggie.msg("Time (local):").bold(), Time.get_time_string_from_system(false)).nl()
|
|
self.add(loggie.msg("Time (UTC):").bold(), Time.get_time_string_from_system(true)).nl()
|
|
self.add(loggie.msg("Timezone:").bold(), Time.get_time_zone_from_system()).nl()
|
|
self.add(loggie.msg("UNIX time:").bold(), Time.get_unix_time_from_system()).nl()
|
|
return self
|
|
|
|
## Adds data about the user's hardware to the content of this message.
|
|
func embed_hardware_specs() -> LoggieSystemSpecsMsg:
|
|
var loggie = get_logger()
|
|
var header = loggie.msg("Hardware").color(Color.ORANGE).box(13)
|
|
self.add(header)
|
|
self.add(loggie.msg("Model name:").bold(), OS.get_model_name()).nl()
|
|
self.add(loggie.msg("Processor name:").bold(), OS.get_processor_name()).nl()
|
|
return self
|
|
|
|
## Adds data about the video system to the content of this message.
|
|
func embed_video_specs() -> LoggieSystemSpecsMsg:
|
|
const adapter_type_to_string = ["Other (Unknown)", "Integrated", "Discrete", "Virtual", "CPU"]
|
|
var adapter_type_string = adapter_type_to_string[RenderingServer.get_video_adapter_type()]
|
|
var video_adapter_driver_info = OS.get_video_adapter_driver_info()
|
|
var loggie = get_logger()
|
|
|
|
var header = loggie.msg("Video").color(Color.ORANGE).box(15)
|
|
self.add(header)
|
|
self.add(loggie.msg("Adapter name:").bold(), RenderingServer.get_video_adapter_name()).nl()
|
|
self.add(loggie.msg("Adapter vendor:").bold(), RenderingServer.get_video_adapter_vendor()).nl()
|
|
self.add(loggie.msg("Adapter type:").bold(), adapter_type_string).nl()
|
|
self.add(loggie.msg("Adapter graphics API version:").bold(), RenderingServer.get_video_adapter_api_version()).nl()
|
|
|
|
if video_adapter_driver_info.size() > 0:
|
|
self.add(loggie.msg("Adapter driver name:").bold(), video_adapter_driver_info[0]).nl()
|
|
if video_adapter_driver_info.size() > 1:
|
|
self.add(loggie.msg("Adapter driver version:").bold(), video_adapter_driver_info[1]).nl()
|
|
|
|
return self
|
|
|
|
## Adds data about the display to the content of this message.
|
|
func embed_display_specs() -> LoggieSystemSpecsMsg:
|
|
const screen_orientation_to_string = [
|
|
"Landscape",
|
|
"Portrait",
|
|
"Landscape (reverse)",
|
|
"Portrait (reverse)",
|
|
"Landscape (defined by sensor)",
|
|
"Portrait (defined by sensor)",
|
|
"Defined by sensor",
|
|
]
|
|
var screen_orientation_string = screen_orientation_to_string[DisplayServer.screen_get_orientation()]
|
|
var loggie = get_logger()
|
|
|
|
var header = loggie.msg("Display").color(Color.ORANGE).box(13)
|
|
self.add(header)
|
|
self.add(loggie.msg("Screen count:").bold(), DisplayServer.get_screen_count()).nl()
|
|
self.add(loggie.msg("DPI:").bold(), DisplayServer.screen_get_dpi()).nl()
|
|
self.add(loggie.msg("Scale factor:").bold(), DisplayServer.screen_get_scale()).nl()
|
|
self.add(loggie.msg("Maximum scale factor:").bold(), DisplayServer.screen_get_max_scale()).nl()
|
|
self.add(loggie.msg("Startup screen position:").bold(), DisplayServer.screen_get_position()).nl()
|
|
self.add(loggie.msg("Startup screen size:").bold(), DisplayServer.screen_get_size()).nl()
|
|
self.add(loggie.msg("Startup screen refresh rate:").bold(), ("%f Hz" % DisplayServer.screen_get_refresh_rate()) if DisplayServer.screen_get_refresh_rate() > 0.0 else "").nl()
|
|
self.add(loggie.msg("Usable (safe) area rectangle:").bold(), DisplayServer.get_display_safe_area()).nl()
|
|
self.add(loggie.msg("Screen orientation:").bold(), screen_orientation_string).nl()
|
|
return self
|
|
|
|
## Adds data about the audio system to the content of this message.
|
|
func embed_audio_specs() -> LoggieSystemSpecsMsg:
|
|
var loggie = get_logger()
|
|
var header = loggie.msg("Audio").color(Color.ORANGE).box(14)
|
|
self.add(header)
|
|
self.add(loggie.msg("Mix rate:").bold(), "%d Hz" % AudioServer.get_mix_rate()).nl()
|
|
self.add(loggie.msg("Output latency:").bold(), "%f ms" % (AudioServer.get_output_latency() * 1000)).nl()
|
|
self.add(loggie.msg("Output device list:").bold(), ", ".join(AudioServer.get_output_device_list())).nl()
|
|
self.add(loggie.msg("Capture device list:").bold(), ", ".join(AudioServer.get_input_device_list())).nl()
|
|
return self
|
|
|
|
## Adds data about the godot engine to the content of this message.
|
|
func embed_engine_specs() -> LoggieSystemSpecsMsg:
|
|
var loggie = get_logger()
|
|
var header = loggie.msg("Engine").color(Color.ORANGE).box(14)
|
|
self.add(header)
|
|
self.add(loggie.msg("Version:").bold(), Engine.get_version_info()["string"]).nl()
|
|
self.add(loggie.msg("Command-line arguments:").bold(), str(OS.get_cmdline_args())).nl()
|
|
self.add(loggie.msg("Is debug build:").bold(), OS.is_debug_build()).nl()
|
|
self.add(loggie.msg("Filesystem is persistent:").bold(), OS.is_userfs_persistent()).nl()
|
|
return self
|
|
|
|
## Adds data about the input device to the content of this message.
|
|
func embed_input_specs() -> LoggieSystemSpecsMsg:
|
|
var has_virtual_keyboard = DisplayServer.has_feature(DisplayServer.FEATURE_VIRTUAL_KEYBOARD)
|
|
var loggie = get_logger()
|
|
|
|
var header = loggie.msg("Input").color(Color.ORANGE).box(14)
|
|
self.add(header)
|
|
self.add(loggie.msg("Device has touch screen:").bold(), DisplayServer.is_touchscreen_available()).nl()
|
|
self.add(loggie.msg("Device has virtual keyboard:").bold(), has_virtual_keyboard).nl()
|
|
|
|
if has_virtual_keyboard:
|
|
self.add(loggie.msg("Virtual keyboard height:").bold(), DisplayServer.virtual_keyboard_get_height())
|
|
|
|
return self
|
|
|
|
## Prints out a bunch of useful data about a given script.
|
|
## Useful for debugging.
|
|
func embed_script_data(script : Script):
|
|
var loggie = get_logger()
|
|
self.add("Script Data for:", script.get_path()).color("pink")
|
|
self.add(":").nl()
|
|
self.add(loggie.msg("get_class(): ").color("slate_blue").bold()).add(script.get_class()).nl()
|
|
self.add(loggie.msg("get_global_name(): ").color("slate_blue").bold()).add(script.get_global_name()).nl()
|
|
self.add(loggie.msg("get_base_script(): ").color("slate_blue").bold()).add(script.get_base_script().resource_path if script.get_base_script() != null else "No base script.").nl()
|
|
self.add(loggie.msg("get_instance_base_type(): ").color("slate_blue").bold()).add(script.get_instance_base_type()).nl()
|
|
self.add(loggie.msg("get_script_property_list(): ").color("slate_blue").bold()).add(script.get_script_property_list()).nl()
|
|
return self
|