Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }