From 27d4bfc8b9f1eab4c3546abf534b084a0a5e5b6b Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Sun, 6 Sep 2020 09:33:31 +1000 Subject: [PATCH] Fix de/serialisation of .tasproj MovieVersion header (fixes #2377) .tasproj files written from both American/global and European PCs will now load anywhere. No new files will use ',' in the header, only '.'. --- src/BizHawk.Client.Common/movie/MovieService.cs | 12 +++++++++--- src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs | 3 ++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/BizHawk.Client.Common/movie/MovieService.cs b/src/BizHawk.Client.Common/movie/MovieService.cs index c8cbbe26b0..9e8bb6ec99 100644 --- a/src/BizHawk.Client.Common/movie/MovieService.cs +++ b/src/BizHawk.Client.Common/movie/MovieService.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using BizHawk.Common.NumberExtensions; @@ -46,10 +47,15 @@ namespace BizHawk.Client.Common .Trim() .Replace("v", ""); - var result = double.TryParse(versionStr, out double version); - if (result) + if (double.TryParse(versionStr, NumberStyles.Float, CultureInfo.InvariantCulture, out var parsedWithPeriod)) { - return version; + return parsedWithPeriod; + } + + // Accept .tasproj files written from <= 2.5 where the host culture settings used ',' + if (double.TryParse(versionStr, NumberStyles.Float, CultureInfo.InvariantCulture, out var parsedWithComma)) + { + return parsedWithComma; } return 1.0F; diff --git a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index 7642d6f08d..1a669b57eb 100644 --- a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.Globalization; using System.IO; using System.Linq; using BizHawk.Emulation.Common; @@ -19,7 +20,7 @@ namespace BizHawk.Client.Common { Branches = new TasBranchCollection(this); ChangeLog = new TasMovieChangeLog(this); - Header[HeaderKeys.MovieVersion] = $"BizHawk v2.0 Tasproj v{CurrentVersion}"; + Header[HeaderKeys.MovieVersion] = $"BizHawk v2.0 Tasproj v{CurrentVersion.ToString(CultureInfo.InvariantCulture)}"; Markers = new TasMovieMarkerList(this); Markers.CollectionChanged += Markers_CollectionChanged; Markers.Add(0, "Power on");