move towards auto-import

This commit is contained in:
2024-09-17 20:20:42 +02:00
parent 227d8a11d7
commit 802180a26e
8 changed files with 184 additions and 81 deletions

View File

@ -1,20 +1,41 @@
using System;
using CsvHelper.Configuration;
using CsvHelper;
using System.IO;
using System.Reactive.Linq;
using Splat;
using StarsAssistant.Helpers;
namespace StarsAssistant.Services;
public class CSVDataLoader
public class CSVDataLoader
{
/// <summary>
/// Reference to the game metadata, retrieved by DI
/// </summary>
protected Model.Game game;
protected Services.Game Game = Locator.Current.GetService<Services.Game>()!;
public CSVDataLoader()
public void CSVDataLoader()
{
game = Locator.Current.GetService<Model.Game>()!;
}
}
public void StartPlanetCSVWatcher()
{
// TODO: which scheduler for Throttle?
var watcher = FsWatcher
.ObserveFileSystem(Game.GamePath, new string[] { Game.PlanetFileSearchPattern });
.ThrottleAndDistinct(2);
/*
watcher.Subscribe(x =>
{
Console.WriteLine($"{DateTime.Now.ToLongTimeString()} got {x.Count()} events:");
foreach (var fsEvent in x)
{
Console.WriteLine($"{DateTime.Now.ToLongTimeString()} {i++} {fsEvent.FullPath} - {fsEvent.ChangeType}");
}
});
*/
}
}

View File

@ -0,0 +1,33 @@
namespace StarsAssistant.Services;
public class Game
{
/// <summary>
/// The base path in which all game files reside.
/// </summary>
public required string GamePath { get; set; }
/// <summary>
/// The base name without extensions of your game, inside the GamePath folder.
/// All dependant files are resolved using this name.
/// </summary>
public required string BaseName { get; set; }
/// <summary>
/// Combine into the DatabaseName
/// </summary>
public string DatabaseFileName => Path.Combine(GamePath, $"{BaseName}.sqlite");
/// <summary>
/// Search for Planet files using this pattern, will give you all pxx files.
/// </summary>
public string PlanetFileSearchPattern => $"{BaseName}.p*";
/// <summary>
/// Get the name of a planet file for a given race.
/// </summary>
/// <param name="r">The race to load.</param>
/// <returns>Fully qualified file path.</returns>
public string PlanetFileForRace (Model.Race r) => Path.Combine(GamePath, $"{BaseName}.p{r.PlayerFileId}");
}