using Common.Models.Input; using System.Collections.Generic; using System.Linq; namespace UniqueTemplates.Extensions { public static class BotExtensions { public static bool ContainsBot(this List list, Datum botToCheck) { foreach (var bot in list) { var botGear = GetEquippedGear(bot); if (botGear.CheckMatch(botToCheck.GetEquippedGear())) { return true; } } return false; } public static EquippedGear GetEquippedGear(this Datum bot) { return new EquippedGear { ArmorVest = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "ArmorVest"), Backpack = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "Backpack"), Eyewear = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "Eyewear"), FaceCover = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "FaceCover"), FirstPrimaryWeapon = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "FirstPrimaryWeapon"), Headwear = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "Headwear"), Scabbard = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "Scabbard"), TacticalVest = GeEquipmentItemTemplateIdOrNull(bot.Inventory.items, "TacticalVest"), }; } private static string GeEquipmentItemTemplateIdOrNull(List inventoryItems, string itemTypeWanted) { var item = inventoryItems.FirstOrDefault(x => x.slotId == itemTypeWanted); if (item == null) { return null; } return item._tpl; } public class EquippedGear { public string FirstPrimaryWeapon { get; set; } public string TacticalVest { get; set; } public string Headwear { get; set; } public string Scabbard { get; set; } public string Backpack { get; set; } public string ArmorVest { get; set; } public string FaceCover { get; set; } public string Eyewear { get; set; } public bool CheckMatch(EquippedGear gearToCheck) { if (gearToCheck.FirstPrimaryWeapon == FirstPrimaryWeapon && gearToCheck.TacticalVest == TacticalVest && gearToCheck.Headwear == Headwear && gearToCheck.Scabbard == Scabbard && gearToCheck.Backpack == Backpack && gearToCheck.ArmorVest == ArmorVest && gearToCheck.FaceCover == FaceCover && gearToCheck.Eyewear == Eyewear) { return true; } return false; } } } }