144 lines
5.3 KiB
C#
144 lines
5.3 KiB
C#
using asap.core;
|
|
using GameCore;
|
|
using TMPro;
|
|
using UniRx;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace EventMowForTreasure
|
|
{
|
|
public class EventMowForTreasureExchangePanel : BasePanel
|
|
{
|
|
#region UI
|
|
|
|
private TMP_Text _textOwn;
|
|
private Button _btnAdd;
|
|
private Button _btnReduce;
|
|
private Button _btnExchange;
|
|
private Button _btnExchangeGray;
|
|
private TMP_Text _textNum;
|
|
private TMP_Text _textCost;
|
|
private TMP_Text _textCostGray;
|
|
private Image _imgDefaultTool;
|
|
private Image _imgExchangeTool;
|
|
private GameObject _btnAddGray;
|
|
private GameObject _objCommonGray;
|
|
|
|
#endregion
|
|
|
|
#region data
|
|
|
|
private int _exchangeNum = 1;
|
|
private int _exchangeRate;
|
|
private int _toolConfigID;
|
|
private EventMowForTreasureManager _manager;
|
|
|
|
private EventMowForTreasureManager Manager =>
|
|
_manager ??= GContext.container.Resolve<EventMowForTreasureManager>();
|
|
|
|
#endregion
|
|
private void Awake()
|
|
{
|
|
_textOwn = gameObject.FindChildGameObject("text_own").GetComponent<TMP_Text>();
|
|
_textNum = gameObject.FindChildGameObject("text_num").GetComponent<TMP_Text>();
|
|
_textCost = gameObject.FindChildGameObject("p_text").GetComponent<TMP_Text>();
|
|
_textCostGray=gameObject.FindChildGameObject("p_text_cost_gary").GetComponent<TMP_Text>();
|
|
_btnAdd = gameObject.FindChildGameObject("btn_add").GetComponent<Button>();
|
|
_btnAdd.onClick.AddListener(OnClick_btnAdd);
|
|
_btnReduce = gameObject.FindChildGameObject("btn_reduce").GetComponent<Button>();
|
|
_btnReduce.onClick.AddListener(OnClick_btnReduce);
|
|
_btnExchange = gameObject.FindChildGameObject("btn_green").GetComponent<Button>();
|
|
_btnExchange.onClick.AddListener(OnClick_btnExchange);
|
|
_imgDefaultTool = gameObject.FindChildGameObject("p_image_default_tool").GetComponent<Image>();
|
|
_imgExchangeTool = gameObject.FindChildGameObject("p_img_exchange_tool").GetComponent<Image>();
|
|
_btnAddGray=gameObject.FindChildGameObject("btn_add_gray");
|
|
_objCommonGray=gameObject.FindChildGameObject("btn_common_gray");
|
|
_btnExchangeGray = _objCommonGray.GetComponentInChildren<Button>();
|
|
_btnExchangeGray.onClick.AddListener(OnClick_btnExchangeGray);
|
|
|
|
GContext.OnEvent<EventMowForTreasureToolAmountChange>().Subscribe(_ => ShowUI()).AddTo(disposables);
|
|
InitUI();
|
|
}
|
|
|
|
protected override void Start()
|
|
{
|
|
base.Start();
|
|
ShowUI();
|
|
}
|
|
|
|
protected override void OnDestroy()
|
|
{
|
|
_btnAdd.onClick.RemoveAllListeners();
|
|
_btnReduce.onClick.RemoveAllListeners();
|
|
_btnExchange.onClick.RemoveAllListeners();
|
|
base.OnDestroy();
|
|
}
|
|
|
|
private void OnClick_btnExchange()
|
|
{
|
|
if (!Manager.TryExchangeTool(_exchangeNum,_exchangeRate,_toolConfigID)) return;
|
|
ToastPanel.Show(LocalizationMgr.GetText("EventMowForTreasurePanel_8"));
|
|
UIManager.Instance.DestroyUI(UITypes.EventMowForTreasureExchangePanel);
|
|
}
|
|
private void OnClick_btnExchangeGray()
|
|
{
|
|
Manager.ShowFestPackPanel();
|
|
}
|
|
private void OnClick_btnReduce()
|
|
{
|
|
if (_exchangeNum == 0) return;
|
|
_exchangeNum--;
|
|
ShowUI();
|
|
}
|
|
|
|
private void OnClick_btnAdd()
|
|
{
|
|
_exchangeNum++;
|
|
ShowUI();
|
|
}
|
|
|
|
private void InitUI()
|
|
{
|
|
var zeroStr = "0";
|
|
_textOwn.text = zeroStr;
|
|
_textNum.text = zeroStr;
|
|
_textCost.text = zeroStr;
|
|
_textCostGray.text=zeroStr;
|
|
}
|
|
|
|
public void SetData(int toolConfigID, int exchangeRate)
|
|
{
|
|
_toolConfigID = toolConfigID;
|
|
_exchangeRate = exchangeRate;
|
|
ShowUI();
|
|
}
|
|
|
|
private void ShowUI()
|
|
{
|
|
if (_toolConfigID == 0) return;
|
|
var defaultToolConfig =Manager.GetDefaultToolConfig();
|
|
if(defaultToolConfig==null)
|
|
return;
|
|
var defaultToolID = defaultToolConfig.ID;
|
|
if (defaultToolID == 0) return;
|
|
_btnReduce.gameObject.SetActive(_exchangeNum > 1);
|
|
Manager.TryGetToolAmount(defaultToolID, out var ownAmount);
|
|
var cost = _exchangeNum * _exchangeRate;
|
|
var isCanExchange = ownAmount >= cost;
|
|
_btnAddGray.SetActive(!isCanExchange);
|
|
_btnAdd.gameObject.SetActive(isCanExchange);
|
|
_btnExchange.gameObject.SetActive(isCanExchange);
|
|
_objCommonGray.SetActive(!isCanExchange);
|
|
_textOwn.text = $"{ownAmount}";
|
|
_textOwn.color=isCanExchange?Color.white:Color.red;
|
|
_textNum.text = $"{_exchangeNum}";
|
|
var costStr = $"{cost}";
|
|
_textCost.text = costStr;
|
|
_textCostGray.text = costStr;
|
|
_ = GContext.container.Resolve<IUIService>().SetImageSprite(_imgDefaultTool, defaultToolConfig.Icon);
|
|
var toolConfig = Manager.Tables.TbEventMowForTreasureTool.GetOrDefault(_toolConfigID);
|
|
_ = GContext.container.Resolve<IUIService>().SetImageSprite(_imgExchangeTool, toolConfig.Icon);
|
|
}
|
|
|
|
}
|
|
} |