public static void AddDistributeFlag(string flag) { if (string.IsNullOrEmpty(flag)) { return; } var flags = GetDistributeFlags(); if (flags.Length > 0) { if (flags[flags.Length - 1] == flag) { return; } } var fflags = RuntimeForbiddenDFlags; #if UNITY_EDITOR fflags.Remove(flag); #else if (fflags.Remove(flag)) { var sb = new System.Text.StringBuilder(); foreach (var nflag in fflags) { sb.Append('<'); sb.Append(nflag); } PlayerPrefs.SetString("___Pref__ForbiddenDistributeFlags", sb.ToString()); PlayerPrefs.Save(); } #endif var exflags = RuntimeExDFlags; for (int i = 0; i < exflags.Count; ++i) { if (exflags[i] == flag) { exflags.RemoveAt(i--); } } exflags.Add(flag); #if !UNITY_EDITOR { var sb = new System.Text.StringBuilder(); for (int i = 0; i < exflags.Count; ++i) { sb.Append('<'); sb.Append(exflags[i]); } PlayerPrefs.SetString("___Pref__OptionalDistributeFlags", sb.ToString()); PlayerPrefs.Save(); } #endif _RuntimeCachedDFlags = null; #if UNITY_ENGINE || UNITY_5_3_OR_NEWER RebuildRuntimeResCache(); #endif }
public static void SetDistributeFlags(IEnumerable <string> toRemove, IEnumerable <string> toAdd) { var pflags = PreRuntimeDFlags; var fflags = RuntimeForbiddenDFlags; bool fflagsChanged = false; var exflags = RuntimeExDFlags; bool exflagsChanged = false; if (toRemove != null) { foreach (var flag in toRemove) { for (int i = 0; i < exflags.Count; ++i) { if (exflags[i] == flag) { exflagsChanged = true; exflags.RemoveAt(i--); } } for (int i = 0; i < pflags.Count; ++i) { if (pflags[i] == flag) { fflagsChanged |= fflags.Add(flag); break; } } } } if (toAdd != null) { foreach (var flag in toAdd) { fflagsChanged |= fflags.Remove(flag); for (int i = 0; i < exflags.Count; ++i) { if (exflags[i] == flag) { exflags.RemoveAt(i--); } } exflags.Add(flag); exflagsChanged = true; } } #if !UNITY_EDITOR if (exflagsChanged) { var sb = new System.Text.StringBuilder(); for (int i = 0; i < exflags.Count; ++i) { sb.Append('<'); sb.Append(exflags[i]); } PlayerPrefs.SetString("___Pref__OptionalDistributeFlags", sb.ToString()); } if (fflagsChanged) { var sb = new System.Text.StringBuilder(); foreach (var nflag in fflags) { sb.Append('<'); sb.Append(nflag); } PlayerPrefs.SetString("___Pref__ForbiddenDistributeFlags", sb.ToString()); } #endif if (exflagsChanged || fflagsChanged) { #if !UNITY_EDITOR PlayerPrefs.Save(); #endif _RuntimeCachedDFlags = null; #if UNITY_ENGINE || UNITY_5_3_OR_NEWER RebuildRuntimeResCache(); #endif } }
public static void RemoveDistributeFlag(string flag) { if (string.IsNullOrEmpty(flag)) { return; } var fflags = RuntimeForbiddenDFlags; if (fflags.Contains(flag)) { return; } var exflags = RuntimeExDFlags; bool exflagsChanged = false; for (int i = 0; i < exflags.Count; ++i) { if (exflags[i] == flag) { exflagsChanged = true; exflags.RemoveAt(i--); } } if (exflagsChanged) { #if !UNITY_EDITOR var sb = new System.Text.StringBuilder(); for (int i = 0; i < exflags.Count; ++i) { sb.Append('<'); sb.Append(exflags[i]); } PlayerPrefs.SetString("___Pref__OptionalDistributeFlags", sb.ToString()); PlayerPrefs.Save(); #endif _RuntimeCachedDFlags = null; } var pflags = PreRuntimeDFlags; for (int i = 0; i < pflags.Count; ++i) { if (pflags[i] == flag) { fflags.Add(flag); #if !UNITY_EDITOR var sb = new System.Text.StringBuilder(); foreach (var nflag in fflags) { sb.Append('<'); sb.Append(nflag); } PlayerPrefs.SetString("___Pref__ForbiddenDistributeFlags", sb.ToString()); PlayerPrefs.Save(); #endif _RuntimeCachedDFlags = null; break; } } #if UNITY_ENGINE || UNITY_5_3_OR_NEWER RebuildRuntimeResCache(); #endif }