From 4a0dce0e4450816209307ffbc76c8f315095fcf2 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Tue, 6 Sep 2022 13:20:39 +0200 Subject: [PATCH] minor fixes --- MareSynchronos/Managers/CachedPlayer.cs | 3 +-- MareSynchronos/Managers/IpcManager.cs | 9 ++++--- MareSynchronos/MareSynchronos.csproj | 4 ++++ MareSynchronos/UI/CompactUI.cs | 9 +++++-- MareSynchronos/UI/DownloadUi.cs | 2 +- MareSynchronos/Utils/Various.cs | 32 +++++++++++++++++++++++++ 6 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 MareSynchronos/Utils/Various.cs diff --git a/MareSynchronos/Managers/CachedPlayer.cs b/MareSynchronos/Managers/CachedPlayer.cs index 95c167f..2b91f4e 100644 --- a/MareSynchronos/Managers/CachedPlayer.cs +++ b/MareSynchronos/Managers/CachedPlayer.cs @@ -230,8 +230,7 @@ public class CachedPlayer private void ApplyBaseData(Dictionary moddedPaths) { _ipcManager.PenumbraRemoveTemporaryCollection(PlayerName!); - var tempCollection = _ipcManager.PenumbraCreateTemporaryCollection(PlayerName!); - _ipcManager.PenumbraSetTemporaryMods(tempCollection, moddedPaths, _cachedData.ManipulationData); + _ipcManager.PenumbraSetTemporaryMods(PlayerName!, moddedPaths, _cachedData.ManipulationData); } private unsafe void ApplyCustomizationData(ObjectKind objectKind) diff --git a/MareSynchronos/Managers/IpcManager.cs b/MareSynchronos/Managers/IpcManager.cs index 4e89693..c2b7304 100644 --- a/MareSynchronos/Managers/IpcManager.cs +++ b/MareSynchronos/Managers/IpcManager.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using Dalamud.Game.ClientState.Objects.Types; using MareSynchronos.Utils; using MareSynchronos.WebAPI; +using Lumina.Excel.GeneratedSheets; +using Action = System.Action; namespace MareSynchronos.Managers { @@ -270,18 +272,19 @@ namespace MareSynchronos.Managers return resolvedPaths; } - public void PenumbraSetTemporaryMods(string collectionName, Dictionary modPaths, string manipulationData) + public void PenumbraSetTemporaryMods(string characterName, Dictionary modPaths, string manipulationData) { if (!CheckPenumbraApi()) return; actionQueue.Enqueue(() => { - Logger.Verbose("Assigning temp mods for " + collectionName); + var ret = _penumbraCreateTemporaryCollection.InvokeFunc("MareSynchronos", characterName, true); + Logger.Verbose("Assigning temp mods for " + ret.Item2); foreach (var mod in modPaths) { Logger.Verbose(mod.Key + " => " + mod.Value); } - _penumbraSetTemporaryMod.InvokeFunc("MareSynchronos", collectionName, modPaths, manipulationData, 0); + _penumbraSetTemporaryMod.InvokeFunc("MareSynchronos", ret.Item2, modPaths, manipulationData, 0); }); } diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index 25aef47..277faca 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -32,6 +32,10 @@ + + build$([System.DateTime]::UtcNow.ToString("yyyy-MM-ddTHH:mm:ss:fffZ")) + + diff --git a/MareSynchronos/UI/CompactUI.cs b/MareSynchronos/UI/CompactUI.cs index cccdec9..f7011f6 100644 --- a/MareSynchronos/UI/CompactUI.cs +++ b/MareSynchronos/UI/CompactUI.cs @@ -42,9 +42,14 @@ namespace MareSynchronos.UI string dateTime = "DEV VERSION"; try { - dateTime = new FileInfo(Assembly.GetExecutingAssembly().Location).LastWriteTime.ToString("yyyyMMddHHmmss"); + dateTime = VariousExtensions.GetLinkerTime(Assembly.GetCallingAssembly()).ToString("yyyyMMddHHmmss"); + } + catch (Exception ex) + { + Logger.Warn("Could not get assembly name"); + Logger.Warn(ex.Message); + Logger.Warn(ex.StackTrace); } - catch { } this.WindowName = "Mare Synchronos " + dateTime + "###MareSynchronosMainUI"; #else this.WindowName = "Mare Synchronos " + Assembly.GetExecutingAssembly().GetName().Version + "###MareSynchronosMainUI"; diff --git a/MareSynchronos/UI/DownloadUi.cs b/MareSynchronos/UI/DownloadUi.cs index fe30ce1..9e9f05f 100644 --- a/MareSynchronos/UI/DownloadUi.cs +++ b/MareSynchronos/UI/DownloadUi.cs @@ -101,7 +101,7 @@ public class DownloadUi : Window, IDisposable if (_apiController.CurrentDownloads.Any()) { - var currentDownloads = _apiController.CurrentDownloads.SelectMany(k => k.Value).ToList(); + var currentDownloads = _apiController.CurrentDownloads.Where(d => d.Value != null && d.Value.Any()).ToList().SelectMany(k => k.Value).ToList(); var multBase = currentDownloads.Any() ? 0 : 2; var doneDownloads = currentDownloads.Count(c => c.IsTransferred); var totalDownloads = currentDownloads.Count; diff --git a/MareSynchronos/Utils/Various.cs b/MareSynchronos/Utils/Various.cs new file mode 100644 index 0000000..fa96e17 --- /dev/null +++ b/MareSynchronos/Utils/Various.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace MareSynchronos.Utils +{ + public static class VariousExtensions + { + public static DateTime GetLinkerTime(Assembly assembly) + { + const string BuildVersionMetadataPrefix = "+build"; + + var attribute = assembly.GetCustomAttribute(); + if (attribute?.InformationalVersion != null) + { + var value = attribute.InformationalVersion; + var index = value.IndexOf(BuildVersionMetadataPrefix); + if (index > 0) + { + value = value[(index + BuildVersionMetadataPrefix.Length)..]; + return DateTime.ParseExact(value, "yyyy-MM-ddTHH:mm:ss:fffZ", CultureInfo.InvariantCulture); + } + } + + return default; + } + } +}