//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, May 09, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class FirstRechargeWin : Window { [SerializeField] RectTransform m_ContainerCharges; [SerializeField] Button[] m_GotoChargeDetailBtns; [SerializeField] Text[] m_GotoChargeDetailTxts; [SerializeField] Image[] m_FirstRechargeSigns; [SerializeField] Button m_GotoChargeBtn; [SerializeField] Button m_GetRewardBtn; [SerializeField] Button m_CloseBtn; [SerializeField] RawImage[] m_RawWeapons; [SerializeField, Header("武器角度,职业1,2,3")] Vector3[] m_WeaponAngles; [SerializeField] ItemCell[] m_Items; VipModel m_Model; VipModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_GotoChargeBtn.onClick.AddListener(() => { if (VersionConfig.Get().isBanShu) { SysNotifyMgr.Instance.ShowTip("FuncNoOpen_VIP"); return; } CloseImmediately(); WindowCenter.Instance.Open(false); }); for (int i = 0; i < m_GotoChargeDetailBtns.Length; i++) { var index = i; m_GotoChargeDetailBtns[i].onClick.AddListener(()=> { GotoChargeDetail(index); }); } m_CloseBtn.onClick.AddListener(()=> { CloseImmediately(); WindowCenter.Instance.Open(); }); m_GetRewardBtn.onClick.AddListener(OnGetReward); for (int i = 0; i < m_Items.Length; i++) { var _index = i; m_Items[i].button.onClick.AddListener(() => { OnItemClick(_index); }); } } protected override void OnPreOpen() { model.firstChargeRewardEvent += UpdateButtonState; PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshInfoEvent; UpdateButtonState(); UpdateItems(); DisplayWeapon(); var list = model.GetFrontCharges(); for (int i = 0; i < m_GotoChargeDetailTxts.Length; i++) { if (i < list.Count) { m_GotoChargeDetailBtns[i].gameObject.SetActive(true); var config = CTGConfig.Get(list[i]); m_GotoChargeDetailTxts[i].text = UIHelper.ReplaceNewLine(Language.Get("FirstChargeNumber", model.GetPayRmb(config.RecordID), config.GainGold)); m_FirstRechargeSigns[i].gameObject.SetActive(config.FirstGoldPaperPrize > 0); } else { m_GotoChargeDetailBtns[i].gameObject.SetActive(false); m_FirstRechargeSigns[i].gameObject.SetActive(false); } } } protected override void OnAfterOpen() { } protected override void OnPreClose() { model.firstChargeRewardEvent -= UpdateButtonState; PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshInfoEvent; UI3DModelExhibition.Instance.StopShow(); } protected override void OnAfterClose() { } #endregion private void PlayerDataRefreshInfoEvent(PlayerDataType type) { if (type == PlayerDataType.ChangeCoinPointTotal) { UpdateButtonState(); } } private void UpdateButtonState() { m_ContainerCharges.gameObject.SetActive(PlayerDatas.Instance.baseData.coinPointTotal == 0); m_GetRewardBtn.gameObject.SetActive(PlayerDatas.Instance.baseData.coinPointTotal > 0 && !model.firstChargeRewardGet); } private void OnGetReward() { if(PlayerDatas.Instance.baseData.coinPointTotal > 0 && !model.firstChargeRewardGet) { CA504_tagCMPlayerGetReward pak = new CA504_tagCMPlayerGetReward(); pak.RewardType = (byte)GotServerRewardType.Def_RewardType_GoldGiftFirst; pak.DataEx = 0; pak.DataExStrLen = 0; pak.DataExStr = string.Empty; GameNetSystem.Instance.SendInfo(pak); WindowJumpMgr.Instance.ClearJumpData(); CloseImmediately(); WindowCenter.Instance.Open(); } } private void UpdateItems() { List _list = null; model.TryGetFirstReward(PlayerDatas.Instance.baseData.Job, out _list); if (_list != null) { for (int i = 0; i < m_Items.Length; i++) { if (i >= _list.Count) { m_Items[i].gameObject.SetActive(false); continue; } m_Items[i].gameObject.SetActive(true); var _item = _list[i]; var _itemModel = new ItemCellModel(_item.id, false, (ulong)_item.count); m_Items[i].Init(_itemModel); } } } private void OnItemClick(int _index) { List _list = null; model.TryGetFirstReward(PlayerDatas.Instance.baseData.Job, out _list); if (_list != null) { if (_index < _list.Count) { var item = _list[_index]; ItemTipUtility.Show(item.id); } } } private void GotoChargeDetail(int index) { var list = model.GetFrontCharges(); if (index >= 0 && index < list.Count) { model.CTG(list[index]); } } private void DisplayWeapon() { var job = PlayerDatas.Instance.baseData.Job; var _rawImage = m_RawWeapons[0]; var _angle = m_WeaponAngles[0]; var _weaponId = model.firstRechargeWeapon[job]; for (int i = 0; i < m_RawWeapons.Length; i++) { m_RawWeapons[i].gameObject.SetActive(job == (i + 1)); if ((i + 1) == job) { _rawImage = m_RawWeapons[i]; _angle = m_WeaponAngles[i]; } } var config = ItemConfig.Get(_weaponId); UI3DModelExhibition.Instance.ShowEquipment(config.ChangeOrd, _angle, _rawImage); } } }