Exemplo n.º 1
0
    void SaveLog()
    {
        if (stringBuilder.Length == 0)
        {
            return;
        }

        GSRequestData logData = new GSRequestData();

        logData.AddString("key", "InAppPurchase");
        logData.AddString("message", "User purchase in-app");

        GSData _d = new GSData(new Dictionary <string, object>()
        {
            { "purchase", stringBuilder },
        });

        logData.AddObject("data", _d);

        GameSparksManager.Instance.Log(logData);

        string purchaseLog = PreferencesFactory.GetString("PurchaseLog", "");

        purchaseLog = string.Format("{0}\n-----------\n{1}", purchaseLog, stringBuilder);

        PreferencesFactory.SetString("PurchaseLog", purchaseLog);

        stringBuilder.Length = 0;
    }
        //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");
            }
        }
Exemplo n.º 3
0
        /// <summary> Create a new match making request, hosting a match based upon the dropdown menu option </summary>
        private void HostRoom()
        {
            m_hosting = true;
            QuickConnect.m_StaticQuickStart = true; //Not technically true, but prevents QuickConnect from firing upon scene load
            //Gather data for hosting the match
            string matchShortCode = m_MatchShortCodes[m_HostSelectionDropDown.GetComponent <Dropdown>().value];

            m_cleanRoomName = m_RoomNameInputField.GetComponentsInChildren <Text>()[1].text;
            GSRequestData matchData = new GSRequestData();

            matchData.AddString("m_cleanRoomName", m_cleanRoomName);

            //Get max player count
            new LogEventRequest()
            .SetEventKey("GetFoundMatchInfo")
            .SetEventAttribute("MatchShortCode", matchShortCode)
            .Send((_nameResponse) =>
            {
                //Since these calls are asynchronous, call host from inside here
                var matchInfo         = JsonUtility.FromJson <JSONFoundMatchInfoConverter>(_nameResponse.ScriptData.JSON);
                string maxPlayerCount = matchInfo.m_MaxPlayerCount.ToString();
                matchData.AddString("maxPlayerCount", maxPlayerCount);

                //Start hosting the match
                new MatchmakingRequest()
                .SetMatchShortCode(matchShortCode)
                .SetSkill(0)
                .SetMatchData(matchData)
                .Send((_matchMakingResponse) =>
                {
                    if (_matchMakingResponse.HasErrors)
                    {
                        Debug.LogError("GSM| Matchmaking Error\n" + _matchMakingResponse.Errors.JSON);
                        m_HostErrorText.SetActive(true);
                        m_HostErrorText.GetComponent <Text>().text = "Error attempting to host match: \"" + _matchMakingResponse.Errors.JSON + "\"";
                        DisplayPanel(PanelSelection.HostMenu);
                    }
                    else         //Host was successful - update lobby screen
                    {
                        //Add player count and match name to lobby screen
                        m_PlayerCountText.GetComponent <Text>().text = "1/" + matchInfo.m_MaxPlayerCount.ToString();
                        m_MatchNameText.GetComponent <Text>().text   = matchShortCode + ": " + m_cleanRoomName;

                        //Add player name to the player list in the lobby screen
                        m_PlayerListText.GetComponent <Text>().text = m_UsernameInput.GetComponentsInChildren <Text>()[1].text; //Display the users in the room
                        m_ChosenMatch.shortCode = matchShortCode;                                                               //Update matchShortCode in case "host" disconnects
                        GameSparksManager.Instance().SetMatchShortCode(m_ChosenMatch.shortCode);
                    }
                });
            });
        }
Exemplo n.º 4
0
    private void ResetPasswordCanvasContinueBtn()
    {
        if (Register.isSoundPlaying)
        {
            audioSource.Play();
        }
        string token       = resetPasswordCanvas_token.text;
        string newPassword = resetPasswordCanvas_newPassword.text;

        if (token == "")
        {
            ShowToast.MyShowToastMethod("Please Enter Token!");
            return;
        }
        if (newPassword == "")
        {
            ShowToast.MyShowToastMethod("Please Enter New Password!");
            return;
        }
        GSRequestData gSRequestData = new GSRequestData();

        gSRequestData.AddString("action", "resetPassword");
        gSRequestData.AddString("token", token);
        gSRequestData.AddString("password", newPassword);
        new GameSparks.Api.Requests.AuthenticationRequest().SetUserName("").SetPassword("").SetScriptData(gSRequestData).Send((response) =>
        {
            Register.userId = response.UserId;

            if (response.Errors.GetString("action") == "complete")
            {
                ShowToast.MyShowToastMethod("Password Changed Successfully");
                Debug.Log("Password Changed Successfully");
                forgetPassword_canvas.enabled = false;
                resetPassword_canvas.enabled  = false;
                createOne_btn.enabled         = true;
                login_btn.interactable        = true;
                playAsGuest_btn.interactable  = true;
            }
            else
            {
                ShowToast.MyShowToastMethod("Error Resetting Password!");
                Debug.Log(response.Errors.GetString("action"));
                forgetPassword_canvas.enabled = false;
                login_btn.interactable        = true;
                createOne_btn.interactable    = true;
                playAsGuest_btn.interactable  = true;
            }
        });
    }
Exemplo n.º 5
0
    private void ForgetPasswordContinueBtn()
    {
        if (Register.isSoundPlaying)
        {
            audioSource.Play();
        }

        string userName = forgetPasswordUserName.text;
        string email    = forgetPasswordEmail.text;

        if (userName == "")
        {
            ShowToast.MyShowToastMethod("Please Enter User Name!");
            return;
        }
        if (email == "")
        {
            ShowToast.MyShowToastMethod("Please Enter Email Address!");
            return;
        }
        GSRequestData gSRequestData = new GSRequestData();

        gSRequestData.AddString("action", "passwordRecoveryRequest");
        gSRequestData.AddString("email", email);
        new GameSparks.Api.Requests.AuthenticationRequest().SetUserName(userName).SetPassword("").SetScriptData(gSRequestData).Send((response) =>
        {
            Register.userId = response.UserId;

            if (response.Errors.GetString("action") == "complete")
            {
                ShowToast.MyShowToastMethod("Request Sent! Check You Email");
                Debug.Log("Request Sent! Check You Email");
                forgetPassword.enabled       = false;
                resetPassword_canvas.enabled = true;
            }
            else
            {
                ShowToast.MyShowToastMethod("Error Sending Requset!");
                Debug.Log("Error Sending Requset! " + response.Errors.GetString("action"));
            }
        });
    }
    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);
    }
Exemplo n.º 7
0
        /// <summary>
        /// Connects a user to a game using GameSparks auto-matchmaking ability based upon the room name that the programmer specified in the Unity Editor
        /// for the <see cref="QuickConnect"/> script if they are using <see cref="QuickConnect"/>. Otherwise is moves onto the next step of manually connecting players
        /// </summary>
        private void Connect()
        {
            if (m_QuickConnect && !m_SwitchedToManualMatchMaking)
            {
                GSRequestData matchData = new GSRequestData();
                m_cleanRoomName = Regex.Replace(m_RoomName, @"\s+", "");
                matchData.AddString("m_cleanRoomName", m_cleanRoomName);
                new MatchmakingRequest()
                .SetMatchShortCode("QS") //Quick Start short code
                .SetSkill(1)
                .SetMatchData(matchData)
                .SetMatchGroup(m_cleanRoomName)
                .Send((_matchMakingResponse) =>
                {
                    if (_matchMakingResponse.HasErrors)
                    {
                        Debug.LogError("GSM| Matchmaking Error\n" + _matchMakingResponse.Errors.JSON);
                        m_HostErrorText.SetActive(true);
                        m_HostErrorText.GetComponent <Text>().text = "Error attempting to host match: \"" + _matchMakingResponse.Errors.JSON + "\"";
                        DisplayPanel(PanelSelection.HostMenu);
                    }
                    else //Host was successful - update lobby screen
                    {
                        DisplayPanel(PanelSelection.LobbyScreen);

                        //Add player count and match name to lobby screen
                        m_PlayerCountText.GetComponent <Text>().text = "1/20";
                        m_MatchNameText.GetComponent <Text>().text   = "QS" + ": " + m_RoomName;

                        //Add player name to the player list in the lobby screen
                        m_PlayerListText.GetComponent <Text>().text = m_UsernameInput.GetComponentsInChildren <Text>()[1].text; //Display the users in the room
                        m_ChosenMatch.shortCode = "QS";                                                                         //Update matchShortCode in case "host" disconnects
                        GameSparksManager.Instance().SetMatchShortCode(m_ChosenMatch.shortCode);
                    }
                });
            }
            else
            {
                //Switch to the connection menu
                DisplayPanel(PanelSelection.ConnectionMenu);
                GetMatchShortCodes();
            }
        }
    public void Log(GSRequestData json)
    {
        if (!GameSparksManager.IsTokenAvailable())
        {
            GameSparksManager.Instance.AnonymousLogin();
        }

        json.AddString("userId", UserID());
        json.AddDate("user_date", UnbiasedTime.Instance.Now());
        json.AddDate("utc_date", UnbiasedTime.Instance.UTCNow());

        new LogEventRequest()
        .SetEventKey("AppLog")
        .SetEventAttribute("data", json)
        .Send(((response) => {
            if (!response.HasErrors)
            {
            }
        }));
    }
    public void UploadAvatar(Texture2D image, Action <Texture2D> action = null)
    {
        GSRequestData data = new GSRequestData();

        data.AddString("type", "avatar");

        Loading.Instance.Show();

        new GetUploadUrlRequest()
        .SetUploadData(data)
        .Send((response) => {
            Loading.Instance.Hide();

            if (response.HasErrors)
            {
                return;
            }

            string url = response.Url;

            Loading.Instance.Show();
            StartCoroutine(AvatarUploading(url, image, action));
        });
    }
Exemplo n.º 10
0
    public void RegisterPlayerWithLeague()
    {
        GSRequestData segdata = new GSRequestData();

        segdata.AddString("league", "placement");
        //Dictionary<string, int> dict = new Dictionary<string, int>();
        new RegistrationRequest()
        .SetDisplayName(displayNameRegister.text)
        .SetPassword(passwordRegister.text)
        .SetUserName(userNameRegister.text)
        .SetSegments(segdata)
        //.SetSegments(new GameSparks.Core.GSRequestData(new Dictionary<string,object>() {{"league","placement"}}))
        .Send((response) => {
            if (!response.HasErrors)
            {
                Debug.Log("Player Registered");
            }
            else
            {
                Debug.Log("Error Registering Player");
            }
        }
              );
    }
    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);
            }
        });
    }
    public void SyncRestore()
    {
        if (!IsUserLoggedIn())
        {
            return;
        }

        new LogEventRequest()
        .SetEventKey("LoadPlayerProgress")
        .Send((response) => {
            if (!response.HasErrors && response.ScriptData != null)
            {
                GSData data = response.ScriptData.GetGSData("data");

                if (data == null)
                {
                    return;
                }

                DateTime now = UnbiasedTime.Instance.Now();
                string json  = data.JSON;

                // date from remote json
                DateTime syncDate = now;

                if (data.ContainsKey("LastProgressSyncDate"))
                {
                    syncDate = DateTime.Parse(data.GetString("LastProgressSyncDate"));
                }

                // date in device when was last sync
                DateTime lastUpdateDate = DateTime.Parse(PlayerPrefs.GetString("LastProgressSyncDate", now.ToString(CultureInfo.InvariantCulture)));
                MyDebug.Log("Should update prefs; lastUpdateDate: " + lastUpdateDate + "; syncDate: " + syncDate);

                if (syncDate.CompareTo(lastUpdateDate) != 0)
                {
                    MyDebug.Log("Diff hash, update prefs");

                    JSONPrefs.Replace(json);

                    // updating device date to sync date, because on next start shouldn't update again
                    PlayerPrefs.SetString("LastProgressSyncDate", syncDate.ToString(CultureInfo.InvariantCulture));
                    PlayerPrefs.Save();

                    CustomGameManager manager = CustomGameManager.Instance as CustomGameManager;
                    manager.ResetGame();

                    // reload data from sync
                    LevelController.Instance.Reload();

                    //

                    GSRequestData logData = new GSRequestData();
                    logData.AddString("key", "ProgressSync");
                    logData.AddString("message", "User synched progress from server");

                    GSData _d = new GSData(new Dictionary <string, object>()
                    {
                        { "Date in JSON", syncDate },
                        { "Date in device", lastUpdateDate }
                    });

                    logData.AddObject("data", _d);

                    Log(logData);
                }

                GetAwards();                 // safe place to get awards
            }
        });
    }
Exemplo n.º 13
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);
        }
    public void RefreshChallengesList()
    {
        if (_refreshCoroutine != null)
        {
            StopCoroutine(_refreshCoroutine);
        }

        _challenges.Clear();

        var requestData = new GSRequestData();

        requestData.AddString("Language", LanguageUtils.RealLanguage(LocaliseText.Language));

        var eligibilityCriteria = new GSRequestData();

        GSData _d = new GSData(new Dictionary <string, object>()
        {
            { "Language", LanguageUtils.RealLanguage(LocaliseText.Language) }
        });

        eligibilityCriteria.AddObject("segments", _d);

        new FindChallengeRequest()
        .SetAccessType("PUBLIC")
        .SetShortCode(new List <string> {
            Constants.ChallengeShortCode
        })
        .SetScriptData(requestData)
        .SetEligibility(eligibilityCriteria)
        .Send((secondResponse) =>
        {
            var publicChallenges = secondResponse.ChallengeInstances;
            if (publicChallenges == null || !publicChallenges.Any())
            {
                var challengesData = secondResponse.ScriptData;
                if (challengesData == null)
                {
                    return;
                }
                var dataList = secondResponse.ScriptData.GetGSDataList("challenges");
                if (dataList != null)
                {
                    if (dataList.Count > 0)
                    {
                        var enumerator = dataList.GetEnumerator();
                        while (enumerator.MoveNext())
                        {
                            var current = enumerator.Current;

                            if (current != null)
                            {
                                string username = null;
                                string userId   = null;
                                var challengeId = current.GetString("challengeId");
                                var scriptData  = current.GetGSData("scriptData");

                                if (scriptData != null)
                                {
                                }
                                var challenger = current.GetGSData("challenger");
                                if (challenger != null)
                                {
                                    username = challenger.GetString("name");
                                    userId   = challenger.GetString("id");

                                    if (userId == PreferencesFactory.GetString(Constants.ProfileUserId))
                                    {
                                        continue;
                                    }
                                }

                                var ch = new Challenge
                                {
                                    ChallengeId    = challengeId,
                                    UserName       = username,
                                    UserId         = userId,
                                    AvatarUploadId = "",
                                    ExternalIds    = null
                                };
                                _challenges.Add(ch);
                            }
                        }
                        enumerator.Dispose();
                    }
                }
            }

            List <string> _ignoreChallangeIds = new List <string>();

            var ignoreList = secondResponse.ScriptData.GetGSDataList("ignoreChallanges");
            if (ignoreList != null)
            {
                var challengesIgnoreEnum = ignoreList.GetEnumerator();
                while (challengesIgnoreEnum.MoveNext())
                {
                    var challenge = challengesIgnoreEnum.Current;

                    _ignoreChallangeIds.Add(challenge.GetString("challengeId"));
                }
            }

            if (publicChallenges != null)
            {
                var challengesEnum = publicChallenges.GetEnumerator();
                while (challengesEnum.MoveNext())
                {
                    var challenge = challengesEnum.Current;

                    if (_ignoreChallangeIds.Contains(challenge.ChallengeId))
                    {
                        continue;
                    }

                    var scriptData = challenge.ScriptData;
                    var showInList = true;
                    if (scriptData != null)
                    {
                        var k = scriptData.GetBoolean("showInList");
                        if (k != null)
                        {
                            showInList = (bool)k;
                        }
                    }
                    if (showInList)
                    {
                        var username = challenge.Challenger.Name;
                        var userId   = challenge.Challenger.Id;

                        if (userId == PreferencesFactory.GetString(Constants.ProfileUserId))
                        {
                            continue;
                        }

                        var ch = new Challenge
                        {
                            ChallengeId    = challenge.ChallengeId,
                            UserName       = username,
                            UserId         = userId,
                            AvatarUploadId = challenge.ScriptData.GetString("avatarUploadId"),
                            ExternalIds    = challenge.Challenger.ExternalIds
                        };
                        _challenges.Add(ch);
                    }
                }
                challengesEnum.Dispose();

                if (_onChallengeDetected != null)
                {
                    _onChallengeDetected.OnChallengesListeFetched(_challenges);
                }
            }

            if (ShouldGetChallengesList)
            {
                _refreshCoroutine = CoRoutines.DelayedCallback(_challengeRefreshRate, RefreshChallengesList);
                StartCoroutine(_refreshCoroutine);
            }
        });
    }