public BarterHUD_Proxy(BarterHUD barterHUD) { _instance = barterHUD; mLeftInventory = new InstanceFieldAccessor <BarterHUD, Inventory>(_instance, nameof(mLeftInventory)); mRightInventory = new InstanceFieldAccessor <BarterHUD, Inventory>(_instance, nameof(mRightInventory)); mLeftTradeInventory = new InstanceFieldAccessor <BarterHUD, Inventory>(_instance, nameof(mLeftTradeInventory)); mRightTradeInventory = new InstanceFieldAccessor <BarterHUD, Inventory>(_instance, nameof(mRightTradeInventory)); _getSellDiscount = InstanceMethodAccessor.GetDelegate <DGetSellDiscount>("GetSellDiscount"); _calcSellCost = InstanceMethodAccessor.GetDelegate <DCalcSellCost>("CalcSellCost"); _calcBuyCost = InstanceMethodAccessor.GetDelegate <DCalcBuyCost>("CalcBuyCost"); _calcCostItem = InstanceMethodAccessor.GetDelegate <DCalcCostItem>("CalcCostItem"); _dropItemToBackpack = InstanceMethodAccessor.GetDelegate <DDropItemToBackpack>("DropItemToBackpack"); }
public String MakeStringCTH(ITargetable target) { DMakeStringCTH call = s_makeStringCTH ?? (s_makeStringCTH = InstanceMethodAccessor.GetDelegate <DMakeStringCTH>("MakeStringCTH")); return(call(_instance, target)); }
public static void PlayerHUD_ShowPocket_Prefix(PlayerHUD __instance, CharacterComponent characterComponent, Inventory pocket, Boolean steal, String fraction, ref PocketHUD.PocketEnded notify) { if (notify == null) { return; } if (pocket.Count == 0) { return; } List <CharacterComponent> characters = new List <CharacterComponent>(); foreach (Delegate del in notify.GetInvocationList()) { PocketHUD.PocketEnded invocation = (PocketHUD.PocketEnded)del; if (!(invocation.Target is CharacterComponent cc)) { return; } if (!cc.IsDead()) { return; } characters.Add(cc); } if (characters.Count == 0) { return; } PathCell cell = characters.First().GetCell(); DMergeItem mergeItem = InstanceMethodAccessor.GetDelegate <DMergeItem>("MergeItem"); Boolean fromCannibal = characterComponent.Character.CharProto.Stats.HasPerk(CharacterStats.Perk.Cannibal); foreach (BehaviorComponent behaviorComponent in Game.World.Behaviors) { if (!(behaviorComponent is CharacterComponent cc)) { continue; } if (!cc.IsDead()) { continue; } PathCell otherCell = cc.GetCell(); var dx = otherCell.X - cell.X; var dy = otherCell.Y - cell.Y; var distance = Math.Sqrt(dx * dx + dy * dy); if (distance > 20) { continue; } if (characters.Contains(cc)) { continue; } notify = (PocketHUD.PocketEnded)Delegate.Combine(new PocketHUD.PocketEnded(cc.CkeckSlostsOnClose), notify); cc.OnDeadLoot(fromCannibal); mergeItem(characterComponent, pocket, cc.Character); } }