shaoxiadiablo/Assets/AGame/Scripts/UI/EquipmentRecastBox/EquipmentRecastBox.View.cs
2025-05-18 01:04:31 +08:00

283 lines
8.9 KiB
C#

// ***********************************************************************
// Assembly : Game
// Author : Kimch
// Created : 2021-06-16
// Description :
// Last Modified By :
// Last Modified On :
// ***********************************************************************
// <copyright file= "EquipmentRecastBox.View" company="Kunpo"></copyright>
// <summary></summary>
// ***********************************************************************
namespace G.UI
{
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
///
/// </summary>
partial class EquipmentRecastBox
{
#region Auto Generate
#pragma warning disable CS0649 // 从未对字段赋值,字段将一直保持其默认值 null
[KUIFlag]
Button _btnClose;
[KUIFlag]
Button _btnUpgrade;
[KUIFlag]
GameObject __goUpgradeCost;
[KUIFlag]
GameObject _goSelect1;
[KUIFlag]
GameObject _goSelect2;
[KUIFlag]
GameObject __goEquipment1;
[KUIFlag]
GameObject __goEquipment2;
[KUIFlag]
KUIList __listEquipments;
[KUIFlag]
Button _btnTips;
[KUIFlag]
Image _imgProgress;
[KUIFlag]
TextMeshProUGUI _tmpProgress;
#pragma warning restore CS0649 // 从未对字段赋值,字段将一直保持其默认值 null
#endregion
#region Field
private CostWidget _upgradeCostWidget;
private Item.ItemInfo _upgradeCost;
private EquipmentWidget _equipment1;
private EquipmentWidget _equipment2;
private EquipmentSelectWidget _selectWidget1;
private EquipmentSelectWidget _selectWidget2;
private bool _changed = false;
#endregion
#region Method
/// <summary>
///
/// </summary>
public void InitView()
{
SetViewData();
__listEquipments.AddTemplate<EquipmentSelectWidget>(true);
_upgradeCostWidget = __goUpgradeCost.AddComponent<CostWidget>();
_equipment1 = __goEquipment1.AddComponent<EquipmentWidget>();
_equipment2 = __goEquipment2.AddComponent<EquipmentWidget>();
//gameObject.GetComponent<Button>().onClick.AddListener(this.OnCloseBtnClick);
_btnClose.onClick.AddListener(this.OnCloseBtnClick);
_btnUpgrade.onClick.AddListener(this.OnUpgradeBtnClick);
_btnTips.onClick.AddListener(this.OnTipsBtnClick);
}
/// <summary>
///
/// </summary>
public void RefreshView()
{
_changed = false;
_selectWidget1 = null;
_selectWidget2 = null;
_equipment1.SetData(null);
_equipment2.SetData(null);
RefreshSelect();
RefreshEquipments();
//RefreshProgress();
}
public void RefreshEquipments()
{
var equipments = BagProxy.Instance.GetRecastEquipments();
__listEquipments.Clear();
foreach (var equipment in equipments)
{
var widget = __listEquipments.GetItem();
widget.SetData(equipment);
}
}
void RefreshSelect()
{
_equipment1.SetData(_selectWidget1?.data);
_equipment2.SetData(_selectWidget2?.data);
if (_selectWidget1 != null && _selectWidget2 != null)
{
var a = _selectWidget1.data as EntityItemEquipment;
_upgradeCost = new Item.ItemInfo
{
id = Item.Id.kChip,
count = 50 * a.propLevel,
};
RefreshCost();
RefreshProgress(a.propLevel);
}
else
{
if (_selectWidget1 != null)
{
var a = _selectWidget1.data as EntityItemEquipment;
RefreshProgress(a.propLevel);
}
else if (_selectWidget2 != null)
{
var a = _selectWidget2.data as EntityItemEquipment;
RefreshProgress(a.propLevel);
}
else
{
RefreshProgress(0);
}
_upgradeCostWidget.SetPrice(Item.Id.kChip, 0, true);
_btnUpgrade.interactable = false;
}
}
void RefreshCost()
{
bool enough = MoneyProxy.Instance.CheckMoney(_upgradeCost);
_upgradeCostWidget.SetPrice(_upgradeCost.id, _upgradeCost.count, enough);
//if (enough && _upgradeCost.id > 0 && _upgradeCost.count > 0)
_btnUpgrade.interactable = true;
//else
// _btnUpgrade.interactable = false;
}
/// <summary>
///
/// </summary>
void RefreshProgress(int propLevel)
{
if (propLevel > 0)
{
var info = RandomProxy.Instance.GetRandomInfo(RandomProxy.RACAST_RATE_ID + propLevel);
int cur = (info.x % info.y) + 1;
_tmpProgress.text = $"{cur}/{info.y}";
_imgProgress.fillAmount = cur / (float)info.y;
}
else
{
_tmpProgress.text = $"0/0";
_imgProgress.fillAmount = 0;
}
}
/// <summary>
///
/// </summary>
void SelectEquipment(EquipmentSelectWidget widget)
{
if (_selectWidget1 == widget || _selectWidget2 == widget)
{
if (_selectWidget1 == widget)
{
_selectWidget1 = null;
}
else
{
_selectWidget2 = null;
}
widget.SetSelect(false);
//SelectEquipment((EntityItemEquipment)widget.data, false);
}
else
{
if (_selectWidget1 != null && _selectWidget2 != null)
{
ToastBox.ShowText("只能选择两件");
}
else if (_selectWidget1 != null)
{
var a = (EntityItemEquipment)_selectWidget1.data;
var b = (EntityItemEquipment)widget.data;
if (a.propLevel == b.propLevel && a.propQuality == b.propQuality)
{
_selectWidget2 = widget;
widget.SetSelect(true);
}
else
{
ToastBox.ShowText("只能同等级同品质装备才能重铸");
}
}
else if (_selectWidget2 != null)
{
var a = (EntityItemEquipment)_selectWidget2.data;
var b = (EntityItemEquipment)widget.data;
if (a.propLevel == b.propLevel && a.propQuality == b.propQuality)
{
_selectWidget1 = widget;
widget.SetSelect(true);
}
else
{
ToastBox.ShowText("只能同等级同品质装备才能重铸");
}
}
else
{
_selectWidget1 = widget;
widget.SetSelect(true);
}
}
RefreshSelect();
}
private void OnUpgradeBtnClick()
{
if (_equipment1.data != null && _equipment2.data != null)
{
if (!MoneyProxy.Instance.CheckAndCostMoney(_upgradeCost, GlobalDefine.COST_MONEY_EQUIPMENT_RECAST))
{
AdMoneyBox.ShowAdMoney(Item.Id.kChip, true);
return;
}
var newEquipment = BagProxy.Instance.RacastEquipments((EntityItemEquipment)_equipment1.data, (EntityItemEquipment)_equipment2.data);
if (newEquipment != null)
{
RewardWindow.ShowReward(new Item.ItemInfo
{
id = newEquipment.itemId,
count = 1,
}, null);
RefreshView();
PostNotification(GlobalDefine.EVENT_MONEY_CHANGED, _upgradeCost.id, "racast");
_changed = true;
}
}
}
private void OnTipsBtnClick()
{
MessageBox.ShowMessage(KLocalization.GetLocalString(66), KLocalization.GetLocalString(67));
}
private void OnCloseBtnClick()
{
CloseWindow(this);
if (_changed)
GlobalNotifier.PostNotification(GlobalDefine.EVENT_EQUIPMENT_GET);
}
#endregion
}
}