From 82c40172e05905d4d85a8f9f36eef53dc08591f5 Mon Sep 17 00:00:00 2001 From: VAILLANT Jeremy Date: Thu, 13 May 2021 15:53:17 +0200 Subject: [PATCH] Load database when start game --- scenes/Global.gd | 55 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 16 deletions(-) diff --git a/scenes/Global.gd b/scenes/Global.gd index aaf685c..1022131 100644 --- a/scenes/Global.gd +++ b/scenes/Global.gd @@ -1,16 +1,17 @@ extends Control +const TICKS_TIME_MAX = 100 # msec + var current_scene = null var loader = null var wait_frames = 1 -var time_max = 100 # msec + +var database = null func _ready(): print("[global#_ready] get root scene") - var root = get_tree().get_root() - current_scene = root.get_child(root.get_child_count() - 1) - if current_scene.name != "Main": - get_node("/root/Loading").hide() + _initialize_current_scene() + _initialize_database() func goto_scene(path): print("[global#goto_scene]") @@ -41,29 +42,51 @@ func _process(_delta): var tick = OS.get_ticks_msec() - # Use "time_max" to control for how long we block this thread - while OS.get_ticks_msec() < tick + time_max: + # Use "TICKS_TIME_MAX" to control for how long we block this thread + while OS.get_ticks_msec() < tick + TICKS_TIME_MAX: var err = loader.poll() if err == ERR_FILE_EOF: # Finished loading. - var resource = loader.get_resource() - loader = null - set_new_scene(resource) - get_node("/root/Loading").hide() + _set_new_scene() break elif err == OK: - update_progress() + _update_progress() else: - print("[global#_process] Error loading") loader = null break -func update_progress(): +## PRIVATE +func _initialize_current_scene(): + var root = get_tree().get_root() + current_scene = root.get_child(root.get_child_count() - 1) + + if current_scene.name != "Main": + get_node("/root/Loading").hide() + +func _initialize_database(): + print("[global#_initialize_database]") + var database_manager = load(gddb_constants.c_addon_main_path + "core/db_man.gd").new() + var db_id = database_manager.load_database("res://db/ahog.json") + + if db_id == gddb_types.e_db_invalid_file: + print("[global#_initialize_database] Error invalid database file !") + OS.set_exit_code(1) + + if db_id == gddb_types.e_db_invalid_ver: + print("[global#_initialize_database] Error invalid database version !") + OS.set_exit_code(1) + + database = database_manager.get_db_by_id(db_id) + +func _update_progress(): print("[global#update_progress]") Loading.visible = true Loading.get_node("ColorRect/CenterContainer/VBoxContainer/ProgressBar").set_value(loader.get_stage()) -func set_new_scene(scene_resource): +func _set_new_scene(): print("[global#set_new_scene]") - current_scene = scene_resource.instance() + var resource = loader.get_resource() + loader = null + current_scene = resource.instance() get_node("/root").add_child(current_scene) + get_node("/root/Loading").hide()