RapidGameFramework
Reusable Godot managers for data-driven small games
Loading...
Searching...
No Matches
build_info.gd
Go to the documentation of this file.
1extends RefCounted
2
3
6
7const DEFAULT_PATH := "res://data/build_info.json"
8const DataCacheManager = preload("res://scripts/systems/dataCacheManager/data_cache_manager.gd")
9
10var data:Dictionary = {
11 "build_date": "",
12 "channel": "local",
13 "launch_scene": "res://scenes/start_menu.tscn"
14}
15var data_cache_manager = DataCacheManager.new()
16
17
18
19func load_info(file_path:String = DEFAULT_PATH) -> Dictionary:
20 var parsed := data_cache_manager.load_json(file_path)
21 for key in parsed.keys():
22 data[key] = parsed[key]
23 return data.duplicate(true)
24
25
26
27func get_label(prefix:String = "Build") -> String:
28 var build_date := _resolved_build_date()
29 if build_date == "":
30 build_date = _runtime_build_date()
31 return "%s %s" % [prefix, build_date]
32
33
34
35func get_launch_scene(default_scene:String = "res://scenes/start_menu.tscn") -> String:
36 var launch_scene := str(data.get("launch_scene", default_scene))
37 if launch_scene.strip_edges() == "":
38 return default_scene
39 return launch_scene
40
41
42func get_state() -> Dictionary:
43 return data.duplicate(true)
44
45
46
47func get_cache_stats() -> Dictionary:
48 return data_cache_manager.get_cache_stats()
49
50
51func _resolved_build_date() -> String:
52 var channel := str(data.get("channel", "local"))
53 if channel == "local" or channel.begins_with("local_"):
54 return _runtime_build_date()
55 return str(data.get("build_date", _runtime_build_date()))
56
57
58func _runtime_build_date() -> String:
59 var date := Time.get_date_dict_from_system()
60 return "%04d%02d%02d" % [int(date.get("year", 0)), int(date.get("month", 0)), int(date.get("day", 0))]