Пример #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;
    }
    void CheckNotificationsPermission()
    {
        int      CountMainMenuColdStart = PreferencesFactory.GetInt(Constants.KeyCountMainMenuColdStart);
        DateTime now = UnbiasedTime.Instance.Now();

        // not in first launch
        if (CountMainMenuColdStart > 0 && !Allowed())
        {
            // the date when we detected that notifications are denied
            if (!PreferencesFactory.HasKey(Constants.KeyNoNotificationPermissionDeniedDate))
            {
                PreferencesFactory.SetString(Constants.KeyNoNotificationPermissionDeniedDate, now.ToString(CultureInfo.InvariantCulture));

                return;
            }

            DateTime dateOfDenying = DateTime.Parse(PreferencesFactory.GetString(Constants.KeyNoNotificationPermissionDeniedDate, now.ToString(CultureInfo.InvariantCulture)));
            float    minutes3days  = 3 * 24 * 60;
            float    minutes10days = 10 * 24 * 60;

            if (Debug.isDebugBuild)
            {
                minutes3days  = 1f;                // 30 sec
                minutes10days = 2f;                // 1 min
            }

            // 3 days before show alert for first time
            if (now.Date < dateOfDenying.AddMinutes(minutes3days).Date)
            {
                return;
            }

            DateTime postponeDate = DateTime.Parse(PreferencesFactory.GetString(Constants.KeyNoNotificationPermissionDate, now.ToString(CultureInfo.InvariantCulture)));

            // 10 days to show alert again if user postpone it
            if (PreferencesFactory.HasKey(Constants.KeyNoNotificationPermissionDate) &&
                now.Date < postponeDate.AddMinutes(minutes10days).Date)
            {
                return;
            }

            PreferencesFactory.DeleteKey(Constants.KeyNoNotificationPermissionDate);

            string text = LocaliseText.Get("Notifications.DeniedText");

            Alert alert = new Alert("", text)
                          .SetPositiveButton(LocaliseText.Get("Notifications.AllowText"), () => {
                iSDK.Utils.OpenSettings();
            })
                          .SetNeutralButton(LocaliseText.Get("Notifications.IgnoreText"), () => {
                PreferencesFactory.SetString(Constants.KeyNoNotificationPermissionDate, now.ToString(CultureInfo.InvariantCulture));
            })
                          .AddOptions(new AlertIOSOptions()
            {
                PreferableButton = Alert.ButtonType.Positive
            });

            alert.Show();
        }
    }
Пример #3
0
    public static bool BonusCoins()
    {
        DateTime dateTime = DateTime.Parse(PreferencesFactory.GetString(Constants.KeyAskFriendsLastDate, UnbiasedTime.Instance.Now().AddDays(-1).ToString(CultureInfo.InvariantCulture)));

        if (dateTime.Date < UnbiasedTime.Instance.Now().Date)
        { // last invite was yesterday, reset all data
            PreferencesFactory.SetString(Constants.KeyAskFriendsLastDate, UnbiasedTime.Instance.Now().ToString(CultureInfo.InvariantCulture));
            PreferencesFactory.SetInt(Constants.KeyAskFriendsTotal, 0);

            dateTime = UnbiasedTime.Instance.Now();
        }

        bool addedCoins = false;

        int totalInvites = PreferencesFactory.GetInt(Constants.KeyAskFriendsTotal);

        if (dateTime.Date == UnbiasedTime.Instance.Now().Date&& totalInvites < Constants.AskFriendsPerDay)
        {
            GameObject animatedCoins = GameObject.Find("AddCoinsAnimated");

            GameObject       addCoinsClone = Instantiate(animatedCoins, animatedCoins.transform.parent);
            AddCoinsAnimated addCoins      = addCoinsClone.GetComponent <AddCoinsAnimated>();

            addCoins.AnimateCoinsAdding(Constants.AskFriendsCoins, rect: GameObject.Find("BoardContainer").transform as RectTransform, showAnimation: false);

            addedCoins = true;
        }

        PreferencesFactory.SetInt(Constants.KeyAskFriendsTotal, totalInvites + 1);

        return(addedCoins);
    }
    public static void RewardRate()
    {
        DateTime dateTime = DateTime.Parse(PreferencesFactory.GetString(Constants.KeyRateRewardLastDate, UnbiasedTime.Instance.Now().AddDays(-1).ToString(CultureInfo.InvariantCulture)));

        if (dateTime.Date < UnbiasedTime.Instance.Now().Date)
        { // last rate was yesterday, reset all data
            PreferencesFactory.SetString(Constants.KeyRateRewardLastDate, UnbiasedTime.Instance.Now().ToString(CultureInfo.InvariantCulture));
            PreferencesFactory.SetInt(Constants.KeyRateRewardTotal, 0);

            dateTime = UnbiasedTime.Instance.Now();
        }

        int totalRates = PreferencesFactory.GetInt(Constants.KeyRateRewardTotal);

        if (dateTime.Date == UnbiasedTime.Instance.Now().Date&& totalRates < 1)
        {
            GameObject animatedCoins = GameObject.Find("AddCoinsAnimated");

            GameObject       addCoinsClone = Instantiate(animatedCoins, animatedCoins.transform.parent);
            AddCoinsAnimated addCoins      = addCoinsClone.GetComponent <AddCoinsAnimated>();

            RectTransform tr = null;
            GameObject    _c = GameObject.Find("BoardContainer");

            if (_c != null)
            {
                tr = _c.transform as RectTransform;
            }

            addCoins.AnimateCoinsAdding(Constants.RateRewardCoins, rect: tr, showAnimation: false);
        }

        PreferencesFactory.SetInt(Constants.KeyRateRewardTotal, totalRates + 1);
        PreferencesFactory.SetInt(Constants.KeyRateMaxRewardsTime, PreferencesFactory.GetInt(Constants.KeyRateMaxRewardsTime, 0) + 1);
    }
Пример #5
0
        static void SetLanguageToDefault(bool keepIfAlreadySet = false)
        {
            if (keepIfAlreadySet && !string.IsNullOrEmpty(Language))
            {
                return;
            }

            // 1. try and set from prefs
            var prefsLanguage = PreferencesFactory.GetString("Language", useSecurePrefs: false);

            if (TrySetAllowedLanguage(prefsLanguage))
            {
                return;
            }

            //// 2. if not then try and set system Language.
            if (TrySetAllowedLanguage(Application.systemLanguage.ToString()))
            {
                return;
            }

            // 3. use the first language from any user localisation file
            //Language = _defaultUserLanguage;
            if (SupportedLanguages.Length > 0 && TrySetAllowedLanguage(SupportedLanguages[0]))
            {
                return;
            }

            //// 2. if not set then fall back to first Language from first (default) file
            if (LocalisationData != null && LocalisationData.Languages.Count > 0 && TrySetAllowedLanguage(LocalisationData.Languages[0].Name))
            {
                return;
            }
        }
Пример #6
0
    /// <summary>
    /// Called from singletong Awake() - Load saved prize times, or setup new if first run or not saving across restarts
    /// </summary>
    protected override void GameSetup()
    {
        base.GameSetup();

        if (SaveAcrossRestarts && PreferencesFactory.HasKey("FreePrize.NextCountdownStart"))
        {
            NextCountdownStart     = DateTime.Parse(PreferencesFactory.GetString("FreePrize.NextCountdownStart", UnbiasedTime.Instance.Now().ToString(CultureInfo.InvariantCulture))); // start countdown immediately if new game
            NextFreePrizeAvailable = DateTime.Parse(PreferencesFactory.GetString("FreePrize.NextPrize", NextFreePrizeAvailable.ToString(CultureInfo.InvariantCulture)));
            SetCurrentPrizeAmount();
        }
        else
        {
            StartNewCountdown();
            SetCurrentPrizeAmount();
        }

        GameManager.SafeAddListener <UserNotificationsChangedMessage>(UserNotificationsChangedHandler);
        GameManager.SafeAddListener <LocalisationChangedMessage>(LocalisationHandler);

        //

#if !UNITY_EDITOR
        CancelLocalNotifications();
        RegisterLocalNotifications();
#endif
    }
Пример #7
0
        private static void Initialize()
        {
            if (_initialized)
            {
                return;
            }

            _initialized = true;

            var allowedLanguages = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
            {
                { SystemLanguage.English.ToString(), "localisation/values/strings" },
                { SystemLanguage.Italian.ToString(), "localisation/values-it/strings" },
            };

            // from settings
            var languageFromSettings = PreferencesFactory.GetString(SettingsKeys.Language, useSecurePrefs: false);

            if (TrySetCurrentLanguage(allowedLanguages, languageFromSettings))
            {
                return;
            }

            // from device
            var languageFromSystem = Application.systemLanguage.ToString();

            if (TrySetCurrentLanguage(allowedLanguages, languageFromSystem))
            {
                return;
            }

            // first one allowed (default)
            TrySetCurrentLanguage(allowedLanguages, allowedLanguages.Keys.First());
        }
    public static string UserID()
    {
        if (PreferencesFactory.HasKey(Constants.ProfileAnonymousUserId))
        {
            return(PreferencesFactory.GetString(Constants.ProfileAnonymousUserId, ""));
        }

        return(PreferencesFactory.GetString(Constants.ProfileUserId, ""));
    }
    TimeSpan TimeForNextCoins()
    {
        DateTime nowDate       = UnbiasedTime.Instance.Now();
        DateTime freeCoinsDate = DateTime.Parse(PreferencesFactory.GetString(Constants.KeyFreeCoinsAvailable, nowDate.ToString(CultureInfo.InvariantCulture)));

        TimeSpan timeSpan = freeCoinsDate.Subtract(nowDate);

        return(timeSpan);
    }
    public static JSONArray GetWordsFromServer()
    {
        string str = PreferencesFactory.GetString(Constants.KeyRandomLevelWords);

        if (str == "")
        {
            return(null);
        }

        return(JSONArray.Parse(str));
    }
Пример #11
0
    bool FacebookProfilePictureHandler(BaseMessage message)
    {
        FacebookProfilePictureMessage m = message as FacebookProfilePictureMessage;

        if (m.UserId == PreferencesFactory.GetString(Constants.ProfileFBUserId))
        {
            _avatarImage.texture = m.Texture;
        }

        return(true);
    }
Пример #12
0
 /// <summary>
 /// Load saved values from preferences or set to default if not found.
 /// </summary>
 /// <param name="prefix"></param>
 /// <param name="useSecurePrefs"></param>
 public void Load(string prefix = "", bool?useSecurePrefs = null)
 {
     foreach (var variable in StringVariables)
     {
         if (variable.PersistChanges)
         {
             variable.Value = PreferencesFactory.GetString(prefix + variable.Tag, variable.Value, useSecurePrefs);
         }
         else
         {
             variable.Value = variable.DefaultValue;
         }
     }
 }
    private void GetLocale(ISN_Locale locale)
    {
        IOSNativeUtility.OnLocaleLoaded -= GetLocale;

        string savedLanguage  = PreferencesFactory.GetString("Language", useSecurePrefs: false);
        string systemLanguage = LanguageUtils.CountryCodeToLanguage(locale.CountryCode.ToLower());

        // user does not changed his language manual
        // and system language is different from previous auto-detected
        if (systemLanguage != savedLanguage)
        {
            LanguageController.ChangeLanguage(systemLanguage);
        }
    }
Пример #14
0
        /// <summary>
        /// Called from singletong Awake() - Load saved prize times, or setup new if first run or not saving across restarts
        /// </summary>
        protected override void GameSetup()
        {
            base.GameSetup();

            if (SaveAcrossRestarts && PreferencesFactory.HasKey("FreePrize.NextCountdownStart"))
            {
                NextCountdownStart     = DateTime.Parse(PreferencesFactory.GetString("FreePrize.NextCountdownStart", DateTime.UtcNow.ToString(CultureInfo.InvariantCulture))); // start countdown immediately if new game
                NextFreePrizeAvailable = DateTime.Parse(PreferencesFactory.GetString("FreePrize.NextPrize", NextFreePrizeAvailable.ToString(CultureInfo.InvariantCulture)));
                SetCurrentPrizeAmount();
            }
            else
            {
                StartNewCountdown();
            }
        }
Пример #15
0
    public static bool WillRewardInvite()
    {
        DateTime dateTime = DateTime.Parse(PreferencesFactory.GetString(Constants.KeyInviteLastDate, UnbiasedTime.Instance.Now().AddDays(-1).ToString(CultureInfo.InvariantCulture)));

        if (dateTime.Date < UnbiasedTime.Instance.Now().Date)
        { // last invite was yesterday
            return(true);
        }

        int totalInvites = PreferencesFactory.GetInt(Constants.KeyInvitesTotal);

        if (dateTime.Date == UnbiasedTime.Instance.Now().Date&& totalInvites < Constants.InviteMaxPerDay)
        {
            return(true);
        }

        return(false);
    }
Пример #16
0
    public void PrepareAndShowInviteBalloon()
    {
        DateTime now = UnbiasedTime.Instance.Now();
        DateTime datetime;

        if (PreferencesFactory.HasKey(Constants.KeyInviteBalloonShowedDate))
        {
            datetime = DateTime.Parse(PreferencesFactory.GetString(Constants.KeyInviteBalloonShowedDate, now.ToString(CultureInfo.InvariantCulture)));
        }
        else
        {
            datetime = now.AddDays(-1);              // first launch, there is no date
        }

        if (datetime.Date < now.Date)
        {
            ShowBalloon();
        }
    }
    // Use this for initialization
    void Start()
    {
        FreeCoinsObject        = GameObjectHelper.GetChildNamedGameObject(gameObject, "FreeCoins", true);
        FreeCoinsCounterObject = GameObjectHelper.GetChildNamedGameObject(gameObject, "FreeCoinsCounter", true);

        freeCoinsCounterText = GameObjectHelper.GetChildComponentOnNamedGameObject <Text>(FreeCoinsCounterObject, "Text", true);

        DateTime nowDate       = UnbiasedTime.Instance.Now();
        DateTime freeCoinsDate = DateTime.Parse(PreferencesFactory.GetString(Constants.KeyFreeCoinsAvailable, nowDate.ToString(CultureInfo.InvariantCulture)));

        int TimesFreeCoins = PreferencesFactory.GetInt(Constants.KeyFreeCoinsCounter, 0);

        if (TimesFreeCoins == 0 || (TimesFreeCoins == Constants.TimesFreeCoins && freeCoinsDate <= nowDate))
        {
            ResetCounter();
        }
        else
        {
            if (TimesFreeCoins == Constants.TimesFreeCoins)
            {
                TimeSpan timeSpan = TimeForNextCoins();
                freeCoinsCounterText.text = string.Format("{0:D2}:{1:D2}:{2:D2}", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds);

                GameObjectHelper.SafeSetActive(FreeCoinsObject, false);
                GameObjectHelper.SafeSetActive(FreeCoinsCounterObject, true);
            }
        }

        if (!Reachability.Instance.IsReachable())
        { // hide if no internet
            GameObjectHelper.SafeSetActive(FreeCoinsObject, false);
        }

#if !UNITY_EDITOR
        AdColonyManager.Instance.RequestAd(Constants.AdColonyCoinsRewardZone);
        LoadAdmobRewarderVideo();
#endif
    }
    public static bool WillReward()
    {
        if (PreferencesFactory.GetInt(Constants.KeyRateMaxRewardsTime, 0) >= Constants.RateMaxRewardsTime)
        {
            return(false);
        }

        DateTime dateTime = DateTime.Parse(PreferencesFactory.GetString(Constants.KeyRateRewardLastDate, UnbiasedTime.Instance.Now().AddDays(-1).ToString(CultureInfo.InvariantCulture)));

        int totalRates = PreferencesFactory.GetInt(Constants.KeyRateRewardTotal);

        if (dateTime.Date < UnbiasedTime.Instance.Now().Date)
        { // last rate was yesterday
            return(true);
        }

        if (dateTime.Date == UnbiasedTime.Instance.Now().Date&& totalRates < 1)
        {
            return(true);
        }

        return(false);
    }
Пример #19
0
    public static bool InviteBonusCoins()
    {
        DateTime dateTime = DateTime.Parse(PreferencesFactory.GetString(Constants.KeyInviteLastDate, UnbiasedTime.Instance.Now().AddDays(-1).ToString(CultureInfo.InvariantCulture)));

        if (dateTime.Date < UnbiasedTime.Instance.Now().Date)
        { // last invite was yesterday, reset all data
            PreferencesFactory.SetString(Constants.KeyInviteLastDate, UnbiasedTime.Instance.Now().ToString(CultureInfo.InvariantCulture));
            PreferencesFactory.SetInt(Constants.KeyInvitesTotal, 0);

            dateTime = UnbiasedTime.Instance.Now();
        }

        bool addedCoins = false;

        int totalInvites = PreferencesFactory.GetInt(Constants.KeyInvitesTotal);

#if UNITY_EDITOR
        totalInvites = 0;
#endif

        if (dateTime.Date == UnbiasedTime.Instance.Now().Date&& totalInvites < Constants.InviteMaxPerDay)
        {
            GameObject animatedCoins = GameObject.Find("AddCoinsAnimated");

            GameObject       addCoinsClone = Instantiate(animatedCoins, animatedCoins.transform.parent);
            AddCoinsAnimated addCoins      = addCoinsClone.GetComponent <AddCoinsAnimated>();

            addCoins.AnimateCoinsAdding(Constants.InviteAwardCoins);

            addedCoins = true;
        }

        PreferencesFactory.SetInt(Constants.KeyInvitesTotal, totalInvites + 1);

        return(addedCoins);
    }
Пример #20
0
        static void SetDefaultLanguage()
        {
            // 1. try and set from prefs
            if (TrySetAllowedLanguage(PreferencesFactory.GetString("Language", useSecurePrefs: false)))
            {
                return;
            }

            // 2. if not then try and set system Language.
            if (TrySetAllowedLanguage(Application.systemLanguage.ToString()))
            {
                return;
            }

            // 3. use the first language from any user localisation file
            Language = _defaultUserLanguage;
            if (_languageIndex != -1)
            {
                return;
            }

            // 2. if not set then fall back to first Language from first (default) file
            Language = Languages[0];
        }
    public void ResetGame()
    {
        int oldCoins  = Player.Coins;
        int oldPoints = Player.Score;

        GameSetup();

        Player.SendCoinsChangedMessage(Player.Coins, oldCoins);
        Player.SendScoreChangedMessage(Player.Score, oldPoints);

        string newLanguage = PreferencesFactory.GetString("Language", useSecurePrefs: false);

        if (newLanguage != null)
        {
            LocaliseText.Language = newLanguage;
        }

        if (SoundEnabled())
        {
            BackGroundAudioSource.Play();
        }

        GameManager.SafeQueueMessage(new GameResetedMessage());
    }
Пример #22
0
    void Start()
    {
        GameManager.SafeAddListener <FacebookProfilePictureMessage>(FacebookProfilePictureHandler);

        _avatarImage   = GameObjectHelper.GetChildComponentOnNamedGameObject <RawImage> (gameObject, "AvatarImage");
        _userNameField = GameObjectHelper.GetChildComponentOnNamedGameObject <InputField> (gameObject, "UsernameField", true);

        _userNameField.text = PreferencesFactory.GetString(Constants.ProfileUsername);

        _statsContainer = GameObjectHelper.GetChildNamedGameObject(gameObject, "Stats", true);

                #if UNITY_IOS
        IOSCamera.OnImagePicked += OnImage;
                #endif

                #if UNITY_ANDROID
        AndroidCamera.Instance.OnImagePicked += OnImage;
                #endif

        string avatarId = PreferencesFactory.GetString(Constants.ProfileAvatarUploadId);

        if (avatarId != null)
        {
            GameSparksManager.Instance.DownloadAvatar(avatarId, (Texture2D image) => {
                if (_avatarImage != null && image != null)
                {
                    _avatarImage.texture = image;
                }
            });
        }
        else if (PreferencesFactory.HasKey(Constants.ProfileFBUserId))
        {
            FacebookRequests.Instance.LoadProfileImages(PreferencesFactory.GetString(Constants.ProfileFBUserId));
        }

        GameSparksManager.Instance.LeaderboardRating((int rating) => {
            PreferencesFactory.SetInt(Constants.ProfileRating, rating);
            SetRating(rating);
        });

        GameSparksManager.Instance.UserStats((GSData data) => {
            if (data.GetGSData("Novice") != null)
            {
                GSData rank = data.GetGSData("Novice");
                StatsAddRow("Novice", (int)rank.GetInt("wins"), (int)rank.GetInt("lose"), (int)rank.GetInt("draw"));
            }

            if (data.GetGSData("Advanced") != null)
            {
                GSData rank = data.GetGSData("Advanced");
                StatsAddRow("Advanced", (int)rank.GetInt("wins"), (int)rank.GetInt("lose"), (int)rank.GetInt("draw"));
            }

            if (data.GetGSData("Master") != null)
            {
                GSData rank = data.GetGSData("Master");
                StatsAddRow("Master", (int)rank.GetInt("wins"), (int)rank.GetInt("lose"), (int)rank.GetInt("draw"));
            }

            if (data.GetGSData("Professional") != null)
            {
                GSData rank = data.GetGSData("Professional");
                StatsAddRow("Professional", (int)rank.GetInt("wins"), (int)rank.GetInt("lose"), (int)rank.GetInt("draw"));
            }
        });

        SetRating(PreferencesFactory.GetInt(Constants.ProfileRating, 0));
    }
Пример #23
0
    public void ConnectedWithFacebook()
    {
        if (FacebookManager.Instance.IsLoggedIn)
        {
            if (!GS.Available)
            {
                GS.Reconnect();
            }

            new FacebookConnectRequest()
            .SetAccessToken(AccessToken.CurrentAccessToken.TokenString)
            .SetDoNotLinkToCurrentPlayer(false)
            .SetSwitchIfPossible(true)
            .Send((response) => {
                if (!response.HasErrors)
                {
                    var scriptData = response.ScriptData;
                    if (scriptData != null)
                    {
                        var avatar = scriptData.GetString("avatar");

                        if (avatar != null)
                        {
                            PreferencesFactory.SetString(Constants.ProfileAvatar, avatar);
                        }
                    }

                    var displayName = response.DisplayName;
                    var userId      = response.UserId;

                    PreferencesFactory.SetString(Constants.ProfileUsername, displayName);
                    PreferencesFactory.SetString(Constants.ProfileUserId, response.UserId);
                    PreferencesFactory.SetString(Constants.ProfileFBUserId, AccessToken.CurrentAccessToken.UserId);
                    PreferencesFactory.Save();

                    if (_callback != null)
                    {
                        _callback.OnUserLoggedIn();
                    }

                    if (response.NewPlayer == true)
                    {
                        GameManager.SafeQueueMessage(new UserRegisterMessage());

                        if (!Debug.isDebugBuild)
                        {
                            Fabric.Answers.Answers.LogSignUp("Facebook");
                            Branch.userCompletedAction("RegisterFacebook");
                            Branch.setIdentity(PreferencesFactory.GetString(Constants.ProfileUserId));
                        }
                    }
                    else
                    {
                        GameManager.SafeQueueMessage(new UserLoginMessage());

                        if (!Debug.isDebugBuild)
                        {
                            Fabric.Answers.Answers.LogLogin("Facebook");
                            Branch.userCompletedAction("LoginFacebook");
                            Branch.setIdentity(PreferencesFactory.GetString(Constants.ProfileUserId));
                        }
                    }

                    if (!Debug.isDebugBuild)
                    {
                        Flurry.Flurry.Instance.LogEvent("Register_Facebook");
                    }
                }
                else
                {
                    MyDebug.Log(response.Errors.JSON.ToString());
                    ParseServerResponse(response.Errors);
                }
            });
        }
    }
Пример #24
0
    public void RegisterAction(GameObject GO)
    {
        var mainTransform  = GO.transform;
        var email          = mainTransform.Find("EmailField").GetComponent <InputField> ();
        var username       = mainTransform.Find("UsernameField").GetComponent <InputField> ();
        var password       = mainTransform.Find("PasswordField").GetComponent <InputField> ();
        var repearPassword = mainTransform.Find("RepeatPasswordField").GetComponent <InputField> ();

        var emailString    = email.text;
        var usernameString = username.text;
        var passwordString = password.text;
        var repeatString   = repearPassword.text;

        if (string.IsNullOrEmpty(emailString))
        {
            ShowInfoDialogWithText(LocaliseText.Get("Account.EmailEmptyError"), "OK");
            return;
        }
        if (!IsMailValid(emailString))
        {
            ShowInfoDialogWithText(LocaliseText.Get("Account.EmailNotValidError"), "OK");
            return;
        }
        if (string.IsNullOrEmpty(usernameString))
        {
            ShowInfoDialogWithText(LocaliseText.Get("Account.UsernameEmptyError"), "OK");
            return;
        }
        if (!IsUsernameValid(usernameString))
        {
            ShowInfoDialogWithText(LocaliseText.Get("Account.UsernameNotValid"), "OK");
            return;
        }
        if (string.IsNullOrEmpty(passwordString))
        {
            ShowInfoDialogWithText(LocaliseText.Get("Account.PasswordEmptyError"), "OK");
            return;
        }
        if (string.IsNullOrEmpty(repeatString) || !repeatString.Equals(passwordString))
        {
            ShowInfoDialogWithText(LocaliseText.Get("Account.PasswordsNotEqual"), "OK");
            return;
        }

        if (!Reachability.Instance.IsReachable())
        {
            ShowInfoDialogWithText(LocaliseText.Get("Account.NoConnection"), "CLOSE");
            return;
        }

        if (!GS.Available)
        {
            GS.Reconnect();
        }

        Loading.Instance.Show();

        // user was logged from DeviceAuthenticationRequest and now only update his data
        if (PreferencesFactory.HasKey(Constants.ProfileAnonymousUserId))
        {
            new ChangeUserDetailsRequest()
            .SetDisplayName(usernameString)
            .SetUserName(emailString)
            .SetNewPassword(passwordString)
            .Send((response) => {
                Loading.Instance.Hide();

                if (response.HasErrors)
                {
                    ParseServerResponse(response.Errors);
                    return;
                }

                email.text          = null;
                username.text       = null;
                password.text       = null;
                repearPassword.text = null;

                PreferencesFactory.SetString(Constants.ProfileEmail, emailString);
                PreferencesFactory.SetString(Constants.ProfileUsername, usernameString);
                PreferencesFactory.SetString(Constants.ProfileUserId, PreferencesFactory.GetString(Constants.ProfileAnonymousUserId));
                PreferencesFactory.DeleteKey(Constants.ProfileAnonymousUserId);
                PreferencesFactory.Save();

                if (_callback != null)
                {
                    _callback.OnUserRegistered();
                }
                GameManager.SafeQueueMessage(new UserRegisterMessage());

                if (!Debug.isDebugBuild)
                {
                    Flurry.Flurry.Instance.LogEvent("Register_Email");
                    Fabric.Answers.Answers.LogSignUp("Email");
                    Branch.userCompletedAction("Register");
                    Branch.setIdentity(PreferencesFactory.GetString(Constants.ProfileUserId));
                }
            });

            return;
        }

        new RegistrationRequest()
        .SetUserName(emailString)
        .SetDisplayName(usernameString)
        .SetPassword(passwordString)
        .Send(((response) => {
            Loading.Instance.Hide();

            if (!response.HasErrors)
            {
                email.text = null;
                username.text = null;
                password.text = null;
                repearPassword.text = null;

                var scriptData = response.ScriptData;
                if (scriptData != null)
                {
                    var avatar = scriptData.GetString("avatar");

                    if (avatar != null)
                    {
                        PreferencesFactory.SetString(Constants.ProfileAvatar, avatar);
                    }
                }

                PreferencesFactory.SetString(Constants.ProfileEmail, emailString);
                PreferencesFactory.SetString(Constants.ProfileUsername, response.DisplayName);
                PreferencesFactory.SetString(Constants.ProfileUserId, response.UserId);
                PreferencesFactory.Save();

                if (_callback != null)
                {
                    _callback.OnUserRegistered();
                }
                GameManager.SafeQueueMessage(new UserRegisterMessage());

                if (!Debug.isDebugBuild)
                {
                    Flurry.Flurry.Instance.LogEvent("Register_Email");
                    Fabric.Answers.Answers.LogSignUp("Email");
                    Branch.userCompletedAction("Register");
                    Branch.setIdentity(PreferencesFactory.GetString(Constants.ProfileUserId));
                }
            }
            else
            {
                ParseServerResponse(response.Errors);
            }
        }));
    }
Пример #25
0
    public void LoginAction(GameObject GO)
    {
        var mainTransform = GO.transform;
        var email         = mainTransform.Find("EmailField").GetComponent <InputField> ();
        var password      = mainTransform.Find("PasswordField").GetComponent <InputField> ();

        var emailString    = email.text;
        var passwordString = password.text;

        if (string.IsNullOrEmpty(emailString))
        {
            ShowInfoDialogWithText(LocaliseText.Get("Account.EmailEmptyError"), "CLOSE");
            return;
        }
        if (!IsMailValid(emailString))
        {
            ShowInfoDialogWithText(LocaliseText.Get("Account.EmailNotValidError"), "CLOSE");
            return;
        }
        if (string.IsNullOrEmpty(passwordString))
        {
            ShowInfoDialogWithText(LocaliseText.Get("Account.PasswordEmptyError"), "CLOSE");
            return;
        }

        if (!Reachability.Instance.IsReachable())
        {
            ShowInfoDialogWithText(LocaliseText.Get("Account.NoConnection"), "CLOSE");
            return;
        }

        if (!GS.Available)
        {
            GS.Reconnect();
        }

        Loading.Instance.Show();

        new AuthenticationRequest()
        .SetUserName(emailString)
        .SetPassword(passwordString)
        .Send(((response) => {
            Loading.Instance.Hide();

            if (!response.HasErrors)
            {
                email.text = null;
                password.text = null;

                var scriptData = response.ScriptData;
                if (scriptData != null)
                {
                    var avatar = scriptData.GetString("avatar");

                    if (avatar != null)
                    {
                        PreferencesFactory.SetString(Constants.ProfileAvatar, avatar);
                    }
                }

                var username = response.DisplayName;
                PreferencesFactory.SetString(Constants.ProfileUsername, username);
                PreferencesFactory.SetString(Constants.ProfileUserId, response.UserId);
                PreferencesFactory.SetString(Constants.ProfileEmail, emailString);
                PreferencesFactory.Save();

                if (_callback != null)
                {
                    _callback.OnUserLoggedIn();
                }

                GameManager.SafeQueueMessage(new UserLoginMessage());

                if (!Debug.isDebugBuild)
                {
                    Fabric.Answers.Answers.LogLogin("Email");
                    Branch.userCompletedAction("Login");
                    Branch.setIdentity(PreferencesFactory.GetString(Constants.ProfileUserId));
                }
            }
            else
            {
                ParseServerResponse(response.Errors);
            }
        }));
    }
    private void Start()
    {
        _currentUserId = PreferencesFactory.GetString(Constants.ProfileUserId);

        if (ShouldGetChallengesList)
        {
            RefreshChallengesList();
        }

        GS.GameSparksAuthenticated = (playerId) => {
            _currentUserId = playerId;

            // connection was interupted
            // user now reconnect but challenge was canceled
            if (GameSparksManager.Instance.GetCurrentChallengeId() != null)
            {
                if (_onChallengeDetected != null)
                {
                    _onChallengeDetected.OnErrorReceived(LocaliseText.Get("Challenge.NotAvailable"));
                }
            }
        };

        ChallengeIssuedMessage.Listener = (listener) =>
        {
            _currentChallengeId = listener.Challenge.ChallengeId;
            GameSparksManager.Instance.SetCurrentChallengeId(_currentChallengeId);

            var challengerId = listener.Challenge.Challenger.Id;
            if (_currentUserId != challengerId)
            {
                var username = listener.Challenge.Challenger.Name;

                if (_onChallengeDetected != null)
                {
                    if (!_isRematch)
                    {
                        _onChallengeDetected.OnChallengeIssued(_currentChallengeId, username);
                    }
                    else
                    {
                        new AcceptChallengeRequest()
                        .SetChallengeInstanceId(_currentChallengeId)
                        .Send((response) => { });
                    }
                }
            }
        };

        ChallengeStartedMessage.Listener = (listener) =>
        {
            if (!listener.HasErrors)
            {
                var challenge = listener.Challenge;
                if (challenge != null)
                {
                    if (_currentUserId == null)
                    {
                        _currentUserId = PreferencesFactory.GetString(Constants.ProfileUserId);
                    }

                    _currentChallengeId = challenge.ChallengeId;

                    GameSparksManager.Instance.SetCurrentChallengeId(_currentChallengeId);

                    var acceptedPlayersEnumerator = challenge.Accepted.GetEnumerator();
                    var challengedEnumerator      = challenge.Challenged.GetEnumerator();

                    var challenger = new Challenge
                    {
                        ChallengeId    = challenge.ChallengeId,
                        UserName       = challenge.Challenger.Name,
                        UserId         = challenge.Challenger.Id,
                        AvatarUploadId = challenge.ScriptData.GetGSData(challenge.Challenger.Id).GetString("avatarUploadId"),
                        ExternalIds    = challenge.ScriptData.GetGSData(challenge.Challenger.Id).GetGSData("externalIds")
                    };

                    GameSparksManager.Instance.Challenger = challenger;

                    while (challengedEnumerator.MoveNext())
                    {
                        var playerDetail = challengedEnumerator.Current;
                        if (playerDetail != null)
                        {
                            var challenged = new Challenge
                            {
                                ChallengeId    = challenge.ChallengeId,
                                UserName       = playerDetail.Name,
                                UserId         = playerDetail.Id,
                                AvatarUploadId = challenge.ScriptData.GetGSData(playerDetail.Id).GetString("avatarUploadId"),
                                ExternalIds    = challenge.ScriptData.GetGSData(playerDetail.Id).GetGSData("externalIds")
                            };

                            GameSparksManager.Instance.Challenged = challenged;
                        }
                    }
                    challengedEnumerator.Dispose();

                    while (acceptedPlayersEnumerator.MoveNext())
                    {
                        var playerDetail = acceptedPlayersEnumerator.Current;
                        if (playerDetail != null)
                        {
                            if (playerDetail.Id != _currentUserId)
                            {
                                var opponent = new Challenge
                                {
                                    ChallengeId    = challenge.ChallengeId,
                                    UserName       = playerDetail.Name,
                                    UserId         = playerDetail.Id,
                                    AvatarUploadId = challenge.ScriptData.GetGSData(playerDetail.Id).GetString("avatarUploadId"),
                                    ExternalIds    = challenge.ScriptData.GetGSData(playerDetail.Id).GetGSData("externalIds")
                                };

                                GameSparksManager.Instance.Opponent = opponent;
                            }
                        }
                    }

                    acceptedPlayersEnumerator.Dispose();

                    var nextPlayerId = challenge.NextPlayer;

                    var isMyTurn = nextPlayerId == _currentUserId;
                    GameSparksManager.Instance.SetIsMyTurn(isMyTurn);
                    List <GSData> words = null;

                    var gsData = listener.Challenge.ScriptData;

                    _isRematch = false;

                    GameSparksManager.Instance.SetGameMode(GameMode.Multi);

                    if (gsData != null)
                    {
                        words = gsData.GetGSDataList("words");

                        GameSparksManager.Instance.SetWords(words);

                        if (_onChallengeDetected != null)
                        {
                            _onChallengeDetected.OnChallengeStarted(isMyTurn, GameSparksManager.Instance.Challenger.UserName, GameSparksManager.Instance.Challenged.UserName);
                        }
                    }

                    if (words == null)
                    {
                        DialogManager.Instance.ShowError(LocaliseText.Get("Game.ChallengerNotCreated"), doneCallback: (DialogInstance dialogInstance) => {
                            if (_onChallengeDetected != null)
                            {
                                _onChallengeDetected.OnErrorReceived("REJOIN_LOBBY");
                            }
                        });

                        return;
                    }

                    if (SceneManager.GetActiveScene().name != "Game")
                    {
                        GameManager.LoadSceneWithTransitions("Game");
                    }
                }
            }
            else
            {
                MyDebug.Log("Challenge Started Error: " + listener.Errors.JSON.ToString());
            }
        };

        ChallengeTurnTakenMessage.Listener = (listener) =>
        {
            if (!listener.HasErrors)
            {
                var challenge = listener.Challenge;
                _currentChallengeId = challenge.ChallengeId;

                var nextPlayerId = challenge.ScriptData.GetString("nextPlayer");
                var isMyTurn     = nextPlayerId == _currentUserId;

                GameSparksManager.Instance.SetIsMyTurn(isMyTurn);

                var scriptData = challenge.ScriptData;

                if (scriptData != null)
                {
                    var eventKey = scriptData.GetString("EventKey");

                    if (eventKey == "WordFound" && scriptData != null &&
                        scriptData.GetString("SenderPlayerId") != _currentUserId &&
                        scriptData.ContainsKey("WordFound"))
                    {
                        GSData wordFound = scriptData.GetGSData("WordFound");

                        if (wordFound.ContainsKey("state"))
                        {
                            WordState state = (WordState)wordFound.GetInt("state");
                            string    word  = wordFound.GetString("word");

                            if (_onChallengeDetected != null)
                            {
                                _onChallengeDetected.OnWordFound(word, state);
                            }
                        }
                        else     // backward compability
                        {
                            if (scriptData.ContainsKey("found_words"))
                            {
                                List <GSData> found_words = scriptData.GetGSDataList("found_words");

                                foreach (GSData _w in found_words)
                                {
                                    string word      = _w.GetString("word");
                                    string player_id = _w.GetString("player_id");

                                    if (_onChallengeDetected != null && player_id != _currentUserId)
                                    {
                                        _onChallengeDetected.OnWordFound(word, WordState.Found);
                                    }
                                }
                            }
                        }
                    }

                    var wordDrag = scriptData.GetGSData("WordDrag");

                    if (eventKey == "WordDrag" && wordDrag != null &&
                        wordDrag.ContainsKey("positions"))
                    {
                        if (scriptData.GetString("SenderPlayerId") != _currentUserId)
                        {
                            List <DrawQueueItem> _positions = new List <DrawQueueItem>();
                            var center = Vector3.zero;

                            if (wordDrag.ContainsKey("positions"))
                            {
                                List <GSData> _l = wordDrag.GetGSDataList("positions");

                                foreach (GSData _d in _l)
                                {
                                    string json = _d.GetString("item");

                                    _positions.Add(new DrawQueueItem(json));
                                }
                            }

                            if (wordDrag.ContainsKey("center_x") && wordDrag.ContainsKey("center_y"))
                            {
                                float cx = (float)wordDrag.GetFloat("center_x");
                                float cy = (float)wordDrag.GetFloat("center_y");
                                float cz = (float)wordDrag.GetFloat("center_z");

                                center = new Vector3(cx, cy, cz);
                            }

                            if (_onChallengeDetected != null)
                            {
                                _onChallengeDetected.OnPositionDetected(_positions, center);
                            }
                        }
                    }

                    if (((eventKey == "takeTurn" || eventKey == null) &&
                         scriptData.GetString("SenderPlayerId") != _currentUserId &&
                         scriptData.GetString("SenderPlayerId") != nextPlayerId) ||
                        scriptData.GetBoolean("TimeOut") != null)
                    {
                        if (_onChallengeDetected != null)
                        {
                            _onChallengeDetected.OnTurnEnd(Vector3.zero, "word");
                        }
                    }
                }
            }
            else
            {
                MyDebug.Log("Challenge Turn Taken Error: " + listener.Errors.JSON.ToString());
            }
        };

        ChallengeDeclinedMessage.Listener = (listener) =>
        {
            if (!listener.HasErrors)
            {
                var challenge = listener.Challenge;
                if (challenge != null)
                {
                    var declined   = challenge.Declined;
                    var enumerator = declined.GetEnumerator();
                    while (enumerator.MoveNext())
                    {
                        var playerDetail = enumerator.Current;
                        var playerName   = playerDetail.Name;
                        if (_onChallengeDetected != null)
                        {
                            _onChallengeDetected.OnChallengeDeclined(playerName);
                        }
                    }
                    enumerator.Dispose();
                }
            }
        };

        ChallengeExpiredMessage.Listener = (listener) => { RefreshChallengesList(); };

        ScriptMessage.Listener = (listener) =>
        {
            if (!listener.HasErrors)
            {
                var extCode = listener.ExtCode;
                if (extCode == "userLeaved")
                {
                    var gameStateMessage = new GameStateMessage
                    {
                        Message = listener.Summary,
                        Points  = 0
                    };
                    if (_onChallengeDetected != null)
                    {
                        _onChallengeDetected.OnChallengeFinishedEvent(GameStates.Leaved, gameStateMessage);
                    }
                }

                if (extCode == "userTurn")
                {
                }
            }
        };

        ChallengeWonMessage.Listener = (listener) =>
        {
            if (listener.HasErrors)
            {
                return;
            }

            if (StringUtils.IsNullOrWhiteSpace(_currentChallengeId))
            {
                _currentChallengeId = GameSparksManager.Instance.GetCurrentChallengeId();
            }
            if (_currentChallengeId != null && _currentChallengeId.Equals(listener.Challenge.ChallengeId))
            {
                var scriptData = listener.Challenge.ScriptData;
                if (scriptData != null)
                {
                    var points = 0;
                    var point  = scriptData.GetInt("winPoints");
                    if (point != null)
                    {
                        points = (int)point;
                    }

                    var message = LocaliseText.Get("Game.CongratsYouWon");

                    if (_onChallengeDetected != null)
                    {
                        var gameStateMessage = new GameStateMessage
                        {
                            Message = message,
                            Points  = points
                        };
                        _onChallengeDetected.OnChallengeFinishedEvent(GameStates.Won,
                                                                      gameStateMessage);
                    }
                }
            }
        };
        ChallengeDrawnMessage.Listener = (listener) =>
        {
            if (listener.HasErrors)
            {
                return;
            }
            if (StringUtils.IsNullOrWhiteSpace(_currentChallengeId))
            {
                _currentChallengeId = GameSparksManager.Instance.GetCurrentChallengeId();
            }
            if (_currentChallengeId.Equals(listener.Challenge.ChallengeId))
            {
                var scriptData = listener.Challenge.ScriptData;
                if (scriptData != null && scriptData.GetNumber("drawPoints") != null)
                {
                    int points  = (int)scriptData.GetNumber("drawPoints");
                    var message = "It's a draw game!";

                    if (_onChallengeDetected != null)
                    {
                        var gameStateMessage = new GameStateMessage
                        {
                            Message = message,
                            Points  = points
                        };
                        _onChallengeDetected.OnChallengeFinishedEvent(GameStates.Draw,
                                                                      gameStateMessage);
                    }
                }
            }
        };
        ChallengeLostMessage.Listener = (listener) =>
        {
            if (listener.HasErrors)
            {
                return;
            }

            if (StringUtils.IsNullOrWhiteSpace(_currentChallengeId))
            {
                _currentChallengeId = GameSparksManager.Instance.GetCurrentChallengeId();
            }
            if (_currentChallengeId.Equals(listener.Challenge.ChallengeId))
            {
                var scriptData = listener.Challenge.ScriptData;
                if (scriptData != null)
                {
                    var points = 0;
                    var point  = scriptData.GetInt("losePoints");
                    if (point != null)
                    {
                        points = (int)point;
                    }

                    var message = "You Lost. Better luck next time!";

                    if (_onChallengeDetected != null)
                    {
                        var gameStateMessage = new GameStateMessage
                        {
                            Message = message,
                            Points  = points
                        };
                        _onChallengeDetected.OnChallengeFinishedEvent(GameStates.Lost,
                                                                      gameStateMessage);
                    }
                }
            }
        };

        AchievementEarnedMessage.Listener = (listener) =>
        {
            if (listener.HasErrors)
            {
                return;
            }
            var achievementName = listener.AchievementName;
            if (_onAchievementDetected != null)
            {
                _onAchievementDetected.OnAchievmentEarned(achievementName);
            }
        };
    }
    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);
            }
        });
    }
Пример #28
0
    /// <summary>
    /// Show a free prize dialog that gives the user coins. We default to the standard General Message window, adding any additional
    /// content as setup in the FreePrizeManager configuration.
    /// </summary>
    public DialogInstance ShowFreePrizeDialog(Action <DialogInstance> doneCallback = null)
    {
        // only allow the free prize dialog to be shown once.
        if (IsShowingFreePrizeDialog)
        {
            return(null);
        }

        IsShowingFreePrizeDialog = true;
        _prizeIsProcessed        = false;
        dialogInstance           = DialogManager.Instance.Create(ContentPrefab, null, null, null,
                                                                 runtimeAnimatorController: ContentAnimatorController);

        Sprite sprite = null;
        string text   = BonusText();

        if (prizeIsCoins && this.PrizeItems > 0)
        {
            sprite = Resources.Load <Sprite>("Images/coins");
        }

        string   DateLastFreePrizeTakeString = PreferencesFactory.GetString(Constants.KeyDateLastFreePrizeTake);
        DateTime DateLastFreePrizeTake       = UnbiasedTime.Instance.Now();

        if (!DateLastFreePrizeTakeString.Equals(""))
        {
            DateLastFreePrizeTake = DateTime.Parse(DateLastFreePrizeTakeString);
        }

        int DaysInRow = PreferencesFactory.GetInt(Constants.KeyFreePrizeTakeDaysInRow, 1);

        if (DateLastFreePrizeTake.AddDays(1).Date == UnbiasedTime.Instance.Now().Date)
        {
            DaysInRow += 1;
            PreferencesFactory.SetInt(Constants.KeyFreePrizeTakeDaysInRow, DaysInRow);
        }
        else
        { // reset
            DaysInRow = 1;
            PreferencesFactory.SetInt(Constants.KeyFreePrizeTakeDaysInRow, DaysInRow);
        }

        GameObject Days = GameObjectHelper.GetChildNamedGameObject(dialogInstance.gameObject, "Days", true);

        for (int i = 0; i < Constants.DailyBonusItems.Length; i++)
        {
            int prizeValue = Constants.DailyBonusItems[i];

            string     dayText = string.Format("Day{0}", (i + 1));
            GameObject day     = GameObjectHelper.GetChildNamedGameObject(Days, dayText, true);

            if (!day)
            {
                continue;
            }

            Text t = GameObjectHelper.GetChildNamedGameObject(day, "Text", true).GetComponent <Text>();
            t.text = prizeValue.ToString();

            if (DaysInRow - 1 > i)
            {
                GameObject image = GameObjectHelper.GetChildNamedGameObject(day, "Image", true);
                GameObjectHelper.SafeSetActive(image, true);
            }

            //			if ( DaysInRow-1 == i) {
            //				GameObject today = GameObjectHelper.GetChildNamedGameObject(day, "Today", true);
            //				GameObjectHelper.SafeSetActive (today, true);
            //
            //				GameObject dayNumber = GameObjectHelper.GetChildNamedGameObject(day, "DayNumber", true);
            //				GameObjectHelper.SafeSetActive (dayNumber, false);
            //			}

            if (DaysInRow == (i + 1))
            { // add daily bonus
                this.PrizeItems += prizeValue;

                GameObject claimButton = GameObjectHelper.GetChildNamedGameObject(dialogInstance.Content, "ClaimButton", true);

                Text claimText = GameObjectHelper.GetChildComponentOnNamedGameObject <Text>(claimButton, "Text", true);

                if (prizeIsPoints)
                {
                    claimText.text = LocaliseText.Format("FreePrize.ClaimPoints", this.PrizeItems);
                }

                if (prizeIsCoins)
                {
                    claimText.text = LocaliseText.Format("FreePrize.ClaimButton", this.PrizeItems);
                }
            }
        }

        dialogInstance.Show(title: LocaliseText.Get("FreePrize.Title"), text: text, text2Key: "FreePrize.Text2",
                            doneCallback: (DialogInstance _dialogInstance) => {
            if (doneCallback != null)
            {
                doneCallback(_dialogInstance);
            }

            ShowFreePrizeDone(_dialogInstance);
        },
                            dialogButtons:
                            ContentShowsButtons
            ? DialogInstance.DialogButtonsType.Custom
            : DialogInstance.DialogButtonsType.Ok);

        GameObject ImageCoins = GameObjectHelper.GetChildNamedGameObject(dialogInstance.gameObject, "ph_Image", true);

        ImageCoins.SetActive(false);

        if (this.PrizeItems > 0 && prizeIsCoins && sprite != null)
        {
            ImageCoins.SetActive(true);
            ImageCoins.GetComponent <Image>().sprite = sprite;
        }

        StartNewCountdown();

        if (!Debug.isDebugBuild)
        {
            Fabric.Answers.Answers.LogContentView("FreePrize", "Dialog");
        }
#if !UNITY_EDITOR
        AdColonyManager.Instance.RequestAd(Constants.AdColonyDoubleDailyBonus);
        LoadAdmobRewarderVideo();
#endif

        return(dialogInstance);
    }
    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);
            }
        });
    }
Пример #30
0
 /// <summary>
 /// Load saved values from preferences or set to default if not found.
 /// </summary>
 /// <param name="prefix"></param>
 /// <param name="useSecurePrefs"></param>
 public void Load(string prefix = "", bool?useSecurePrefs = null)
 {
     foreach (var variable in BoolVariables)
     {
         if (variable.PersistChanges)
         {
             variable.Value = PreferencesFactory.GetBool(prefix + variable.Tag, variable.DefaultValue, useSecurePrefs);
         }
         else
         {
             variable.Value = variable.DefaultValue;
         }
     }
     foreach (var variable in FloatVariables)
     {
         if (variable.PersistChanges)
         {
             variable.Value = PreferencesFactory.GetFloat(prefix + variable.Tag, variable.DefaultValue, useSecurePrefs);
         }
         else
         {
             variable.Value = variable.DefaultValue;
         }
     }
     foreach (var variable in IntVariables)
     {
         if (variable.PersistChanges)
         {
             variable.Value = PreferencesFactory.GetInt(prefix + variable.Tag, variable.DefaultValue, useSecurePrefs);
         }
         else
         {
             variable.Value = variable.DefaultValue;
         }
     }
     foreach (var variable in StringVariables)
     {
         if (variable.PersistChanges)
         {
             variable.Value = PreferencesFactory.GetString(prefix + variable.Tag, variable.DefaultValue, useSecurePrefs);
         }
         else
         {
             variable.Value = variable.DefaultValue;
         }
     }
     foreach (var variable in Vector2Variables)
     {
         if (variable.PersistChanges)
         {
             variable.Value = PreferencesFactory.GetVector2(prefix + variable.Tag, variable.DefaultValue, useSecurePrefs) ?? Vector2.zero;
         }
         else
         {
             variable.Value = variable.DefaultValue;
         }
     }
     foreach (var variable in Vector3Variables)
     {
         if (variable.PersistChanges)
         {
             variable.Value = PreferencesFactory.GetVector3(prefix + variable.Tag, variable.DefaultValue, useSecurePrefs) ?? Vector3.zero;
         }
         else
         {
             variable.Value = variable.DefaultValue;
         }
     }
 }