Files
JJBB/Assets/Project/Script/GUI/Welfare/SwitchMoneyPanlCtr.cs
2024-08-23 15:49:34 +08:00

249 lines
8.5 KiB
C#

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using GCGame.Table;
using System.Collections.Generic;
public class SwitchMoneyPanlCtr : MonoBehaviour {
#region UI拖拽控件
public GameObject[] menuItem;
public GameObject[] menuItemMarkIcon;
//public Text switchCount;
public UINumBoardInput numBoard;
public Text desc;
public Text fromMoney; //起始兑换数量
public Text toMoney; //最终可以兑换的数量
public Image fromMoneyIcon;
public Image toMoneyIcon;
public Text remainJade;
public Image remainJageIcon;
public Text remainYuanbao;
public Image remainYunbaoIcon;
#endregion
private int maxInputNum = 9999;
public static SwitchMoneyPanlCtr Instance;
private void Awake()
{
Instance = this;
GUIData.delMoneyChanged += RefreshRemainMoneyCount;
}
private void OnDestroy()
{
Instance = null;
GUIData.delMoneyChanged -= RefreshRemainMoneyCount;
}
public void OnEnable()
{
LoadRebeat();
}
private void Start()
{
SetRemainMoneyIcon();
}
public void SetRemainMoneyIcon()
{
LoadAssetBundle.Instance.SetImageSprite(remainJageIcon, UICurrencyItem.GetCurrencySprite(MONEYTYPE.MONEYTYPE_YUANBAO));
remainJageIcon.SetNativeSize();
LoadAssetBundle.Instance.SetImageSprite(remainYunbaoIcon, UICurrencyItem.GetCurrencySprite(MONEYTYPE.MONEYTYPE_YUANBAO_BIND));
remainYunbaoIcon.SetNativeSize();
}
private int lingyuToYuanbaoRebate = 0; //灵玉-》元宝
private int lingyuToYinliangRebate = 0; //灵玉-》银两
private int yuanbaoToYinpiaoRebate = 0; //元宝-》银票
public void LoadRebeat()
{
var rebateDic = TableManager.GetCurrencyExchange();
Tab_CurrencyExchange info;
if (rebateDic.TryGetValue((int) MONEYTYPE.MONEYTYPE_YUANBAO, out info))
{
lingyuToYuanbaoRebate = info.GetMoneybyIndex((int)MONEYTYPE.MONEYTYPE_YUANBAO_BIND);
lingyuToYinliangRebate = info.GetMoneybyIndex((int)MONEYTYPE.MONEYTYPE_COIN);
}
if (rebateDic.TryGetValue((int) MONEYTYPE.MONEYTYPE_YUANBAO_BIND, out info))
{
yuanbaoToYinpiaoRebate = info.GetMoneybyIndex((int)MONEYTYPE.MONEYTYPE_COIN_BIND);
}
}
private int _CurSelectType;
public void OnMenuItemClick(int type)
{
_CurSelectType = type;
switch(type)
{
case 1:
aimType = MONEYTYPE.MONEYTYPE_YUANBAO_BIND;
LoadAssetBundle.Instance.SetImageSprite(toMoneyIcon, UICurrencyItem.GetCurrencySprite(MONEYTYPE.MONEYTYPE_YUANBAO_BIND));
break;
case 2:
aimType = MONEYTYPE.MONEYTYPE_COIN;
LoadAssetBundle.Instance.SetImageSprite(toMoneyIcon, UICurrencyItem.GetCurrencySprite(MONEYTYPE.MONEYTYPE_COIN));
break;
default:
aimType = MONEYTYPE.MONEYTYPE_COIN_BIND;
LoadAssetBundle.Instance.SetImageSprite(toMoneyIcon, UICurrencyItem.GetCurrencySprite(MONEYTYPE.MONEYTYPE_COIN_BIND));
break;
}
toMoneyIcon.SetNativeSize();
SetRemainIcon();
RefreshRemainMoneyCount();
for (int index = 0; index < menuItem.Length; index++)
{
menuItemMarkIcon[index].gameObject.SetActive(index == ((int)type - 1));
}
InitFromMoneyIcon();
InitSwitchCountText();
}
public void InitFromMoneyIcon() //初始钱类型Icon
{
switch (_CurSelectType)
{
case 1:
case 2:
LoadAssetBundle.Instance.SetImageSprite(fromMoneyIcon, UICurrencyItem.GetCurrencySprite(MONEYTYPE.MONEYTYPE_YUANBAO));
maxInputNum = (int)GameManager.gameManager.PlayerDataPool.Money.GetMoney_YuanBao();
numBoard.Init(1, 1, maxInputNum == 0 ? 1 : maxInputNum);
break;
default:
LoadAssetBundle.Instance.SetImageSprite(fromMoneyIcon, UICurrencyItem.GetCurrencySprite(MONEYTYPE.MONEYTYPE_YUANBAO_BIND));
maxInputNum = (int)GameManager.gameManager.PlayerDataPool.Money.GetMoney_YuanBaoBind();
numBoard.Init(1, 1, maxInputNum == 0 ? 1 : maxInputNum);
break;
}
fromMoneyIcon.SetNativeSize();
}
private MONEYTYPE aimType;
public void InitAimMoneyType(MONEYTYPE moneyType)
{
aimType = moneyType;
if (aimType == MONEYTYPE.MONEYTYPE_COIN) //兑换元宝、银两的时候不能用元宝进行兑换
{
OnMenuItemClick(2);
}//else if (aimType == MONEYTYPE.MONEYTYPE_COIN_BIND) //兑换银票的时候不能用灵玉进行兑换
//{
// OnMenuItemClick(3);
//}
else
{
OnMenuItemClick(1); //灵玉兑换元宝
}
}
private int count = 1;
private long curTypeMoneyOwnCount = 0;
public void InitSwitchCountText()
{
count = numBoard.Value;
switch (_CurSelectType)
{
case 1:
case 2:
curTypeMoneyOwnCount = GameManager.gameManager.PlayerDataPool.Money.GetMoney_YuanBao();
maxInputNum = (int)GameManager.gameManager.PlayerDataPool.Money.GetMoney_YuanBao();
numBoard.Init(count < 1 ? 1 : count, 1, maxInputNum == 0 ? 1 : maxInputNum);
break;
default:
curTypeMoneyOwnCount = GameManager.gameManager.PlayerDataPool.Money.GetMoney_YuanBaoBind();
maxInputNum = (int)GameManager.gameManager.PlayerDataPool.Money.GetMoney_YuanBaoBind();
numBoard.Init(count < 1 ? 1 : count, 1, maxInputNum == 0 ? 1 : maxInputNum);
break;
}
if (curTypeMoneyOwnCount < count)
{
fromMoney.text = "<color=#82439c>" + count + "</color>";
}else
{
fromMoney.text = count + "";
}
SetCanGetAimMoneyCount();
}
// 可以得到的目标金钱的数量
private int canGetCount = 0;
public void SetCanGetAimMoneyCount()
{
switch(_CurSelectType)
{
case 1:
case 2:
{
switch(aimType)
{
case MONEYTYPE.MONEYTYPE_YUANBAO_BIND: //灵玉兑换元宝
{
toMoney.text = count * lingyuToYuanbaoRebate + "";
}
break;
case MONEYTYPE.MONEYTYPE_COIN: //灵玉兑换银两
{
toMoney.text = count * lingyuToYinliangRebate + "";
}
break;
}
}
break;
case 3: //元宝兑换银票
{
toMoney.text = count * yuanbaoToYinpiaoRebate + "";
}
break;
}
canGetCount = int.Parse(toMoney.text);
}
public void OnSwitchBtnClick()
{
var srcType = _CurSelectType == 1 || _CurSelectType == 2 ? MONEYTYPE.MONEYTYPE_YUANBAO : MONEYTYPE.MONEYTYPE_YUANBAO_BIND;
if (srcType == MONEYTYPE.MONEYTYPE_YUANBAO) //灵玉不足进入充值界面
{
if (!JudgeMoneyLogic.IsMoneyEnough(MONEYTYPE.MONEYTYPE_YUANBAO, count))
{
return;
}
}
CG_REQ_EXCHANGE_MONEY ask = (CG_REQ_EXCHANGE_MONEY)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_EXCHANGE_MONEY);
ask.SetSrcType((int)srcType);
ask.SetDstType((int)aimType);
ask.SetExNum(canGetCount);
ask.SendPacket();
}
public void SetRemainIcon()
{
LoadAssetBundle.Instance.SetImageSprite(remainJageIcon, UICurrencyItem.GetCurrencySprite(MONEYTYPE.MONEYTYPE_YUANBAO));
LoadAssetBundle.Instance.SetImageSprite(remainYunbaoIcon, UICurrencyItem.GetCurrencySprite(MONEYTYPE.MONEYTYPE_YUANBAO_BIND));
}
// 设置剩余的数量(在协议返回的地方调用)
public void RefreshRemainMoneyCount()
{
remainJade.text = GameManager.gameManager.PlayerDataPool.Money.GetMoney_YuanBao() + "";
remainYuanbao.text = GameManager.gameManager.PlayerDataPool.Money.GetMoney_YuanBaoBind() + "";
InitSwitchCountText();
}
public void OnCloseBenClick()
{
UIManager.CloseUI(UIInfo.SwitchMoneyPanl);
}
}