| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Runtime.Serialization;
- using System.Xml;
- using SlamCross.Models;
- namespace SlamCross.Services;
- public static class TrackSettingsService
- {
- public static void Save(SourceGame game)
- {
- var settingsFile = Path.Combine(game.LibraryName, "TrackSettings.xml");
- var toSave = new List<Track>();
- foreach (var t in game.Tracks)
- {
- if (!string.IsNullOrEmpty(t.Hotkey) || t.Volume != 100 || t.EndPos > 0)
- toSave.Add(t);
- }
- if (toSave.Count > 0)
- {
- var serializer = new DataContractSerializer(typeof(List<Track>));
- using var writer = new StreamWriter(settingsFile);
- using var xml = new XmlTextWriter(writer);
- serializer.WriteObject(xml, toSave);
- }
- else if (File.Exists(settingsFile))
- {
- File.Delete(settingsFile);
- }
- }
- public static void Load(SourceGame game)
- {
- var settingsFile = Path.Combine(game.LibraryName, "TrackSettings.xml");
- if (!File.Exists(settingsFile)) return;
- List<Track> saved;
- try
- {
- var serializer = new DataContractSerializer(typeof(List<Track>));
- using var reader = new StreamReader(settingsFile);
- using var xml = new XmlTextReader(reader);
- saved = (List<Track>)serializer.ReadObject(xml)! ?? new List<Track>();
- }
- catch { return; }
- foreach (var track in game.Tracks)
- {
- foreach (var s in saved)
- {
- if (track.Name == s.Name)
- {
- track.Hotkey = s.Hotkey;
- track.Volume = s.Volume;
- track.StartPos = s.StartPos;
- track.EndPos = s.EndPos;
- }
- }
- }
- }
- }
|