public void SendDragPosition(List <DrawQueueItem> queue, Vector3 center, Action <LogChallengeEventResponse> response)
    {
        if (_currentChallengeId == null)
        {
            _currentChallengeId = GameSparksManager.Instance.GetCurrentChallengeId();
        }

        List <GSData> _pos             = new List <GSData>();
        Dictionary <string, object> _d = new Dictionary <string, object>();

        foreach (DrawQueueItem _p in queue)
        {
            _d.Add("item", _p.ToJson());

            GSData _data = new GSData(_d);

            _pos.Add(_data);
            _d.Clear();
        }

        GSRequestData data = new GSRequestData();

        data.AddObjectList("positions", _pos);
        data.AddNumber("center_x", center.x);
        data.AddNumber("center_y", center.y);
        data.AddNumber("center_z", center.z);

        new LogChallengeEventRequest()
        .SetChallengeInstanceId(_currentChallengeId)
        .SetEventKey("WordDrag")
        .SetEventAttribute("data", data)
        .Send(response);
    }
Ejemplo n.º 2
0
        /** Converts a serializable object into GameSparks compatible GSData. */
        public static GSRequestData ObjectToGSData(object obj)
        {
            GSRequestData gsData = new GSRequestData();

            gsData.AddString("type", obj.GetType().ToString());

            foreach (var field in obj.GetType().GetFields())
            {
                if (!field.IsNotSerialized && field.GetValue(obj) != null)
                {
                    if (field.FieldType == typeof(string))
                    {
                        gsData.AddString(field.Name, field.GetValue(obj).ToString());
                    }
                    else if (field.FieldType == typeof(bool))
                    {
                        gsData.AddBoolean(field.Name, bool.Parse(field.GetValue(obj).ToString()));
                    }
                    else if (field.FieldType == typeof(int))
                    {
                        gsData.AddNumber(field.Name, (int)Convert.ToInt32(field.GetValue(obj)));
                    }
                    else if (field.FieldType == typeof(float) || field.GetValue(obj).GetType() == typeof(double))
                    {
                        gsData.AddNumber(field.Name, Double.Parse(field.GetValue(obj).ToString()));
                    }
                    else if (field.FieldType == typeof(List <string>) || field.GetValue(obj).GetType() == typeof(string[]))
                    {
                        gsData.AddStringList(field.Name, (field.FieldType == typeof(List <string>)) ? field.GetValue(obj) as List <string> : new List <string>(field.GetValue(obj) as string[]));
                    }
                    else if (field.FieldType == typeof(List <int>) || field.GetValue(obj).GetType() == typeof(int[]))
                    {
                        gsData.AddNumberList(field.Name, (field.FieldType == typeof(List <int>)) ? field.GetValue(obj) as List <int> : new List <int>(field.GetValue(obj) as int[]));
                    }
                    else if (field.FieldType == typeof(List <float>) || field.GetValue(obj).GetType() == typeof(float[]))
                    {
                        gsData.AddNumberList(field.Name, (field.FieldType == typeof(List <float>)) ? field.GetValue(obj) as List <float> : new List <float>(field.GetValue(obj) as float[]));
                    }
                    else if (field.FieldType == typeof(DateTime))
                    {
                        gsData.AddDate(field.Name, (DateTime)field.GetValue(obj));
                    }
                    else if (field.FieldType.IsClass && !field.FieldType.IsGenericType)
                    {
                        gsData.AddObject(field.Name, ObjectToGSData(field.GetValue(obj)));
                    }
                    else if (field.FieldType.IsGenericType && field.FieldType.GetGenericTypeDefinition() == typeof(List <>) || field.FieldType.IsArray)
                    {
                        List <GSData> gsDataList = new List <GSData>();
                        foreach (var elem in field.GetValue(obj) as IList)
                        {
                            gsDataList.Add(ObjectToGSData(elem));
                        }
                        gsData.AddObjectList(field.Name, gsDataList);
                    }
                }
            }

            Debug.LogWarning(gsData.JSON);
            return(gsData);
        }