protected void ReadGameInfoListObject(LitJson.JsonReader reader, object context)
        {
            GameInfoListCallbackData data = context as GameInfoListCallbackData;

            switch (reader.Token)
            {
            case LitJson.JsonToken.PropertyName:
            {
                string key = reader.Value.ToString();
                switch (key)
                {
                case "Status":
                {
                    string val = JsonReadStringPropertyRHS(reader);
                    data.status = (ErrorCode)Enum.Parse(typeof(ErrorCode), val);
                    break;
                }

                case "List":
                {
                    reader.Read();
                    JsonReadArray(reader, context, this.BeginGameInfoObject, this.ReadGameInfoObject, null);
                    break;
                }
                }
                break;
            }

            default:
            {
                break;
            }
            }
        }
        protected void UnityIosGameInfoListCallback(string message)
        {
            LitJson.JsonReader reader = new LitJson.JsonReader(message);

            GameInfoListCallbackData data = new GameInfoListCallbackData();

            JsonReadObject(reader, data, this.ReadGameInfoListObject);

            GameInfoList gameList = new GameInfoList();

            gameList.List = data.games.ToArray();

            GameNameListCallback(data.status, gameList);
        }
        protected void ReadGameInfoObject(LitJson.JsonReader reader, object context)
        {
            GameInfoListCallbackData data = context as GameInfoListCallbackData;
            GameInfo info = data.games.Last();

            switch (reader.Token)
            {
            case LitJson.JsonToken.PropertyName:
            {
                string key = reader.Value.ToString();
                string val = JsonReadStringPropertyRHS(reader);
                switch (key)
                {
                case "Name":
                {
                    info.Name = val;
                    break;
                }

                case "Id":
                {
                    info.Id = int.Parse(val);
                    break;
                }

                case "Popularity":
                {
                    info.Popularity = int.Parse(val);
                    break;
                }
                }
                break;
            }

            default:
            {
                break;
            }
            }
        }
        protected void BeginGameInfoObject(object context)
        {
            GameInfoListCallbackData data = context as GameInfoListCallbackData;

            data.games.Add(new GameInfo());
        }
        protected void UnityIosGameInfoListCallback(string message)
        {
            LitJson.JsonReader reader = new LitJson.JsonReader(message);

            GameInfoListCallbackData data = new GameInfoListCallbackData();
            JsonReadObject(reader, data, this.ReadGameInfoListObject);

            GameInfoList gameList = new GameInfoList();
            gameList.List = data.games.ToArray();

            GameNameListCallback(data.status, gameList);
        }