public bool Load(string sheetName, CEKeyType keyType = CEKeyType.Int) { bool needLoad = true; if ((keyType == CEKeyType.String && m_SheetStringDict.ContainsKey(sheetName)) || (keyType == CEKeyType.Int && m_SheetIntDict.ContainsKey(sheetName))) { needLoad = false; } if (needLoad) { return(Parse(sheetName, keyType)); } Log.DebugFormat("[CEManager] load warning: sheet {0} already loaded", sheetName); return(false); }
private bool Parse(string sheetName, CEKeyType keyType) { uint hash = BKDRHash(sheetName); try { var jsonText = Resources.Load(JSON_PATH + sheetName) as TextAsset; var jsonHt = Newtonsoft.Json.JsonConvert.DeserializeObject <Hashtable>(jsonText.text); switch (keyType) { case CEKeyType.Int: { m_SheetIntDict.Remove(sheetName); var intDict = new Dictionary <int, ICELoader>(); foreach (object jsonKey in jsonHt.Keys) { string key = jsonKey as string; string value = jsonHt[key].ToString(); var ht = Newtonsoft.Json.JsonConvert.DeserializeObject <Hashtable>(value); var loader = CEHashHelper.CreateLoaderFromHash(hash); loader.Load(ht); intDict.Add(int.Parse(key), loader); } m_SheetIntDict.Add(sheetName, intDict); } break; case CEKeyType.String: { m_SheetStringDict.Remove(sheetName); var stringDict = new Dictionary <string, ICELoader>(); foreach (object jsonKey in jsonHt.Keys) { string key = jsonKey as string; string value = jsonHt[key].ToString(); var ht = Newtonsoft.Json.JsonConvert.DeserializeObject <Hashtable>(value); var loader = CEHashHelper.CreateLoaderFromHash(hash); loader.Load(ht); stringDict.Add(key, loader); } m_SheetStringDict.Add(sheetName, stringDict); } break; default: { Log.Error("[CEManager] parse json error: unknown key type"); } return(false); } return(true); } catch (System.Exception ex) { Log.Error("[CEManager] parse json exception: " + ex); } return(false); }