diff --git a/Patches/AddOfferClickablePricesPatches.cs b/Patches/AddOfferClickablePricesPatches.cs index 4bd7668..dc4b1d6 100644 --- a/Patches/AddOfferClickablePricesPatches.cs +++ b/Patches/AddOfferClickablePricesPatches.cs @@ -26,26 +26,36 @@ namespace UIFixes } [PatchPostfix] - public static void Postfix(ItemMarketPricesPanel ____pricesPanel, RequirementView[] ____requirementViews) + public static void Postfix(AddOfferWindow __instance, ItemMarketPricesPanel ____pricesPanel, RequirementView[] ____requirementViews) { var panel = ____pricesPanel.R(); var rublesRequirement = ____requirementViews.First(rv => rv.name == "Requirement (RUB)"); Button lowestButton = panel.LowestLabel.GetOrAddComponent(); - lowestButton.onClick.AddListener(() => rublesRequirement.method_0(____pricesPanel.Minimum.ToString("F0"))); + lowestButton.onClick.AddListener(() => SetRequirement(__instance, rublesRequirement, ____pricesPanel.Minimum)); ____pricesPanel.AddDisposable(lowestButton.onClick.RemoveAllListeners); Button averageButton = panel.AverageLabel.GetOrAddComponent(); - averageButton.onClick.AddListener(() => rublesRequirement.method_0(____pricesPanel.Average.ToString("F0"))); + averageButton.onClick.AddListener(() => SetRequirement(__instance, rublesRequirement, ____pricesPanel.Average)); ____pricesPanel.AddDisposable(averageButton.onClick.RemoveAllListeners); Button maximumButton = panel.MaximumLabel.GetOrAddComponent(); - maximumButton.onClick.AddListener(() => rublesRequirement.method_0(____pricesPanel.Maximum.ToString("F0"))); + maximumButton.onClick.AddListener(() => SetRequirement(__instance, rublesRequirement, ____pricesPanel.Maximum)); ____pricesPanel.AddDisposable(maximumButton.onClick.RemoveAllListeners); } } + private static void SetRequirement(AddOfferWindow window, RequirementView requirement, float price) + { + if (window.R().BulkOffer) + { + price *= window.Int32_0; // offer item count + } + + requirement.method_0(price.ToString("F0")); + } + public class HighlightButton : Button { private Color originalColor; diff --git a/Patches/KeepOfferWindowOpenPatches.cs b/Patches/KeepOfferWindowOpenPatches.cs index 80b081e..016b4e7 100644 --- a/Patches/KeepOfferWindowOpenPatches.cs +++ b/Patches/KeepOfferWindowOpenPatches.cs @@ -40,12 +40,15 @@ namespace UIFixes } [PatchPostfix] - public static void Postfix(RequirementView[] ____requirementViews) + public static void Postfix(RequirementView[] ____requirementViews, bool ___bool_2) { - // clear old prices - foreach(var requirementView in ____requirementViews) + if (Settings.KeepAddOfferOpen.Value && ___bool_2) { - requirementView.ResetRequirementInformation(); + // clear old prices + foreach (var requirementView in ____requirementViews) + { + requirementView.ResetRequirementInformation(); + } } BlockClose = false; diff --git a/R.cs b/R.cs index 5d48d2b..2aea6b8 100644 --- a/R.cs +++ b/R.cs @@ -442,14 +442,17 @@ namespace UIFixes { public static Type Type { get; private set; } private static FieldInfo RagfairField; + private static FieldInfo BulkOfferField; public static void InitTypes() { Type = typeof(EFT.UI.Ragfair.AddOfferWindow); RagfairField = AccessTools.GetDeclaredFields(Type).First(t => t.FieldType == typeof(RagFairClass)); + BulkOfferField = AccessTools.Field(Type, "bool_0"); } public RagFairClass Ragfair { get { return (RagFairClass)RagfairField.GetValue(Value); } } + public bool BulkOffer { get { return (bool)BulkOfferField.GetValue(Value); } } } public class ItemUiContext(object value) : Wrapper(value) diff --git a/UIFixes.csproj b/UIFixes.csproj index 461a8f7..42faf44 100644 --- a/UIFixes.csproj +++ b/UIFixes.csproj @@ -4,7 +4,7 @@ net471 Tyfon.UIFixes SPT UI Fixes - 1.6.1 + 1.6.2 true latest Debug;Release;Dist diff --git a/server/package.json b/server/package.json index dbb271c..007a3e2 100644 --- a/server/package.json +++ b/server/package.json @@ -1,6 +1,6 @@ { "name": "uifixes", - "version": "1.6.1", + "version": "1.6.2", "main": "src/mod.js", "license": "MIT", "author": "Tyfon",