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 |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 101 insertions(+), 17 deletions(-)

diff --git a/Core/GameEngine/Model/Config/ContinueSignInConfig.cs b/Core/GameEngine/Model/Config/ContinueSignInConfig.cs
index e230f38..a01b832 100644
--- a/Core/GameEngine/Model/Config/ContinueSignInConfig.cs
+++ b/Core/GameEngine/Model/Config/ContinueSignInConfig.cs
@@ -1,6 +1,6 @@
 锘�//--------------------------------------------------------
 //    [Author]:           Fish
-//    [  Date ]:           Wednesday, February 13, 2019
+//    [  Date ]:           Thursday, February 14, 2019
 //--------------------------------------------------------
 
 using System.Collections.Generic;
@@ -9,6 +9,7 @@
 using System;
 using UnityEngine;
 
+[XLua.LuaCallCSharp]
 public partial class ContinueSignInConfig
 {
 
@@ -17,6 +18,10 @@
 	public readonly int IsBind;
 	public readonly int[] ItemNum;
 	public readonly int[] JobItemList;
+
+	public ContinueSignInConfig()
+    {
+    }
 
     public ContinueSignInConfig(string input)
     {
@@ -55,8 +60,8 @@
         }
     }
 
-    static Dictionary<int, ContinueSignInConfig> configs = new Dictionary<int, ContinueSignInConfig>();
-    public static ContinueSignInConfig Get(int id)
+    static Dictionary<string, ContinueSignInConfig> configs = new Dictionary<string, ContinueSignInConfig>();
+    public static ContinueSignInConfig Get(string id)
     {   
 		if (!inited)
         {
@@ -79,13 +84,45 @@
         return config;
     }
 
-	public static bool Has(int id)
+	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<int, string> rawDatas = null;
+    protected static Dictionary<string, string> rawDatas = new Dictionary<string, string>();
     public static void Init(bool sync=false)
     {
 	    inited = false;
@@ -99,18 +136,43 @@
             path = AssetVersionUtility.GetAssetFilePath("config/ContinueSignIn.txt");
         }
 
+		var tempConfig = new ContinueSignInConfig();
+        var preParse = tempConfig is IConfigPostProcess;
+
         if (sync)
         {
             var lines = File.ReadAllLines(path);
-            rawDatas = new Dictionary<int, string>(lines.Length - 3);
+            if (!preParse)
+            {
+                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 idString = line.Substring(0, index);
-                var id = int.Parse(idString);
+				try 
+				{
+					var line = lines[i];
+					var index = line.IndexOf("\t");
+					if (index == -1)
+					{
+						continue;
+					}
+					var id = line.Substring(0, index);
 
-                rawDatas[id] = line;
+					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;
         }
@@ -119,15 +181,37 @@
             ThreadPool.QueueUserWorkItem((object _object) =>
             {
                 var lines = File.ReadAllLines(path);
-                rawDatas = new Dictionary<int, string>(lines.Length - 3);
+				if (!preParse)
+				{
+					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 idString = line.Substring(0, index);
-                    var id = int.Parse(idString);
+					try 
+					{
+					   var line = lines[i];
+						var index = line.IndexOf("\t");
+						if (index == -1)
+						{
+							continue;
+						}
+						var id = line.Substring(0, index);
 
-                    rawDatas[id] = line;
+						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