예제 #1
0
        public void LoadHashes()
        {
            mHashes.Clear();

            var temp = string.Format("{0}/hashes.hsh", mOutPath);

            if (!File.Exists(temp))
            {
                return;
            }

            var data = File.ReadAllText(temp);

            if (string.IsNullOrEmpty(data))
            {
                Debug.LogError("Invalid data.");
                return;
            }

            var json = new JsonUnity(data);

            if (json == null)
            {
                Debug.LogError("Failed to create a json.");
                return;
            }

            temp = json.GetError();
            if (!string.IsNullOrEmpty(temp))
            {
                Debug.LogError(temp);
                return;
            }

            var key   = "Hashes";
            var array = json.GetArrayWithKey(key);

            if (array == null)
            {
                Debug.LogError("Failed to get the Hashes.");
                return;
            }

            var subKey        = string.Empty;
            var keyString     = "key";
            var subKeyString  = "subKey";
            var fileKeyString = "Files";
            var hashKeyString = "Hash";
            var hashstring    = string.Empty;

            JsonObject obj    = null;
            JsonObject subObj = null;
            JsonArray  sub    = null;
            FileHash   file   = null;
            HashInfo   hash   = null;
            Dictionary <string, FileHash> files = new Dictionary <string, FileHash>();

            for (var i = default(int); i < array.GetCount(); ++i)
            {
                files.Clear();

                obj = array.GetObjectWithIndex(i);
                key = obj.GetValueWithKey(keyString);
                sub = obj.GetArrayWithKey(fileKeyString);

                for (var j = default(int); j < sub.GetCount(); ++j)
                {
                    subObj     = sub.GetObjectWithIndex(j);
                    subKey     = subObj.GetValueWithKey(subKeyString);
                    hashstring = subObj.GetValueWithKey(hashKeyString);
                    file       = new FileHash(subKey, hashstring);

                    files.Add(subKey, file);
                    Debug.Log(subKey);
                }

                hash = new HashInfo(HashInfo.NOT_CHANGED, key, files);

                mHashes.Add(key, hash);
            }

            Debug.Log("Load hashes complete.");
        }
예제 #2
0
        public static JsonValueBase ParseValueFromReader(ref JsonReader reader)
        {
            if (reader == null)
            {
                Debug.LogError("Invalid json reader.");
                return(null);
            }

            reader.Read();

            JsonValueBase valueBase = null;

            switch (reader.Token)
            {
            case JsonToken.ObjectStart:
            {
                JsonObject obj = new JsonObject();
                obj.Parse(ref reader);
                valueBase = obj;
            }
            break;

            case JsonToken.ArrayStart:
            {
                JsonArray array = new JsonArray();
                array.Parse(ref reader);
                valueBase = array;
            }
            break;

            case JsonToken.Boolean:
            {
                JsonValue value = new JsonValue(JsonValueType.Boolean);
                value.SetValue(reader.Value.ToString());
                valueBase = value;
            }
            break;

            case JsonToken.Double:
            {
                JsonValue value = new JsonValue(JsonValueType.Double);
                value.SetValue(reader.Value.ToString());
                valueBase = value;
            }
            break;

            case JsonToken.Int:
            {
                JsonValue value = new JsonValue(JsonValueType.Int);
                value.SetValue(reader.Value.ToString());
                valueBase = value;
            }
            break;

            case JsonToken.Long:
            {
                JsonValue value = new JsonValue(JsonValueType.Long);
                value.SetValue(reader.Value.ToString());
                valueBase = value;
            }
            break;

            case JsonToken.None:
            {
                JsonValue value = new JsonValue(JsonValueType.None);
                value.SetValue(string.Empty);
                valueBase = value;
            }
            break;

            case JsonToken.Null:
            {
                JsonValue value = new JsonValue(JsonValueType.Null);
                value.SetValue(string.Empty);
                valueBase = value;
            }
            break;

            case JsonToken.String:
            {
                JsonValue value = new JsonValue(JsonValueType.String);
                value.SetValue(reader.Value.ToString());
                valueBase = value;
            }
            break;

            case JsonToken.ArrayEnd:
            {
                valueBase = null;
            }
            break;
            }

            return(valueBase);
        }