using System; using LuBan.Runtime; using GameFrameX.Config.Runtime; using SimpleJSON; {{namespace_with_grace_begin __namespace}} public partial class {{__name}} { {{~for table in __tables ~}} {{~if table.comment != '' ~}} /// /// {{escape_comment table.comment}} /// {{~end~}} internal {{table.full_name}} {{format_property_name __code_style table.name}} { private set; get; } {{~end~}} private ConfigComponent m_ConfigComponent; public void Init(ConfigComponent configComponent) { m_ConfigComponent = configComponent; configComponent.RemoveAllConfigs(); } /// /// 是否加载完成 /// public bool IsLoaded { get; private set; } /// /// 异步加载配置文件 /// /// 加载器 public async System.Threading.Tasks.Task LoadAsync(System.Func> loader) { if (IsLoaded) { return; } IsLoaded = false; m_ConfigComponent.RemoveAllConfigs(); var loadTasks = new System.Collections.Generic.List(); {{~for table in __tables ~}} {{format_property_name __code_style table.name}} = new {{table.full_name}}(() => loader("{{table.output_data_file}}")); loadTasks.Add({{format_property_name __code_style table.name}}.LoadAsync()); m_ConfigComponent.Add(nameof({{table.full_name}}), {{format_property_name __code_style table.name}}); {{~end~}} await System.Threading.Tasks.Task.WhenAll(loadTasks); Refresh(); IsLoaded = true; } /// /// 设置本地化的适配器 /// /// 适配器对象 /// 如果未加载完成将抛出此异常 public void SetTranslateText(System.Func translator) { if (IsLoaded == false) { throw new InvalidOperationException("Table is not loaded!"); } {{~for table in __tables ~}} {{format_property_name __code_style table.name}}.TranslateText(translator); {{~end~}} } private void ResolveRef() { {{~for table in __tables ~}} {{format_property_name __code_style table.name}}.ResolveRef(this); {{~end~}} } public void Refresh() { PostInit(); ResolveRef(); } partial void PostInit(); } {{namespace_with_grace_end __namespace}}