using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using BITKit; using System.Threading.Tasks; using UnityEngine.UIElements; using System.Text; using BITKit.Entities; using System.Linq; using BITFALL.Entities; using BITFALL.Entities.Improvised; using BITFALL.Player.Inventory; using BITKit.Selection; namespace BITFALL { [CustomType(typeof(IPlayerInventory))] public class PlayerInventory : EntityInventory,IPlayerInventory { [Inject] private ISelector _selector; [Inject(true)] private ImprovisedServiceInterface _improvisedService; [Inject(true)] private IKnockdown _knockdown; public override void OnStart() { base.OnStart(); _selector.OnActive += OnActive; if (_improvisedService is not null) { _improvisedService.OnUnEquipImprovisedItem += OnUnEquipImprovisedItem; } } protected override void OnSetAlive(bool alive) { var keepInventory = Data.Get(BITConstant.Environment.sp_keepInventory); if (keepInventory) { // BIT4Log.Log("玩家死亡,保留背包"); } else { base.OnSetAlive(alive); // BIT4Log.Log("玩家死亡,清空背包"); } } private void OnUnEquipImprovisedItem(IBasicItem obj) { Drop(obj); } private void OnActive(ISelectable obj) { if (!obj.Transform.TryGetComponent(out var item)) return; var _item = item.Pick(); if(item.GetAssetable().IsImprovised) { if (_knockdown is not null && _knockdown.IsKnockdown) { return; } if (_improvisedService.TryEquipImprovisedItem(_item)) { item.Picked(); } } else if (Add(_item)) { item.Picked(); } } } #if UNITY_EDITOR [UnityEditor.CustomEditor(typeof(PlayerInventory))] public class EntityPlayerInventoryInsepctor : BITInspector { public override VisualElement CreateInspectorGUI() { FillDefaultInspector(); CreateSubTitle(Constant.Header.Debug); var serializeLabel = root.Create