private GenericModsEnabler(string rootDirectory, string modsDirectory, bool useHardLinks = true) { FileUtils.EnsureDirectoryExists(rootDirectory); FileUtils.EnsureDirectoryExists(modsDirectory); RootDirectory = rootDirectory; ModsDirectory = modsDirectory; ConfigFilename = Path.Combine(ModsDirectory, ConfigFileName); _useHardLinks = useHardLinks; Mods = new ChangeableObservableCollection <GenericMod>(); ScanMods(false); FileUtils.EnsureDirectoryExists(modsDirectory); _watcher = new FileSystemWatcher { Path = modsDirectory, NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName, Filter = "*", EnableRaisingEvents = true, IncludeSubdirectories = true }; _watcher.Changed += OnWatcher; _watcher.Created += OnWatcher; _watcher.Deleted += OnWatcher; _watcher.Renamed += OnWatcher; }
public ServerPresetsManager() { SavedDrivers = new ChangeableObservableCollection <ServerSavedDriver>(ServerSavedDriver.Load(DriversFilename)); SavedDrivers.CollectionChanged += OnSavedDriversCollectionChanged; SavedDrivers.ItemPropertyChanged += OnSavedDriversItemPropertyChanged; var directory = Path.GetDirectoryName(DriversFilename); if (directory != null) { Directory.CreateDirectory(directory); _directoryWatcher = new FileSystemWatcher { Path = directory, NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName, Filter = Path.GetFileName(DriversFilename), EnableRaisingEvents = true, IncludeSubdirectories = false }; _directoryWatcher.Created += OnDirectoryWatcher; _directoryWatcher.Renamed += OnDirectoryWatcher; _directoryWatcher.Changed += OnDirectoryWatcher; _directoryWatcher.Deleted += OnDirectoryWatcher; } }
public ViewModel(TrackObject track, TrackSkinObject trackSkin, IEnumerable <TextureEntry> images) { Track = track; TrackSkin = trackSkin; Images = new ChangeableObservableCollection <TextureEntry>(images); Images.ItemPropertyChanged += OnItemPropertyChanged; UpdateSummary(); }
public ViewModel(IFilter <RaceResultsObject> filter, List <RaceResultsObject> entries) { _filter = filter; Entries = new ChangeableObservableCollection <RaceResultsObject>(entries); Entries.ItemPropertyChanged += OnPropertyChanged; _watcher = new DirectoryWatcher(RaceResultsStorage.Instance.SessionsDirectory); _watcher.Update += OnUpdate; }
public ObsoleteDetails(CarObject car, IEnumerable <ObsoletableAspect> aspects) { Car = car; Aspects = new ChangeableObservableCollection <ObsoletableAspect>(aspects); LeftUnsolved = Aspects.Count; Aspects.ItemPropertyChanged += OnItemPropertyChanged; }
public ServerPresetObject(IFileAcManager manager, string id, bool enabled) : base(manager, id, enabled) { Sessions = new ChangeableObservableCollection <ServerSessionEntry>(new[] { new ServerSessionEntry("BOOK", ToolsStrings.Session_Booking, false, false), new ServerSessionEntry("PRACTICE", ToolsStrings.Session_Practice, true, true), new ServerSessionEntry("QUALIFY", ToolsStrings.Session_Qualification, true, true), new ServerRaceSessionEntry("RACE", ToolsStrings.Session_Race, true, true), }); }
public ViewModel(string directory, IFilter <FileInfo> filter, IEnumerable <Screenshot> screenshots) { Screenshots = new ChangeableObservableCollection <Screenshot>(screenshots); Screenshots.ItemPropertyChanged += OnPropertyChanged; _directory = directory; _filter = filter; _watcher = new DirectoryWatcher(directory); _watcher.Update += OnUpdate; }
public CarPaint(string detailsTexture, int flakesSize = 256, Color?defaultColor = null) : base(true) { LiveryPriority = 1; FlakesSize = flakesSize; SupportsFlakes = flakesSize > 0; DetailsTexture = detailsTexture; DefaultColor = defaultColor ?? Color.FromRgb(255, 255, 255); Patterns = new ChangeableObservableCollection <CarPaintPattern>(); Patterns.ItemPropertyChanged += OnPatternChanged; AffectedTextures.Add(detailsTexture); }
public ServerPresetObject(IFileAcManager manager, string id, bool enabled) : base(manager, id, enabled) { SimpleSessions = new[] { new ServerSessionEntry("BOOK", ToolsStrings.Session_Booking, false, false), new ServerSessionEntry("PRACTICE", ToolsStrings.Session_Practice, true, true), new ServerQualificationSessionEntry("QUALIFY", ToolsStrings.Session_Qualification, true, true) }; RaceSession = new ServerRaceSessionEntry("RACE", ToolsStrings.Session_Race, true, true); Sessions = new ChangeableObservableCollection <ServerSessionEntry>(SimpleSessions.Append(RaceSession)); Sessions.ItemPropertyChanged += OnSessionEntryPropertyChanged; }
private static async Task <ChangeableObservableCollection <TyresMachineInfo> > LoadMachinesAsyncInner() { FilesStorage.Instance.Watcher(ContentCategory.NeuralTyresMachines).Update += OnUpdate; _list = new ChangeableObservableCollection <TyresMachineInfo>(await Task.Run(() => GetList())); return(_list); IEnumerable <TyresMachineInfo> GetList() { return(FilesStorage.Instance.GetContentFiles(ContentCategory.NeuralTyresMachines) .TryToSelect(CreateTyresMachineInfo, e => NonfatalError.NotifyBackground("Failed to load tyres machine", e)) .ToList()); } }
public ViewModel() { Entries = new ChangeableObservableCollection <PresetPerMode>(); Modes = new BetterObservableCollection <Mode>(); AppPresets = new HierarchicalGroup("", UserPresetsControl.GroupPresets(AcSettingsHolder.AppsPresetsKey)); AudioPresets = new HierarchicalGroup("", UserPresetsControl.GroupPresets(AcSettingsHolder.AudioPresetsKey)); VideoPresets = new HierarchicalGroup("", UserPresetsControl.GroupPresets(AcSettingsHolder.VideoPresetsKey)); UpdateModes(); FilesStorage.Instance.Watcher(ContentCategory.PresetsPerModeConditions).Update += OnCategoriesUpdate; Saveable.Initialize(); Entries.CollectionChanged += OnCollectionChanged; Entries.ItemPropertyChanged += OnItemPropertyChanged; }
protected override async Task <bool> LoadOverride(IProgress <AsyncProgressEntry> progress, CancellationToken cancellation) { await CarsManager.Instance.EnsureLoadedAsync(); Entries = new ChangeableObservableCollection <CarObjectEntry>( CarsManager.Instance.EnabledOnly.OrderBy(x => x.DisplayName).Select(x => new CarObjectEntry(x))); for (var i = 0; i < Entries.Count; i++) { var entry = Entries[i]; progress.Report(new AsyncProgressEntry($"Loading skins ({entry.Car.DisplayName})…", i, Entries.Count)); await entry.Car.SkinsManager.EnsureLoadedAsync(); entry.SelectedSkins = entry.Car.EnabledOnlySkins.Where(x => x.HasError(AcErrorType.CarSkin_PreviewIsMissing)).ToList(); } Entries.ItemPropertyChanged += OnEntryPropertyChanged; SelectedEntry = Entries.FirstOrDefault(); UpdateTotalSelected(); return(Entries.Any()); }
/// <summary> /// Don’t forget to call it in overrided versions. /// </summary> public void Initialize(bool reset) { // ReSharper disable once VirtualMemberCallInConstructor _saveable = CreateSaveable(); if (reset) { _saveable.Reset(); } else { _saveable.LoadOrReset(); } Slots = new ChangeableObservableCollection <CarSlotWrapped>(Renderer.CarSlots.Select(x => new CarSlotWrapped(x))); Slots.ItemPropertyChanged += OnSlotPropertyChanged; Slots.CollectionChanged += OnSlotsCollectionChanged; Renderer.PropertyChanged += OnRendererPropertyChanged; foreach (var slot in Slots) { slot.MainCar = ReferenceEquals(Renderer.MainSlot, slot.Slot); } }
protected TexturePattern(bool enabledByDefault) : base(enabledByDefault) { Patterns = new ChangeableObservableCollection <CarPaintPattern>(); Patterns.ItemPropertyChanged += OnPatternChanged; }
private ContentInstallationManager() { DownloadList = new ChangeableObservableCollection <ContentInstallationEntry>(); }
protected override void LoadData(IniFile ini) { foreach (var session in Sessions) { session.Load(ini); } IsPickupModeAvailable = !Sessions.GetById(@"BOOK").IsEnabled; var section = ini["SERVER"]; Name = section.GetPossiblyEmpty("NAME"); Password = section.GetNonEmpty("PASSWORD"); AdminPassword = section.GetNonEmpty("ADMIN_PASSWORD"); ShowOnLobby = section.GetBool("REGISTER_TO_LOBBY", true); LoopMode = section.GetBool("LOOP_MODE", true); PickupMode = section.GetBool("PICKUP_MODE_ENABLED", false); RaceOverTime = TimeSpan.FromSeconds(section.GetDouble("RACE_OVER_TIME", 60d)); Capacity = section.GetInt("MAX_CLIENTS", 3); UdpPort = section.GetInt("UDP_PORT", 9600); TcpPort = section.GetInt("TCP_PORT", 9600); HttpPort = section.GetInt("HTTP_PORT", 8081); SendIntervalHz = section.GetInt("CLIENT_SEND_INTERVAL_HZ", 18); Threads = section.GetInt("NUM_THREADS", 2); TrackId = section.GetNonEmpty("TRACK", "imola"); TrackLayoutId = section.GetNonEmpty("CONFIG_TRACK"); CarIds = section.GetStrings("CARS", ';'); Abs = section.GetIntEnum("ABS_ALLOWED", ServerPresetAssistState.Factory); TractionControl = section.GetIntEnum("TC_ALLOWED", ServerPresetAssistState.Factory); StabilityControl = section.GetBool("STABILITY_ALLOWED", false); AutoClutch = section.GetBool("AUTOCLUTCH_ALLOWED", false); TyreBlankets = section.GetBool("TYRE_BLANKETS_ALLOWED", false); ForceVirtualMirror = section.GetBool("FORCE_VIRTUAL_MIRROR", true); FuelRate = section.GetInt("FUEL_RATE", 100); DamageRate = section.GetInt("DAMAGE_MULTIPLIER", 100); TyreWearRate = section.GetInt("TYRE_WEAR_RATE", 100); AllowTyresOut = section.GetInt("ALLOWED_TYRES_OUT", 2); MaxBallast = section.GetInt("MAX_BALLAST_KG", 0); QualifyLimitPercentage = section.GetInt("QUALIFY_MAX_WAIT_PERC", 120); JumpStart = section.GetIntEnum("START_RULE", ServerPresetJumpStart.CarLocked); SunAngle = section.GetDouble("SUN_ANGLE", 0d); DynamicTrackEnabled = ini.ContainsKey(@"DYNAMIC_TRACK"); TrackProperties = Game.TrackProperties.Load(DynamicTrackEnabled ? ini["DYNAMIC_TRACK"] : ini["__CM_DYNAMIC_TRACK_OFF"]); KickVoteQuorum = section.GetInt("KICK_QUORUM", 85); SessionVoteQuorum = section.GetInt("VOTING_QUORUM", 80); VoteDuration = TimeSpan.FromSeconds(section.GetDouble("VOTE_DURATION", 20d)); BlacklistMode = section.GetBool("BLACKLIST_MODE", true); MaxCollisionsPerKm = section.GetInt("MAX_CONTACTS_PER_KM", -1); // At least one weather entry is needed in order to launch the server var weather = new ChangeableObservableCollection <ServerWeatherEntry>(ini.GetSections("WEATHER").Select(x => new ServerWeatherEntry(x))); if (weather.Count == 0) { weather.Add(new ServerWeatherEntry()); } Weather = weather; }
private void LoadEntryListData(IniFile ini) { DriverEntries = new ChangeableObservableCollection <ServerPresetDriverEntry>(ini.GetSections("CAR").Select(x => new ServerPresetDriverEntry(x))); }