少年修仙传客户端基础资源
client_Wu Xijin
2019-02-13 ff7f4155ae99f589691b929f959caf5f284cfe12
Assets/Editor/ScriptTemplate/ConfigDataTemplate.txt
@@ -1,37 +1,142 @@
//--------------------------------------------------------
//    [Author]:         第二世界
//    [  Date ]:         #DateTime#
//    [Author]:           Fish
//    [  Date ]:           #DateTime#
//--------------------------------------------------------
using UnityEngine;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System;
using UnityEngine;
namespace TableConfig {
public partial class #ClassName#
{
   public partial class #ClassName# : ConfigBase {
    #Field#
      #Field#
      public override string getKey()
    public #ClassName#(string input)
    {
        try
        {
            return #PrimaryKey#.ToString();
            var tables = input.Split('\t');
            #Read#
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
    static Dictionary<string, #ClassName#> configs = new Dictionary<string, #ClassName#>();
    public static #ClassName# Get(string id)
    {
      if (!inited)
        {
            Debug.Log("#ClassName# 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
      public override void Parse(string rawContent) {
         try
            {
                var contents = rawContent.Split('\t');
        #ClassName# config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new #ClassName#(rawDatas[id]);
            rawDatas.Remove(id);
        }
                #Read#
            }
            catch (Exception ex)
        return config;
    }
   public static #ClassName# Get(int id)
    {
        return Get(id.ToString());
    }
    public static List<string> GetKeys()
    {
        var keys = new List<string>();
        keys.AddRange(configs.Keys);
        keys.AddRange(rawDatas.Keys);
        return keys;
    }
    public static List<#ClassName#> GetValues()
    {
        var values = new List<#ClassName#>();
        values.AddRange(configs.Values);
        var keys = new List<string>(rawDatas.Keys);
        foreach (var key in keys)
        {
            values.Add(Get(key));
        }
        return values;
    }
   public static bool Has(string id)
    {
        return configs.ContainsKey(id) || rawDatas.ContainsKey(id);
    }
   public static bool Has(int id)
    {
        return Has(id.ToString());
    }
   public static bool inited { get; private set; }
    protected static Dictionary<string, string> rawDatas = null;
    public static void Init(bool sync=false)
    {
       inited = false;
      var path = string.Empty;
        if (AssetSource.refdataFromEditor)
        {
            path = ResourcesPath.CONFIG_FODLER +"/#FileName#.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/#FileName#.txt");
        }
        if (sync)
        {
            var lines = File.ReadAllLines(path);
            rawDatas = new Dictionary<string, string>(lines.Length - 3);
            for (int i = 3; i < lines.Length; i++)
            {
                DebugEx.Log(ex);
                var line = lines[i];
                var index = line.IndexOf("\t");
                var id = line.Substring(0, index);
                rawDatas[id] = line;
            }
      }
   }
         inited = true;
        }
        else
        {
            ThreadPool.QueueUserWorkItem((object _object) =>
            {
                var lines = File.ReadAllLines(path);
                rawDatas = new Dictionary<string, string>(lines.Length - 3);
                for (int i = 3; i < lines.Length; i++)
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    var id = line.Substring(0, index);
                    rawDatas[id] = line;
                }
                inited = true;
            });
        }
    }
}