diff --git a/StarterNG.Tests/PhysicsAndAssetsTests.cs b/StarterNG.Tests/PhysicsAndAssetsTests.cs index 4661e24..1e86f73 100644 --- a/StarterNG.Tests/PhysicsAndAssetsTests.cs +++ b/StarterNG.Tests/PhysicsAndAssetsTests.cs @@ -65,6 +65,19 @@ public class PhysicsAndAssetsTests Assert.Equal(125, physics.VMax); } + [Fact] + public void A_dot_in_the_model_name_is_part_of_the_name() + { + // As in the game: cd/9-107_v1 holds 9-107.13.fiz, 9-107.6.fiz and more. + var installation = new TestInstallation(new InMemoryFileSystem() + .WithFile(Fiz("cd", "9-107_v1", "9-107.13"), "Load: LoadAccepted=coal MaxLoad=58") + .WithFile(Fiz("cd", "9-107_v1", "9-107.6"), "Load: LoadAccepted=coal MaxLoad=55")); + + Assert.Equal(58, installation.Physics.For("cd/9-107_v1/", "9-107.13")!.MaxLoad); + Assert.Equal(55, installation.Physics.For("cd/9-107_v1/", "9-107.6")!.MaxLoad); + Assert.Equal(58, installation.Physics.For("cd/9-107_v1/", "9-107.13.e3d")!.MaxLoad); + } + [Fact] public void A_dumb_variant_stands_in_when_the_model_has_no_fiz_of_its_own() { diff --git a/StarterNG/Infrastructure/Vehicles/FizPhysicsRepository.cs b/StarterNG/Infrastructure/Vehicles/FizPhysicsRepository.cs index bd1ed2b..e17128a 100644 --- a/StarterNG/Infrastructure/Vehicles/FizPhysicsRepository.cs +++ b/StarterNG/Infrastructure/Vehicles/FizPhysicsRepository.cs @@ -51,7 +51,7 @@ public sealed class FizPhysicsRepository : IPhysicsRepository if (string.IsNullOrEmpty(model)) return null; - string name = Path.GetFileNameWithoutExtension(model); + string name = Path.GetFileName(model); if (name.Length == 0) return null; @@ -60,7 +60,10 @@ public sealed class FizPhysicsRepository : IPhysicsRepository if (_cache.TryGetValue(key, out var cached)) return cached; - var physics = Read(folder, name); + // The name as written first: in 9-107.13 the dot is part of the name, not an extension. + string bare = Path.GetFileNameWithoutExtension(name); + var physics = Read(folder, name) + ?? (bare.Length > 0 && bare != name ? Read(folder, bare) : null); _cache[key] = physics; return physics; }