public GameSettingsProfileBase CreateProfile(string name, string color, Guid parentId) { if (!(!string.IsNullOrWhiteSpace(name))) { throw new ArgumentNullException("!string.IsNullOrWhiteSpace(name)"); } if (!(!string.IsNullOrWhiteSpace(color))) { throw new ArgumentNullException("!string.IsNullOrWhiteSpace(color)"); } if (!(parentId != Guid.Empty)) { throw new ArgumentNullException("parentId != Guid.Empty"); } var parent = Profiles.First(x => x.Id == parentId); if (_profiles.Any(x => x.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase))) { throw new ProfileWithSameNameAlreadyExistsException(); } var profile = new GameSettingsProfile(name, color, parent); foreach (var gs in _gameSettings) { gs.Register(profile); } _profiles.Add(profile); ActiveProfile = profile; return(profile); }
public GameSettingsController() { _profiles = new ReactiveList <GameSettingsProfileBase> { new GlobalGameSettingsProfile() }; _activeProfile = _profiles.First(); Profiles = _profiles.CreateDerivedCollection(x => x); SetupRefresh(); }
public void ActivateProfile(Guid uuid) { if (!(uuid != Guid.Empty)) { throw new ArgumentNullException("uuid != Guid.Empty"); } ActiveProfile = _profiles.First(x => x.Id == uuid); }
protected GameSettingsProfile(Guid id, string name, string color, GameSettingsProfileBase parent) : base(id, name, color) { if (parent == null) { throw new ArgumentNullException(nameof(parent)); } _parent = parent; SetupRefresh(); }
public void ActivateProfile(string name) { if (!(!string.IsNullOrWhiteSpace(name))) { throw new ArgumentNullException("!string.IsNullOrWhiteSpace(name)"); } var profile = _profiles.First(x => x.Name == name); ActiveProfile = profile; }
static IEnumerable <IGetData> GetAllProfiles(GameSettingsProfileBase activeProfile) { if (!(activeProfile != null)) { throw new NullReferenceException("activeProfile != null"); } var profile = activeProfile; while (profile != null) { yield return(profile); profile = profile.Parent; } }
void OnDeserialized(StreamingContext context) { _gameSettings = new List <GameSettings>(); if (_profiles.All(x => x.Id != GlobalGameSettingsProfile.GlobalId)) { _profiles.Insert(0, new GlobalGameSettingsProfile()); } var globalProfile = _profiles.First(x => x.Id == GlobalGameSettingsProfile.GlobalId); Profiles = _profiles.CreateDerivedCollection(x => x); _activeProfile = _profiles.First(x => x.Id == _activeProfileGuid); foreach (var p in _profiles.Where(p => p.Id != GlobalGameSettingsProfile.GlobalId)) { p.Parent = _profiles.FirstOrDefault(x => x.Id == p.ParentId) ?? globalProfile; } SetupRefresh(); }
public void DeleteProfile(Guid uuid) { if (!(uuid != Guid.Empty)) { throw new ArgumentNullException("uuid != Guid.Empty"); } if (ActiveProfile.Id == uuid) { ActiveProfile = _profiles.First(); } var profile = _profiles.First(x => x.Id == uuid); _profiles.Remove(profile); foreach (var p in _profiles.Where(p => profile.Parent == profile)) { p.Parent = null; } }
public GameSettingsProfile(string name, string color, GameSettingsProfileBase parent) : this(Guid.NewGuid(), name, color, parent) { }