From cae88c619fb5926e8ef30871083966b364ac8b65 Mon Sep 17 00:00:00 2001 From: DoctorVanGogh Date: Thu, 21 Sep 2017 20:51:44 +0200 Subject: [PATCH 1/4] added 'update from steam' option & logic --- Assemblies/ModSwitch.dll | Bin 47616 -> 51712 bytes Source/ModSwitch/ModSwitch.cs | 10 +- Source/ModSwitch/ModSwitch.csproj | 1 + Source/ModSwitch/Model/ModAttributes.cs | 17 ++ Source/ModSwitch/Properties/AssemblyInfo.cs | 2 +- Source/ModSwitch/Properties/version.txt | 2 +- Source/ModSwitch/[Patches]/Patches.cs | 187 ++++----------- Source/ModSwitch/[UI]/ModsConfig.cs | 252 ++++++++++++++++++++ Source/ModSwitch/[Util]/Util.cs | 7 + Textures/UI/SteamCopy.png | Bin 0 -> 502 bytes 10 files changed, 325 insertions(+), 153 deletions(-) create mode 100644 Source/ModSwitch/[UI]/ModsConfig.cs create mode 100644 Textures/UI/SteamCopy.png diff --git a/Assemblies/ModSwitch.dll b/Assemblies/ModSwitch.dll index 1a0ba1c1942ca371cda81ad4910980d65a86b2bb..95c2e756d4d13d2868c599253cff39d57fad02d5 100644 GIT binary patch literal 51712 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

tu4BoZ7DFKo*XzupN76HVN*U#egwqFrElCj8(Co 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 _settings.GetOrInsertAttributes(mod); + public ModAttributes this[ModMetaData mod] => this[mod.Identifier]; + public void MovePosition(ModMetaData mod, Position position) { List mods = (List) fiModLister_mods.GetValue(null); @@ -61,5 +58,6 @@ public void MovePosition(ModMetaData mod, Position position) { } } } + } } diff --git a/Source/ModSwitch/ModSwitch.csproj b/Source/ModSwitch/ModSwitch.csproj index d8f0076..f1a6c48 100644 --- a/Source/ModSwitch/ModSwitch.csproj +++ b/Source/ModSwitch/ModSwitch.csproj @@ -70,6 +70,7 @@ + diff --git a/Source/ModSwitch/Model/ModAttributes.cs b/Source/ModSwitch/Model/ModAttributes.cs index a7db7ec..a77d37d 100644 --- a/Source/ModSwitch/Model/ModAttributes.cs +++ b/Source/ModSwitch/Model/ModAttributes.cs @@ -12,10 +12,27 @@ class ModAttributes : IExposable { public Color? Color; + ///

+ /// For mods copied from steam: original identifier + /// + public string SteamOrigin; + /// + /// For mods copied from a steam source: last uploaded TS at time of copy + /// + public uint? SteamOriginTS; + + /// + /// For steam mods: last uploaded TS + /// + /// NOT SERIALIZED + public uint? LastUpdateTS; + public void ExposeData() { Scribe_Values.Look(ref Key, @"key"); Scribe_Collections.Look(ref attributes, false, @"attributes"); Scribe_Values.Look(ref Color, "color", null); + Scribe_Values.Look(ref SteamOrigin, "origin", null); + Scribe_Values.Look(ref SteamOriginTS, "originTS", null); if (Scribe.mode == LoadSaveMode.LoadingVars) { if (Color == null) diff --git a/Source/ModSwitch/Properties/AssemblyInfo.cs b/Source/ModSwitch/Properties/AssemblyInfo.cs index 9bdddb2..008d3d6 100644 --- a/Source/ModSwitch/Properties/AssemblyInfo.cs +++ b/Source/ModSwitch/Properties/AssemblyInfo.cs @@ -12,6 +12,6 @@ [assembly: System.Reflection.AssemblyCopyright("Copyright © DoctorVanGogh 2017")] [assembly: System.Runtime.InteropServices.ComVisible(false)] [assembly: System.Runtime.InteropServices.Guid("ab2e8e89-3d1d-4e36-a0ae-489b6ebc84a6")] -[assembly: System.Reflection.AssemblyVersion("1.1.0.27")] +[assembly: System.Reflection.AssemblyVersion("1.2.0.30")] diff --git a/Source/ModSwitch/Properties/version.txt b/Source/ModSwitch/Properties/version.txt index 5c7843e..722353d 100644 --- a/Source/ModSwitch/Properties/version.txt +++ b/Source/ModSwitch/Properties/version.txt @@ -1 +1 @@ -1.1.0.27 \ No newline at end of file +1.2.0.30 \ No newline at end of file diff --git a/Source/ModSwitch/[Patches]/Patches.cs b/Source/ModSwitch/[Patches]/Patches.cs index 7cdf4c4..3a65376 100644 --- a/Source/ModSwitch/[Patches]/Patches.cs +++ b/Source/ModSwitch/[Patches]/Patches.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; @@ -12,6 +13,7 @@ using Steamworks; using UnityEngine; using Verse; +using Verse.Steam; namespace DoctorVanGogh.ModSwitch { [SuppressMessage("ReSharper", "UnusedMember.Global", Justification = "HarmonyPatch container")] @@ -26,16 +28,10 @@ public static void Postfix(Rect rect) { [HarmonyPatch(typeof(Page_ModsConfig), "DoModRow", new Type[] { typeof(Listing_Standard), typeof(ModMetaData), typeof(int), typeof(int) })] public class Page_ModsConfig_DoModRow { - - public static MethodInfo miCheckboxLabeledSelectable = AccessTools.Method(typeof(Widgets), nameof(Widgets.CheckboxLabeledSelectable)); - public static MethodInfo miGuiSetContentColor = AccessTools.Property(typeof(GUI), nameof(GUI.color)).GetSetMethod(true); - - private static IDictionary _colorMap; - public static IEnumerable Transpiler(IEnumerable instructions, ILGenerator ilGen) { var instr = new List(instructions); - int idxCheckboxLabeledSelectable = instr.FirstIndexOf(ci => ci.opcode == OpCodes.Call && ci.operand == miCheckboxLabeledSelectable); + int idxCheckboxLabeledSelectable = instr.FirstIndexOf(ci => ci.opcode == OpCodes.Call && ci.operand == ModsConfig.miCheckboxLabeledSelectable); if (idxCheckboxLabeledSelectable == -1) { Util.Warning("Could not find anchor for ModRow transpiler - not modifying code"); return instr; @@ -81,7 +77,7 @@ public static IEnumerable Transpiler(IEnumerableelse { GUI.contentColor = color; } instr.InsertRange(idxBlockEnd, new[] { new CodeInstruction(OpCodes.Ldloc, localColor) {labels = new List