static public void PullOrInitPersistentState() { FileInfo PSArchive = new FileInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Blackhole Media Systems\\Event Horizon Framework\\persistence\\settingsstates.eha"); if (PSArchive.Exists) { BinaryReader Reader = new BinaryReader(PSArchive.OpenRead()); String State = Reader.ReadString(); while (State.Contains("<")) { State = State.Remove(0, State.IndexOf("<") + 1); String CurrentAttr = State.Remove(State.IndexOf(">")); State = State.Remove(0, State.IndexOf(">") + 1); String[] Attr = CurrentAttr.Split('='); switch (Attr[0]) { case "globalvolume": float NV = Convert.ToSingle(Attr[1]); Shell.GlobalVolume = NV; break; case "globalmute": if (Attr[1] == "true") { Shell.Mute = true; } else if (Attr[1] == "false") { Shell.Mute = false; } break; case "tickwriteinterval": int TR = Convert.ToInt32(Attr[1]); TextEntity.TickWriteInterval = TR; break; case "applicablesavetype": ApplicableSaveType = Attr[1]; break; case "isfullscreen": if (Attr[1] == "true" && Shell.QueryFullscreen() == false) { Shell.ToggleFullscreen(); } else if (Attr[1] == "false" && Shell.QueryFullscreen() == true) { Shell.ToggleFullscreen(); } break; } } } else { WritePersistentState(); } }
static public void WritePersistentState() { String StateRecord = "Event Horizon Framework States Archive (Event Horizon Archive File) \nFile last updated at " + System.DateTime.Now.ToShortTimeString() + " " + System.DateTime.Now.ToShortDateString() + " \n" + "<globalvolume=" + Shell.GlobalVolume + "> \n" + "<globalmute=" + Shell.Mute.ToString().ToLower() + ">\n" + "<tickwriteinterval=" + TextEntity.TickWriteInterval + ">\n" + "<applicablesavetype=" + ApplicableSaveType + "> \n" + "<isfullscreen=" + Shell.QueryFullscreen().ToString().ToLower() + "> \n"; BinaryWriter Writer = new BinaryWriter(new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Blackhole Media Systems\\Event Horizon Framework\\persistence\\settingsstates.eha", FileMode.Create)); Writer.Write(StateRecord); Writer.Close(); }