0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 09:50:43 -05:00
modules/project/Aki.Custom/BTR/Patches/BTREndRaidItemDeliveryPatch.cs
DrakiaXYZ 701c3a6685 Move BTR code into Aki.Custom (!66)
- Move most BTR code to Aki.Custom (Leaving debug commands in Aki.Debugging)
- Make BTR patches public to match other patches
- Disable debug BTR command patches

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: SPT-AKI/Modules#66
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-01-23 08:47:09 +00:00

63 lines
2.1 KiB
C#

using Aki.Common.Http;
using Aki.Custom.BTR.Utils;
using Aki.Reflection.Patching;
using Aki.Reflection.Utils;
using Comfort.Common;
using EFT;
using HarmonyLib;
using Newtonsoft.Json;
using System;
using System.Linq;
using System.Reflection;
namespace Aki.Custom.BTR.Patches
{
public class BTREndRaidItemDeliveryPatch : ModulePatch
{
private static JsonConverter[] _defaultJsonConverters;
protected override MethodBase GetTargetMethod()
{
var converterClass = typeof(AbstractGame).Assembly.GetTypes()
.First(t => t.GetField("Converters", BindingFlags.Static | BindingFlags.Public) != null);
_defaultJsonConverters = Traverse.Create(converterClass).Field<JsonConverter[]>("Converters").Value;
Type baseLocalGameType = PatchConstants.LocalGameType.BaseType;
return AccessTools.Method(baseLocalGameType, nameof(LocalGame.Stop));
}
[PatchPrefix]
public static void PatchPrefix()
{
GameWorld gameWorld = Singleton<GameWorld>.Instance;
var player = gameWorld?.MainPlayer;
if (gameWorld == null || player == null)
{
Logger.LogError("[AKI-BTR] End Raid - GameWorld or Player is null");
return;
}
// Match doesn't have a BTR
if (gameWorld.BtrController == null)
{
return;
}
if (!gameWorld.BtrController.HasNonEmptyTransferContainer(player.Profile.Id))
{
Logger.LogDebug("[AKI-BTR] End Raid - No items in transfer container");
return;
}
var btrStash = gameWorld.BtrController.GetOrAddTransferContainer(player.Profile.Id);
var flatItems = Singleton<ItemFactory>.Instance.TreeToFlatItems(btrStash.Grid.Items);
RequestHandler.PutJson("/singleplayer/traderServices/itemDelivery", new
{
items = flatItems,
traderId = BTRUtil.BTRTraderId
}.ToJson(_defaultJsonConverters));
}
}
}