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 = "" + count + ""; }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); } }