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(); } }
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); }
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; } }
/// <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 }
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)); }
bool FacebookProfilePictureHandler(BaseMessage message) { FacebookProfilePictureMessage m = message as FacebookProfilePictureMessage; if (m.UserId == PreferencesFactory.GetString(Constants.ProfileFBUserId)) { _avatarImage.texture = m.Texture; } return(true); }
/// <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); } }
/// <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(); } }
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); }
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); }
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); }
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()); }
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)); }
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); } }); } }
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); } })); }
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); } }); }
/// <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); } }); }
/// <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; } } }