public static bool LoadDataFromFile() { string path = Path.Combine(Application.persistentDataPath, usersSavePath); try { DebugHelper.Log("TwitchPlayStrings: Loading Custom strings data from file: {0}", path); data = SettingsConverter.Deserialize <TwitchPlaySettingsData>(File.ReadAllText(path)); //JsonConvert.DeserializeObject<TwitchPlaySettingsData>(File.ReadAllText(path)); data.ValidateStrings(); WriteDataToFile(); } catch (FileNotFoundException) { DebugHelper.LogWarning("TwitchPlayStrings: File {0} was not found.", path); data = new TwitchPlaySettingsData(); WriteDataToFile(); return(false); } catch (Exception ex) { data = new TwitchPlaySettingsData(); DebugHelper.LogException(ex); return(false); } return(true); }
public static Tuple <bool, string> ResetSettingToDefault(string setting) { var split = setting.Split('.'); Type tpdata = typeof(TwitchPlaySettingsData); var settingFields = tpdata.GetFields(BindingFlags.Public | BindingFlags.Instance).Where(x => x.Name.ToLowerInvariant().Contains(split[0].ToLowerInvariant())).ToList(); DebugHelper.Log($"Found {settingFields.Count} settings"); if (!settingFields.Any()) { return(new Tuple <bool, string>(false, $"Setting {setting} not found.")); } var settingField = settingFields[0]; if (settingFields.Count > 1) { settingField = settingFields.FirstOrDefault(x => x.Name.Equals(split[0], StringComparison.InvariantCultureIgnoreCase)); if (settingField == null) { return(new Tuple <bool, string>(false, $"More than one setting with the name {setting} was found. Here are the settings available with the specified name: {settingFields.Select(x => x.Name).Join(", ")}")); } } var originalValue = settingField.GetValue(data); DebugHelper.Log($"Found exactly one. Settings name is {settingField.Name}, Settings type is {originalValue.GetType().Name}"); TwitchPlaySettingsData defaultData = new TwitchPlaySettingsData(); var defaultValue = settingField.GetValue(defaultData); settingField.SetValue(data, defaultValue); return(new Tuple <bool, string>(true, $"Setting {settingField.Name} reset to default value.")); }
public bool ValidateStrings() { TwitchPlaySettingsData data = new TwitchPlaySettingsData(); bool valid = true; valid &= ValidateString(ref InvalidCommand, data.InvalidCommand, 3); valid &= ValidateString(ref CommandError, data.CommandError, 4); valid &= ValidateString(ref HoldableInvalidCommand, data.HoldableInvalidCommand, 2); valid &= ValidateString(ref HoldableCommandError, data.HoldableCommandError, 3); valid &= ValidateString(ref AwardSolve, data.AwardSolve, 4); valid &= ValidateString(ref AwardStrike, data.AwardStrike, 8); valid &= ValidateString(ref AwardHoldableStrike, data.AwardHoldableStrike, 6); valid &= ValidateString(ref BombLiveMessage, data.BombLiveMessage, 0); valid &= ValidateString(ref MultiBombLiveMessage, data.MultiBombLiveMessage, 0); valid &= ValidateString(ref BombExplodedMessage, data.BombExplodedMessage, 1); valid &= ValidateString(ref BombDefusedMessage, data.BombDefusedMessage, 1); valid &= ValidateString(ref BombDefusedBonusMessage, data.BombDefusedBonusMessage, 1); valid &= ValidateString(ref BombDefusedFooter, data.BombDefusedFooter, 0); valid &= ValidateString(ref BombSoloDefusalMessage, data.BombSoloDefusalMessage, 3); valid &= ValidateString(ref BombSoloDefusalNewRecordMessage, data.BombSoloDefusalNewRecordMessage, 2); valid &= ValidateString(ref BombSoloDefusalFooter, data.BombSoloDefusalFooter, 0); valid &= ValidateString(ref BombAbortedMessage, data.BombAbortedMessage, 1); valid &= ValidateString(ref RankTooLow, data.RankTooLow, 0); valid &= ValidateString(ref SolverAndSolo, data.SolverAndSolo, 0); valid &= ValidateString(ref SoloRankQuery, data.SoloRankQuery, 3); valid &= ValidateString(ref RankQuery, data.RankQuery, 7); valid &= ValidateString(ref DoYouEvenPlayBro, data.DoYouEvenPlayBro, 1); valid &= ValidateString(ref TurnBombOnSolve, data.TurnBombOnSolve, 2); valid &= ValidateString(ref CancelBombTurn, data.CancelBombTurn, 2); valid &= ValidateString(ref ModuleClaimed, data.ModuleClaimed, 3); valid &= ValidateString(ref ModuleUnclaimed, data.ModuleUnclaimed, 3); valid &= ValidateString(ref ModuleNotClaimed, data.ModuleNotClaimed, 3); valid &= ValidateString(ref ModuleAlreadyOwned, data.ModuleAlreadyOwned, 3); valid &= ValidateString(ref AssignModule, data.AssignModule, 4); valid &= ValidateString(ref ModuleReady, data.ModuleReady, 3); valid &= ValidateString(ref TakeModule, data.TakeModule, 4); valid &= ValidateString(ref TakeInProgress, data.TakeInProgress, 3); valid &= ValidateString(ref ModuleAbandoned, data.ModuleAbandoned, 3); valid &= ValidateString(ref ModuleIsMine, data.ModuleIsMine, 3); valid &= ValidateString(ref NoTakes, data.NoTakes, 3); valid &= ValidateString(ref TooManyClaimed, data.TooManyClaimed, 2); valid &= ValidateString(ref ModulePlayer, data.ModulePlayer, 3); valid &= ValidateString(ref AlreadyClaimed, data.AlreadyClaimed, 4); valid &= ValidateString(ref AlreadySolved, data.AlreadySolved, 4); valid &= ValidateString(ref ClaimCooldown, data.ClaimCooldown, 4); valid &= ValidateString(ref OwnedModule, data.OwnedModule, 2); valid &= ValidateString(ref OwnedModuleList, data.OwnedModuleList, 2); valid &= ValidateString(ref NoOwnedModules, data.NoOwnedModules, 1); valid &= ValidateString(ref TwitchPlaysDisabled, data.TwitchPlaysDisabled, 1); valid &= ValidateString(ref MissionBinderDisabled, data.MissionBinderDisabled, 1); valid &= ValidateString(ref FreePlayDisabled, data.FreePlayDisabled, 1); valid &= ValidateString(ref FreePlayNeedyDisabled, data.FreePlayNeedyDisabled, 1); valid &= ValidateString(ref FreePlayHardcoreDisabled, data.FreePlayHardcoreDisabled, 1); valid &= ValidateString(ref FreePlayModsOnlyDisabled, data.FreePlayModsOnlyDisabled, 1); valid &= ValidateString(ref TimeModeCommandDisabled, data.TimeModeCommandDisabled, 1); valid &= ValidateString(ref ZenModeCommandDisabled, data.ZenModeCommandDisabled, 1); valid &= ValidateString(ref RetryInactive, data.RetryInactive, 0); valid &= ValidateString(ref AddedUserPower, data.AddedUserPower, 2, SettingsVersion < 1); valid &= ValidateString(ref RemoveUserPower, data.RemoveUserPower, 2, SettingsVersion < 1); valid &= ValidateString(ref BombHelp, data.BombHelp, 0); valid &= ValidateString(ref BlankBombEdgework, data.BlankBombEdgework, 0); valid &= ValidateString(ref BombEdgework, data.BombEdgework, 1); valid &= ValidateString(ref BombTimeRemaining, data.BombTimeRemaining, 2); valid &= ValidateString(ref BombTimeStamp, data.BombTimeStamp, 1); valid &= ValidateString(ref BombDetonateCommand, data.BombDetonateCommand, 0); valid &= ValidateString(ref BombStatusTimeMode, data.BombStatusTimeMode, 6); valid &= ValidateString(ref BombStatusVsMode, data.BombStatusVsMode, 5); valid &= ValidateString(ref BombStatus, data.BombStatus, 7); valid &= ValidateString(ref NotesSpaceFree, data.NotesSpaceFree, 0); valid &= ValidateString(ref Notes, data.Notes, 2); valid &= ValidateString(ref NotesTaken, data.NotesTaken, 2); valid &= ValidateString(ref NotesAppended, data.NotesTaken, 2); valid &= ValidateString(ref NoteSlotCleared, data.NoteSlotCleared, 1); valid &= ValidateString(ref GiveBonusPoints, data.GiveBonusPoints, 3); valid &= ValidateString(ref GiveBonusSolves, data.GiveBonusSolves, 3); valid &= ValidateString(ref GiveBonusStrikes, data.GiveBonusStrikes, 3); valid &= ValidateString(ref UnsubmittableAnswerPenalty, data.UnsubmittableAnswerPenalty, 5); valid &= ValidateString(ref UnsupportedNeedyWarning, data.UnsupportedNeedyWarning, 0, SettingsVersion < 2); valid &= ValidateFloat(ref AwardDropMultiplierOnStrike, data.AwardDropMultiplierOnStrike, 0, 1.0f); valid &= ValidateInt(ref InstantModuleClaimCooldown, data.InstantModuleClaimCooldown, 0); valid &= ValidateInt(ref InstantModuleClaimCooldownExpiry, data.InstantModuleClaimCooldownExpiry, 0); valid &= ValidateDictionaryEntry("infozen", ref BombCustomMessages, data.BombCustomMessages); valid &= ValidateModDistribution(ref ModDistributions); return(valid); }