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