add logging

This commit is contained in:
2025-09-24 11:04:16 +04:00
committed by nett00n
parent 7182c45351
commit 83cc433c2f
14 changed files with 515 additions and 42 deletions

View File

@@ -19,7 +19,7 @@ func _ready():
var orig_stream = _load_stream()
if not orig_stream:
push_error("Failed to load music stream: %s" % MUSIC_PATH)
DebugManager.log_error("Failed to load music stream: %s" % MUSIC_PATH, "AudioManager")
return
var stream = orig_stream.duplicate(true) as AudioStream

View File

@@ -2,16 +2,26 @@ extends Node
signal debug_toggled(enabled: bool)
enum LogLevel {
TRACE = 0,
DEBUG = 1,
INFO = 2,
WARN = 3,
ERROR = 4,
FATAL = 5
}
var debug_enabled: bool = false
var debug_overlay_visible: bool = false
var current_log_level: LogLevel = LogLevel.INFO
func _ready():
print("DebugManager loaded")
log_info("DebugManager loaded")
func toggle_debug():
debug_enabled = !debug_enabled
debug_toggled.emit(debug_enabled)
print("Debug mode: ", "ON" if debug_enabled else "OFF")
log_info("Debug mode: " + ("ON" if debug_enabled else "OFF"))
func set_debug_enabled(enabled: bool):
if debug_enabled != enabled:
@@ -30,6 +40,70 @@ func set_overlay_visible(visible: bool):
func is_overlay_visible() -> bool:
return debug_overlay_visible
func log_debug(message: String, category: String = "DEBUG"):
if debug_enabled:
print("[", category, "] ", message)
func set_log_level(level: LogLevel):
current_log_level = level
log_info("Log level set to: " + _log_level_to_string(level))
func get_log_level() -> LogLevel:
return current_log_level
func _should_log(level: LogLevel) -> bool:
return level >= current_log_level
func _log_level_to_string(level: LogLevel) -> String:
match level:
LogLevel.TRACE:
return "TRACE"
LogLevel.DEBUG:
return "DEBUG"
LogLevel.INFO:
return "INFO"
LogLevel.WARN:
return "WARN"
LogLevel.ERROR:
return "ERROR"
LogLevel.FATAL:
return "FATAL"
_:
return "UNKNOWN"
func _format_log_message(level: LogLevel, message: String, category: String = "") -> String:
var timestamp = Time.get_datetime_string_from_system()
var level_str = _log_level_to_string(level)
var category_str = (" [" + category + "]") if category != "" else ""
return "[%s] %s%s: %s" % [timestamp, level_str, category_str, message]
func log_trace(message: String, category: String = ""):
if _should_log(LogLevel.TRACE):
var formatted = _format_log_message(LogLevel.TRACE, message, category)
if debug_enabled:
print(formatted)
func log_debug(message: String, category: String = ""):
if _should_log(LogLevel.DEBUG):
var formatted = _format_log_message(LogLevel.DEBUG, message, category)
if debug_enabled:
print(formatted)
func log_info(message: String, category: String = ""):
if _should_log(LogLevel.INFO):
var formatted = _format_log_message(LogLevel.INFO, message, category)
print(formatted)
func log_warn(message: String, category: String = ""):
if _should_log(LogLevel.WARN):
var formatted = _format_log_message(LogLevel.WARN, message, category)
print(formatted)
push_warning(formatted)
func log_error(message: String, category: String = ""):
if _should_log(LogLevel.ERROR):
var formatted = _format_log_message(LogLevel.ERROR, message, category)
print(formatted)
push_error(formatted)
func log_fatal(message: String, category: String = ""):
if _should_log(LogLevel.FATAL):
var formatted = _format_log_message(LogLevel.FATAL, message, category)
print(formatted)
push_error(formatted)

View File

@@ -18,7 +18,7 @@ func start_game_with_mode(gameplay_mode: String) -> void:
pending_gameplay_mode = gameplay_mode
var packed_scene := load(GAME_SCENE_PATH)
if not packed_scene or not packed_scene is PackedScene:
push_error("Failed to load Game scene at: %s" % GAME_SCENE_PATH)
DebugManager.log_error("Failed to load Game scene at: %s" % GAME_SCENE_PATH, "GameManager")
return
get_tree().change_scene_to_packed(packed_scene)
# Wait one frame for the scene to be ready, then set gameplay mode
@@ -27,14 +27,13 @@ func start_game_with_mode(gameplay_mode: String) -> void:
get_tree().current_scene.set_gameplay_mode(pending_gameplay_mode)
func save_game() -> void:
print("Game saved (mock)")
DebugManager.log_info("Game saved (mock)", "GameManager")
func exit_to_main_menu() -> void:
print("GameManager: Attempting to exit to main menu")
DebugManager.log_info("Attempting to exit to main menu", "GameManager")
var packed_scene := load(MAIN_SCENE_PATH)
if not packed_scene or not packed_scene is PackedScene:
push_error("Failed to load Main scene at: %s" % MAIN_SCENE_PATH)
DebugManager.log_error("Failed to load Main scene at: %s" % MAIN_SCENE_PATH, "GameManager")
return
print("GameManager: Loading main scene")
DebugManager.log_info("Loading main scene", "GameManager")
get_tree().change_scene_to_packed(packed_scene)

View File

@@ -18,7 +18,7 @@ var default_settings = {
var languages_data = {}
func _ready():
print("SettingsManager ready")
DebugManager.log_info("SettingsManager ready", "SettingsManager")
load_languages()
load_settings()
@@ -27,10 +27,10 @@ func load_settings():
if config.load(SETTINGS_FILE) == OK:
for key in default_settings.keys():
settings[key] = config.get_value("settings", key, default_settings[key])
print("Settings loaded: ", settings)
DebugManager.log_info("Settings loaded: " + str(settings), "SettingsManager")
else:
print("No settings file found, using defaults")
print("Language is set to: ", settings["language"])
DebugManager.log_warn("No settings file found, using defaults", "SettingsManager")
DebugManager.log_info("Language is set to: " + str(settings["language"]), "SettingsManager")
TranslationServer.set_locale(settings["language"])
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear_to_db(settings["master_volume"]))
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Music"), linear_to_db(settings["music_volume"]))
@@ -42,7 +42,7 @@ func save_settings():
for key in settings.keys():
config.set_value("settings", key, settings[key])
config.save(SETTINGS_FILE)
print("Settings saved: ", settings)
DebugManager.log_info("Settings saved: " + str(settings), "SettingsManager")
func get_setting(key: String):
return settings.get(key)
@@ -65,7 +65,7 @@ func _apply_setting_side_effect(key: String, value) -> void:
func load_languages():
var file = FileAccess.open(LANGUAGES_JSON_PATH, FileAccess.READ)
if not file:
print("Could not open languages.json")
DebugManager.log_error("Could not open languages.json", "SettingsManager")
return
var json_string = file.get_as_text()
@@ -73,12 +73,12 @@ func load_languages():
var json = JSON.new()
if json.parse(json_string) != OK:
print("Error parsing languages.json")
DebugManager.log_error("Error parsing languages.json", "SettingsManager")
return
languages_data = json.data
if languages_data.has("languages"):
print("Languages loaded: ", languages_data.languages.keys())
DebugManager.log_info("Languages loaded: " + str(languages_data.languages.keys()), "SettingsManager")
func get_languages_data():
return languages_data