thegates/app/scripts/loading/config_gate.gd
2025-08-20 00:29:40 +07:00

45 lines
1.3 KiB
GDScript

extends ConfigBase
class_name ConfigGate
const SECTION = "gate"
const KEY_TITLE = "title"
const KEY_DESCRIPTION = "description"
const KEY_ICON = "icon"
const KEY_IMAGE = "image"
const KEY_RESOURCE_PACK = "resource_pack"
const KEY_DISCOVERABLE = "discoverable"
var title: String
var description: String
var icon_url: String
var image_url: String
var resource_pack_url: String
var discoverable: bool
var libraries: PackedStringArray
func _init(path: String, base_url: String) -> void:
super._init(path)
if not SECTION in get_sections():
Debug.logclr("Invalid gate config file: don't have section " + SECTION, Color.YELLOW)
load_result = ERR_INVALID_DATA
return
title = get_string(SECTION, KEY_TITLE)
description = get_string(SECTION, KEY_DESCRIPTION)
icon_url = Url.join(base_url, get_string(SECTION, KEY_ICON))
image_url = Url.join(base_url, get_string(SECTION, KEY_IMAGE))
resource_pack_url = Url.join(base_url, get_string(SECTION, KEY_RESOURCE_PACK))
discoverable = get_value(SECTION, KEY_DISCOVERABLE, true)
libraries = get_libraries(base_url)
func get_libraries(base_url: String) -> PackedStringArray:
var unsplit_libs = GDExtension.find_extension_library("", config)
if unsplit_libs.is_empty(): return []
var libs = unsplit_libs.split(";")
for i in range(libs.size()): libs[i] = Url.join(base_url, libs[i])
return libs