66 lines
1.5 KiB
C#
66 lines
1.5 KiB
C#
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<MouseDownEvent>(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);
|
|
}
|
|
}
|
|
|
|
}
|