少年修仙传客户端代码仓库
client_Wu Xijin
2019-02-13 22b191d1a96e30596fa251437e2af6080d56acac
Core/GameEngine/Model/Config/SignInConfig.cs
@@ -1,60 +1,137 @@
//--------------------------------------------------------
//    [Author]:         第二世界
//    [  Date ]:         Saturday, January 06, 2018
//    [Author]:           Fish
//    [  Date ]:           Wednesday, February 13, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System;
using UnityEngine;
namespace TableConfig {
public partial class SignInConfig
{
   public partial class SignInConfig : ConfigBase {
    public readonly int RewardID;
   public readonly int[] ItemID;
   public readonly int IsBind;
   public readonly int VipLv;
   public readonly int[] OrdinaryNum;
   public readonly int VipMultiple;
      public int RewardID { get ; private set ; }
      public int[] ItemID;
      public int IsBind { get ; private set ; }
      public int VipLv { get ; private set ; }
      public int[] OrdinaryNum;
      public int VipMultiple { get ; private set ; }
      public override string getKey()
    public SignInConfig(string input)
    {
        try
        {
            return RewardID.ToString();
            var tables = input.Split('\t');
            int.TryParse(tables[0],out RewardID);
         string[] ItemIDStringArray = tables[1].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
         ItemID = new int[ItemIDStringArray.Length];
         for (int i=0;i<ItemIDStringArray.Length;i++)
         {
             int.TryParse(ItemIDStringArray[i],out ItemID[i]);
         }
         int.TryParse(tables[2],out IsBind);
         int.TryParse(tables[3],out VipLv);
         string[] OrdinaryNumStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
         OrdinaryNum = new int[OrdinaryNumStringArray.Length];
         for (int i=0;i<OrdinaryNumStringArray.Length;i++)
         {
             int.TryParse(OrdinaryNumStringArray[i],out OrdinaryNum[i]);
         }
         int.TryParse(tables[5],out VipMultiple);
        }
        catch (Exception ex)
        {
            DebugEx.Log(ex);
        }
    }
    static Dictionary<int, SignInConfig> configs = new Dictionary<int, SignInConfig>();
    public static SignInConfig Get(int id)
    {
      if (!inited)
        {
            Debug.Log("SignInConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
        }
      public override void Parse() {
         try
        SignInConfig config = null;
        if (rawDatas.ContainsKey(id))
        {
            config = configs[id] = new SignInConfig(rawDatas[id]);
            rawDatas.Remove(id);
        }
        return config;
    }
   public static bool Has(int id)
    {
        return configs.ContainsKey(id) || rawDatas.ContainsKey(id);
    }
   public static bool inited { get; private set; }
    protected static Dictionary<int, string> rawDatas = null;
    public static void Init(bool sync=false)
    {
       inited = false;
      var path = string.Empty;
        if (AssetSource.refdataFromEditor)
        {
            path = ResourcesPath.CONFIG_FODLER +"/SignIn.txt";
        }
        else
        {
            path = AssetVersionUtility.GetAssetFilePath("config/SignIn.txt");
        }
        if (sync)
        {
            var lines = File.ReadAllLines(path);
            rawDatas = new Dictionary<int, string>(lines.Length - 3);
            for (int i = 3; i < lines.Length; i++)
            {
                RewardID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0;
            string[] ItemIDStringArray = rawContents[1].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            ItemID = new int[ItemIDStringArray.Length];
            for (int i=0;i<ItemIDStringArray.Length;i++)
            {
                int.TryParse(ItemIDStringArray[i],out ItemID[i]);
            }
            IsBind=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0;
            VipLv=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0;
            string[] OrdinaryNumStringArray = rawContents[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            OrdinaryNum = new int[OrdinaryNumStringArray.Length];
            for (int i=0;i<OrdinaryNumStringArray.Length;i++)
            {
                int.TryParse(OrdinaryNumStringArray[i],out OrdinaryNum[i]);
            }
            VipMultiple=IsNumeric(rawContents[5]) ? int.Parse(rawContents[5]):0;
                var line = lines[i];
                var index = line.IndexOf("\t");
                var idString = line.Substring(0, index);
                var id = int.Parse(idString);
                rawDatas[id] = line;
            }
            catch (Exception ex)
         inited = true;
        }
        else
        {
            ThreadPool.QueueUserWorkItem((object _object) =>
            {
                DesignDebug.Log(ex);
            }
      }
   }
                var lines = File.ReadAllLines(path);
                rawDatas = new Dictionary<int, string>(lines.Length - 3);
                for (int i = 3; i < lines.Length; i++)
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    var idString = line.Substring(0, index);
                    var id = int.Parse(idString);
                    rawDatas[id] = line;
                }
                inited = true;
            });
        }
    }
}