using System; using System.Collections; using System.Collections.Generic; using BITFALL.Player.Inventory; using BITKit; using BITKit.Entities; using BITKit.Entities.Player; using BITKit.UX; using UnityEngine; using UnityEngine.UIElements; namespace BITFALL.UX { public class UXPlayerInventory : MonoBehaviour { [SerializeReference,SubclassSelector] private IPlayerService playerService; [Inject] private IPlayerInventory _playerInventory; [UXBindPath("money-container")] private VisualElement _moneyContainer; [UXBindPath("money-label")] private Label _moneyLabel; private void Start() { BITKit.UX.UXUtils.Inject(this); playerService.OnPlayerInitialized+=OnPlayerInitialized; playerService.OnPlayerDisposed+=OnPlayerDisposed; destroyCancellationToken.Register(() => { playerService.OnPlayerInitialized -= OnPlayerInitialized; playerService.OnPlayerDisposed -= OnPlayerDisposed; }); _moneyContainer.RegisterCallback(x => { if (_playerInventory is null) return; var drop = x.button switch { 0 => 500, 1 => 1000, _ => 0 }; _playerInventory.Drop(new MonetStrace{Money = drop,Detail = "Drop"}); }); } private void OnPlayerInitialized(Entity obj) { obj.Inject(this); _playerInventory.OnMoneyChanged += OnMoneyChanged; } private void OnMoneyChanged(int obj) { _moneyLabel.text = $"现金:{obj}"; } private void OnPlayerDisposed(Entity obj) { InjectAttribute.Clear(this); } } }