using System; using System.Collections.Generic; using NitroxModel.DataStructures.Util; using UnityEngine; namespace NitroxClient.GameLogic.Helper { public class EquipmentHelper { private static readonly List> equipmentFinders = new() { o => o.GetComponent().AliveOrNull()?.equipment, o => o.GetComponent().AliveOrNull()?.equipment, o => o.GetComponent().AliveOrNull()?.decoySlots, o => o.GetComponent().AliveOrNull()?.modules, o => o.GetComponent().AliveOrNull()?.modules, o => o.GetComponent().AliveOrNull()?.modules, o => o.GetComponent().AliveOrNull()?.modules, o => o.GetComponent().AliveOrNull()?.equipment, o => string.Equals("Player", o.GetComponent().AliveOrNull()?.name, StringComparison.InvariantCulture) ? Inventory.main.equipment : null }; public static Optional FindEquipmentComponent(GameObject owner) { foreach (Func equipmentFinder in equipmentFinders) { Equipment equipment = equipmentFinder(owner); if (equipment != null) { return Optional.Of(equipment); } } return Optional.Empty; } } }