From 8d06932ebf186837e048da4822bd837dbf90e212 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期日, 28 四月 2019 10:33:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into ViewOtherPlayer

---
 Core/GameEngine/Model/Config/ContinueSignInConfig.cs |  253 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 206 insertions(+), 47 deletions(-)

diff --git a/Core/GameEngine/Model/Config/ContinueSignInConfig.cs b/Core/GameEngine/Model/Config/ContinueSignInConfig.cs
index 3e6622b..a01b832 100644
--- a/Core/GameEngine/Model/Config/ContinueSignInConfig.cs
+++ b/Core/GameEngine/Model/Config/ContinueSignInConfig.cs
@@ -1,64 +1,223 @@
 锘�//--------------------------------------------------------
-//    [Author]:			绗簩涓栫晫
-//    [  Date ]:		   Tuesday, February 12, 2019
+//    [Author]:           Fish
+//    [  Date ]:           Thursday, February 14, 2019
 //--------------------------------------------------------
 
-using UnityEngine;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading;
 using System;
+using UnityEngine;
 
-namespace TableConfig {
+[XLua.LuaCallCSharp]
+public partial class ContinueSignInConfig
+{
 
-    
-	public partial class ContinueSignInConfig : ConfigBase {
+    public readonly int ContineDay;
+	public readonly int[] ItemID;
+	public readonly int IsBind;
+	public readonly int[] ItemNum;
+	public readonly int[] JobItemList;
 
-		public int ContineDay;
-		public int[] ItemID;
-		public int IsBind;
-		public int[] ItemNum;
-		public int[] JobItemList;
+	public ContinueSignInConfig()
+    {
+    }
 
-		public override string getKey()
+    public ContinueSignInConfig(string input)
+    {
+        try
         {
-            return ContineDay.ToString();
+            var tables = input.Split('\t');
+
+            int.TryParse(tables[0],out ContineDay); 
+
+			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); 
+
+			string[] ItemNumStringArray = tables[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+			ItemNum = new int[ItemNumStringArray.Length];
+			for (int i=0;i<ItemNumStringArray.Length;i++)
+			{
+				 int.TryParse(ItemNumStringArray[i],out ItemNum[i]);
+			}
+
+			string[] JobItemListStringArray = tables[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+			JobItemList = new int[JobItemListStringArray.Length];
+			for (int i=0;i<JobItemListStringArray.Length;i++)
+			{
+				 int.TryParse(JobItemListStringArray[i],out JobItemList[i]);
+			}
+        }
+        catch (Exception ex)
+        {
+            DebugEx.Log(ex);
+        }
+    }
+
+    static Dictionary<string, ContinueSignInConfig> configs = new Dictionary<string, ContinueSignInConfig>();
+    public static ContinueSignInConfig Get(string id)
+    {   
+		if (!inited)
+        {
+            Debug.Log("ContinueSignInConfig 杩樻湭瀹屾垚鍒濆鍖栥��");
+            return null;
+        }
+		
+        if (configs.ContainsKey(id))
+        {
+            return configs[id];
         }
 
-		public override void Parse(string content) {
-			try
-            {
-                var contents = content.Split('\t');
+        ContinueSignInConfig config = null;
+        if (rawDatas.ContainsKey(id))
+        {
+            config = configs[id] = new ContinueSignInConfig(rawDatas[id]);
+            rawDatas.Remove(id);
+        }
 
-                int.TryParse(contents[0],out ContineDay);
-			
-				var ItemIDStringArray = contents[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(contents[2],out IsBind);
-			
-				var ItemNumStringArray = contents[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
-				ItemNum = new int[ItemNumStringArray.Length];
-				for (int i=0;i<ItemNumStringArray.Length;i++)
-				{
-					 int.TryParse(ItemNumStringArray[i],out ItemNum[i]);
-				}
-			
-				var JobItemListStringArray = contents[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
-				JobItemList = new int[JobItemListStringArray.Length];
-				for (int i=0;i<JobItemListStringArray.Length;i++)
-				{
-					 int.TryParse(JobItemListStringArray[i],out JobItemList[i]);
-				}
-            }
-            catch (Exception ex)
+        return config;
+    }
+
+	public static ContinueSignInConfig 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<ContinueSignInConfig> GetValues()
+    {
+        var values = new List<ContinueSignInConfig>();
+        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 = new Dictionary<string, string>();
+    public static void Init(bool sync=false)
+    {
+	    inited = false;
+		var path = string.Empty;
+        if (AssetSource.refdataFromEditor)
+        {
+            path = ResourcesPath.CONFIG_FODLER +"/ContinueSignIn.txt";
+        }
+        else
+        {
+            path = AssetVersionUtility.GetAssetFilePath("config/ContinueSignIn.txt");
+        }
+
+		var tempConfig = new ContinueSignInConfig();
+        var preParse = tempConfig is IConfigPostProcess;
+
+        if (sync)
+        {
+            var lines = File.ReadAllLines(path);
+            if (!preParse)
             {
-                DebugEx.Log(ex);
+                rawDatas = new Dictionary<string, string>(lines.Length - 3);
             }
-		}
-	
-	}
+            for (int i = 3; i < lines.Length; i++)
+            {
+				try 
+				{
+					var line = lines[i];
+					var index = line.IndexOf("\t");
+					if (index == -1)
+					{
+						continue;
+					}
+					var id = line.Substring(0, index);
+
+					if (preParse)
+					{
+						var config = new ContinueSignInConfig(line);
+						configs[id] = config;
+						(config as IConfigPostProcess).OnConfigParseCompleted();
+					}
+					else
+					{
+						rawDatas[id] = line;
+					}
+				}
+				catch (System.Exception ex)
+                {
+                    Debug.LogError(ex);
+                }
+            }
+			inited = true;
+        }
+        else
+        {
+            ThreadPool.QueueUserWorkItem((object _object) =>
+            {
+                var lines = File.ReadAllLines(path);
+				if (!preParse)
+				{
+					rawDatas = new Dictionary<string, string>(lines.Length - 3);
+				}
+                for (int i = 3; i < lines.Length; i++)
+                {
+					try 
+					{
+					   var line = lines[i];
+						var index = line.IndexOf("\t");
+						if (index == -1)
+						{
+							continue;
+						}
+						var id = line.Substring(0, index);
+
+						if (preParse)
+						{
+							var config = new ContinueSignInConfig(line);
+							configs[id] = config;
+							(config as IConfigPostProcess).OnConfigParseCompleted();
+						}
+						else
+						{
+							rawDatas[id] = line;
+						}
+					}
+					catch (System.Exception ex)
+                    {
+                        Debug.LogError(ex);
+                    }
+                }
+
+                inited = true;
+            });
+        }
+    }
 
 }
 

--
Gitblit v1.8.0