//-------------------------------------------------------- // [Author]: Fish // [ Date ]: Friday, October 23, 2020 //-------------------------------------------------------- using System.Collections.Generic; using System.IO; using System; using UnityEngine; namespace LaunchCommon { public class InitialFunctionConfig { public readonly string KEY; public readonly string Numerical1; public readonly string Numerical2; public readonly string Numerical3; public readonly string Numerical4; public readonly string Numerical5; public InitialFunctionConfig() { } public InitialFunctionConfig(string input) { try { var tables = input.Split('\t'); KEY = tables[0]; Numerical1 = tables[1]; Numerical2 = tables[2]; Numerical3 = tables[3]; Numerical4 = tables[4]; Numerical5 = tables[5]; } catch (Exception ex) { Debug.Log(ex); } } static Dictionary configs = new Dictionary(); public static InitialFunctionConfig Get(string id) { if (!inited) { Debug.LogError("InitialFunctionConfig 还未完成初始化。"); return null; } if (configs.ContainsKey(id)) { return configs[id]; } InitialFunctionConfig config = null; if (rawDatas.ContainsKey(id)) { config = configs[id] = new InitialFunctionConfig(rawDatas[id]); rawDatas.Remove(id); } return config; } public static InitialFunctionConfig Get(int id) { return Get(id.ToString()); } public static List GetKeys() { var keys = new List(); keys.AddRange(configs.Keys); keys.AddRange(rawDatas.Keys); return keys; } public static List GetValues() { var values = new List(); values.AddRange(configs.Values); var keys = new List(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 rawDatas = new Dictionary(); public static void Init(string content) { inited = false; configs.Clear(); using (StringReader reader = new StringReader(content)) { string line; int lineIndex = 0; while ((line = reader.ReadLine()) != null) { lineIndex++; if (lineIndex <= 3) { continue; } try { var index = line.IndexOf("\t"); if (index == -1) { continue; } var id = line.Substring(0, index); rawDatas[id] = line; } catch (System.Exception ex) { Debug.LogError(ex); } } } inited = true; Debug.Log("InitialFunctionConfig Init Finished line = " + rawDatas.Count); } } }