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); }
//Starts the game session public void StartNewRTSession(RTSessionInfo _info) { //if the settings arent null if (gameSparksRTUnity == null) { Debug.Log("GSM| Creating New RT Session Instance..."); sessionInfo = _info; //player/session information gameSparksRTUnity = this.gameObject.AddComponent <GameSparksRTUnity>(); //add the RT script to the manager GSRequestData mockedResponse = new GSRequestData(); //create a new request mockedResponse.AddNumber("port", (double)_info.GetPortID()); //gets the port id mockedResponse.AddString("host", _info.GetHostURL()); //gets host server mockedResponse.AddString("accessToken", _info.GetAccessToken()); // construct a dataset from the game-details FindMatchResponse response = new FindMatchResponse(mockedResponse); //create a mock response for match //configures the game gameSparksRTUnity.Configure(response, (peerId) => { OnPlayerConnectedToGame(peerId); }, (peerId) => { OnPlayerDisconnected(peerId); }, (ready) => { OnRTReady(ready); }, (packet) => { OnPacketReceived(packet); }); gameSparksRTUnity.Connect(); // when the config is set, connect the game } else { Debug.LogError("Session Already Started"); } }
public void SendFoundWord(string word, float time, Action <LogChallengeEventResponse> response) { if (_currentChallengeId == null) { _currentChallengeId = GameSparksManager.Instance.GetCurrentChallengeId(); } GSRequestData data = new GSRequestData(); data.AddString("word", word); data.AddNumber("time", time); new LogChallengeEventRequest() .SetChallengeInstanceId(_currentChallengeId) .SetEventKey("WordFound") .SetEventAttribute("data", data) .Send(response); }
public void SendPoints(int points, string source = null, JSONObject pointsJsonData = null) { int offlinePoints = PreferencesFactory.GetInt(Constants.KeyOfflinePoints, 0); string _pointsDataString = PreferencesFactory.GetString(Constants.KeyOfflinePointsData, null); if (pointsJsonData != null && source != null) { pointsJsonData.Add("source", source); } JSONArray _pointsData = new JSONArray(); if (!string.IsNullOrEmpty(_pointsDataString)) { try { _pointsData = JSONArray.Parse(_pointsDataString); } catch (Exception e) {} } if (pointsJsonData != null) // add new record { _pointsData.Add(pointsJsonData); } if (Reachability.Instance.IsReachable() == false || IsUserLoggedIn() == false) { PreferencesFactory.SetInt(Constants.KeyOfflinePoints, points + offlinePoints); PreferencesFactory.SetString(Constants.KeyOfflinePointsData, _pointsData.ToString()); return; } if (points + offlinePoints <= 0) { return; } int levelNumber = -1; try { Level level = LevelController.FirstUnplayedLevel(); if (level != null) { levelNumber = level.Number - 1; } } catch (Exception e) {} GSRequestData requestData = new GSRequestData(); requestData.AddNumber("offlinePoints", offlinePoints); requestData.AddNumber("score", points); requestData.AddNumber("lastPlayedLevel", levelNumber); if (_pointsData != null) { requestData.AddJSONStringAsObject("pointsData", _pointsData.ToString()); } if (source != null) { requestData.AddString("source", source); } new LogEventRequest() .SetEventKey("SubmitScoreV2") .SetEventAttribute("score", points + offlinePoints) .SetEventAttribute("data", requestData) .Send((response) => { if (!response.HasErrors) { PreferencesFactory.DeleteKey(Constants.KeyOfflinePoints); PreferencesFactory.DeleteKey(Constants.KeyOfflinePointsData); } }); }
/** 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); }