using UnityEngine;
|
using UnityEngine.UI;
|
|
public class PayMethodConfirmWin : UIBase
|
{
|
[SerializeField] Text m_Content;
|
[SerializeField] Toggle m_Toggle1;
|
[SerializeField] Toggle m_Toggle2;
|
[SerializeField] Text m_ToggleTxt1;
|
[SerializeField] Text m_ToggleTxt2;
|
[SerializeField] Button m_ConfirmBtn;
|
[SerializeField] Button m_CancelBtn;
|
[SerializeField] Image moneyIcon;
|
[SerializeField] Text moneyText;
|
|
int m_SelectedMoneyType;
|
int m_SelectedNeedCount;
|
int m_NeedMoney1;
|
int m_NeedMoney2;
|
|
protected override void InitComponent()
|
{
|
m_ConfirmBtn.AddListener(OnConfirm);
|
m_CancelBtn.AddListener(OnCancel);
|
|
m_Toggle1.onValueChanged.AddListener((bool isOn) =>
|
{
|
if (isOn)
|
{
|
TrySelectMoneyType(ConfirmCancel.moneyType1, m_NeedMoney1);
|
}
|
});
|
m_Toggle2.onValueChanged.AddListener((bool isOn) =>
|
{
|
if (isOn)
|
{
|
TrySelectMoneyType(ConfirmCancel.moneyType2, m_NeedMoney2);
|
}
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
m_NeedMoney1 = ConfirmCancel.moneyNeedCount1;
|
m_NeedMoney2 = ConfirmCancel.moneyNeedCount2;
|
|
m_ToggleTxt1.text = ConfirmCancel.toggleText1;
|
m_ToggleTxt2.text = ConfirmCancel.toggleText2;
|
|
var availableMoneyTypes = GeneralDefine.GetPayMethodAvailableMoneyTypes();
|
bool showMoney1 = availableMoneyTypes.Contains(ConfirmCancel.moneyType1);
|
bool showMoney2 = availableMoneyTypes.Contains(ConfirmCancel.moneyType2);
|
if (!showMoney1 && !showMoney2)
|
{
|
showMoney1 = true;
|
showMoney2 = true;
|
}
|
|
var group = gameObject.GetComponent<ToggleGroup>();
|
if (group == null)
|
{
|
group = gameObject.AddComponent<ToggleGroup>();
|
}
|
group.allowSwitchOff = false;
|
m_Toggle1.group = group;
|
m_Toggle2.group = group;
|
|
int showCount = (showMoney1 ? 1 : 0) + (showMoney2 ? 1 : 0);
|
bool showToggles = showCount > 1;
|
m_Toggle1.gameObject.SetActive(showToggles && showMoney1);
|
m_Toggle2.gameObject.SetActive(showToggles && showMoney2);
|
|
long have1 = UIHelper.GetMoneyCnt(ConfirmCancel.moneyType1);
|
long have2 = UIHelper.GetMoneyCnt(ConfirmCancel.moneyType2);
|
bool enough1 = showMoney1 && have1 >= m_NeedMoney1;
|
bool enough2 = showMoney2 && have2 >= m_NeedMoney2;
|
|
if (enough1 || (!enough2 && showMoney1))
|
{
|
m_Toggle1.SetIsOnWithoutNotify(showToggles);
|
m_Toggle2.SetIsOnWithoutNotify(false);
|
m_SelectedMoneyType = ConfirmCancel.moneyType1;
|
m_SelectedNeedCount = m_NeedMoney1;
|
}
|
else
|
{
|
m_Toggle1.SetIsOnWithoutNotify(false);
|
m_Toggle2.SetIsOnWithoutNotify(showToggles);
|
m_SelectedMoneyType = ConfirmCancel.moneyType2;
|
m_SelectedNeedCount = m_NeedMoney2;
|
}
|
|
UpdateMoneyDisplay(m_SelectedMoneyType, m_SelectedNeedCount);
|
}
|
|
void TrySelectMoneyType(int moneyType, int needCount)
|
{
|
long have = UIHelper.GetMoneyCnt(moneyType);
|
if (have < needCount)
|
{
|
SysNotifyMgr.Instance.ShowTip("LackMoney", moneyType);
|
if (m_SelectedMoneyType == ConfirmCancel.moneyType1)
|
{
|
m_Toggle1.isOn = true;
|
}
|
else
|
{
|
m_Toggle2.isOn = true;
|
}
|
return;
|
}
|
|
m_SelectedMoneyType = moneyType;
|
m_SelectedNeedCount = needCount;
|
UpdateMoneyDisplay(moneyType, needCount);
|
}
|
|
void UpdateMoneyDisplay(int moneyType, int needCount)
|
{
|
moneyIcon.SetIconWithMoneyType(moneyType);
|
moneyText.text = GetPayMethodMoneyText(moneyType, needCount);
|
m_Content.text = Language.Get("Recharge6", UIHelper.GetIconNameWithMoneyType(moneyType), ConfirmCancel.payMethodMoney, ConfirmCancel.payMethodTitle);
|
}
|
|
string GetPayMethodMoneyText(int moneyType, int needCount)
|
{
|
long haveCount = UIHelper.GetMoneyCnt(moneyType);
|
if (moneyType == 97 || moneyType == 99)
|
{
|
return UIHelper.AppendColor(
|
haveCount >= needCount ? TextColType.Green : TextColType.Red,
|
$"{UIHelper.ReplaceLargeNum(haveCount / 100.0, 2)}/{UIHelper.ReplaceLargeNum(needCount / 100.0, 2)}");
|
}
|
|
return UIHelper.ShowUseMoney(moneyType, needCount);
|
}
|
|
private void OnConfirm()
|
{
|
if (UIHelper.GetMoneyCnt(m_SelectedMoneyType) < m_SelectedNeedCount)
|
{
|
SysNotifyMgr.Instance.ShowTip("LackMoney", m_SelectedMoneyType);
|
return;
|
}
|
|
CloseWindow();
|
ConfirmCancel.OnDualToggleConfirmEvent?.Invoke(true, m_SelectedMoneyType);
|
}
|
|
private void OnCancel()
|
{
|
CloseWindow();
|
ConfirmCancel.OnDualToggleConfirmEvent?.Invoke(false, 0);
|
}
|
}
|