mirror of
https://github.com/sp-tarkov/modules.git
synced 2025-02-13 09:50:43 -05:00
I've moved trader services handling from Aki.Debugging BTR code into Aki.SinglePlayer This simplifies some of the code, and allows a more "generic" implementation. I've also patched the GetTraderServicesDataFromServer and TryPurchaseTraderService methods to properly utilize the TraderServicesManager for storing service state For now, this makes Aki.Debugging depend on Aki.SinglePlayer, this can be reverted once the BTR stuff is moved Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com> Reviewed-on: SPT-AKI/Modules#61 Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com> Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
50 lines
1.7 KiB
C#
50 lines
1.7 KiB
C#
using Aki.Debugging.BTR.Utils;
|
|
using Aki.Reflection.Patching;
|
|
using Aki.SinglePlayer.Utils.TraderServices;
|
|
using EFT;
|
|
using EFT.Console.Core;
|
|
using EFT.UI;
|
|
using HarmonyLib;
|
|
using System.Reflection;
|
|
|
|
namespace Aki.Debugging.BTR.Patches
|
|
{
|
|
// Enable the `debug_show_dialog_screen` command, and custom `btr_deliver_items` command
|
|
internal class BTRDebugCommandPatch : ModulePatch
|
|
{
|
|
protected override MethodBase GetTargetMethod()
|
|
{
|
|
return AccessTools.Method(typeof(ConsoleScreen), nameof(ConsoleScreen.InitConsole));
|
|
}
|
|
|
|
[PatchPostfix]
|
|
internal static void PatchPostfix()
|
|
{
|
|
ConsoleScreen.Processor.RegisterCommandGroup<GClass1952>();
|
|
ConsoleScreen.Processor.RegisterCommand("btr_deliver_items", new System.Action(BtrDeliverItemsCommand));
|
|
}
|
|
|
|
// Custom command to force item extraction sending
|
|
public static void BtrDeliverItemsCommand()
|
|
{
|
|
BTREndRaidItemDeliveryPatch.PatchPrefix();
|
|
}
|
|
}
|
|
|
|
// When running the `debug_show_dialog_screen` command, fetch the service data first, and force debug off
|
|
public class BTRDebugDataPatch : ModulePatch
|
|
{
|
|
protected override MethodBase GetTargetMethod()
|
|
{
|
|
return AccessTools.Method(typeof(GClass1952), nameof(GClass1952.ShowDialogScreen));
|
|
}
|
|
|
|
[PatchPrefix]
|
|
internal static void PatchPrefix(Profile.ETraderServiceSource traderServiceSourceType, ref bool useDebugData)
|
|
{
|
|
useDebugData = false;
|
|
TraderServicesManager.Instance.GetTraderServicesDataFromServer(Profile.TraderInfo.TraderServiceToId[traderServiceSourceType]);
|
|
}
|
|
}
|
|
}
|