using System.Collections; using System.Collections.Generic; using UnityEngine; using GCGame.Table; using Module.Log; using UnityEngine.UI; public class PrivilegeWelfarePanelCtr : MonoBehaviour { private enum PRIVILEGEWELFAREREWSTATE { CANT = 0, //条件不足 CAN, //可以领取 ACCEPTED, //已经领取 } public static PrivilegeWelfarePanelCtr Instance; private void Awake() { Instance = this; } private void OnDestroy() { Instance = null; } public GameObject _MenuItemPrefab; public Transform _MenuItemParent; public GameObject _RewItemPrefab; public Transform _RewItemParent; public UICameraTexture _CamerTexture; public GameObject _CantBtn; public GameObject _CanBtn; public GameObject _HasAcceptBtn; public List _DescIconList; public GameObject _canGetRewMatkIcon; private List _MenuItemPrefabList = new List(); IEnumerator CreateMenuItem() { yield return new WaitForEndOfFrame(); for (int i = 0; i < _MenuItemParent.childCount; i++) { _MenuItemParent.GetChild(i).gameObject.SetActive(false); } //_MenuItemPrefabList.Clear(); foreach (var info in TableManager.GetVipBook().Values) { if(info.VipLevel == 0) { continue; } var item = GameObject.Instantiate(_MenuItemPrefab); item.transform.SetParent(_MenuItemParent); item.transform.localPosition = Vector3.zero; item.transform.localScale = Vector3.one; item.transform.localRotation = Quaternion.Euler(Vector3.zero); item.GetComponent().InitMenuItem(info.VipLevel); _MenuItemPrefabList.Add(item); } for (int i = 0; i < _MenuItemParent.childCount; i++) { _MenuItemParent.GetChild(i).gameObject.SetActive(false); if (i<12) { _MenuItemParent.GetChild(i).gameObject.SetActive(true); } } ReqWelfarePanelInfo(); yield break; } private void OnEnable() { //if (_MenuItemPrefabList.Count <= 0) //{ // StartCoroutine(CreateMenuItem()); //}else //{ // ReqWelfarePanelInfo(); //} StartCoroutine(CreateMenuItem()); } public void ReqWelfarePanelInfo() { ReqVipInfo req = new ReqVipInfo(); req._NodeId = 1; req.SendMsg(); } //<等级,状态> VIP0没有奖励 从1开始到16 private Dictionary _PrivilegeWelfareRewStateDic = new Dictionary(); public void OnPacket(RetVipRewardInfo packet) { for(int index = 0; index < packet._RewardState.Count; index++) { if(!_PrivilegeWelfareRewStateDic.ContainsKey(index + 1)) { _PrivilegeWelfareRewStateDic.Add(index + 1, packet._RewardState[index]); } else { _PrivilegeWelfareRewStateDic[index + 1] = packet._RewardState[index]; } } SetRedDot(); //打开第一个可以领奖的界面 没有就默认最高 ShowFirstCanAcceptPanel(); } public bool isUse; private void scrollViewShowPosition(int vipLevel) { if (isUse) { return; } if (vipLevel <= 4) { _MenuItemParent.transform.localPosition = new Vector3(_MenuItemParent.transform.localPosition.x, 0, 0); } if (vipLevel > 4 && vipLevel <= 8) { _MenuItemParent.transform.localPosition = new Vector3(_MenuItemParent.transform.localPosition.x, 300, 0); } if (vipLevel > 8) { _MenuItemParent.transform.localPosition = new Vector3(_MenuItemParent.transform.localPosition.x, 670, 0); } } public int newCurSelectVipLevel = -1; public void ShowFirstCanAcceptPanel() { foreach (var info in _PrivilegeWelfareRewStateDic) { if(info.Value == (int)PRIVILEGEWELFAREREWSTATE.CAN) { OnMenuItemClick(info.Key); return; } } if (newCurSelectVipLevel > 0) { OnMenuItemClick(newCurSelectVipLevel); } else { //当前页面没有奖励可以领取的时候 就显示当前玩家VIP等级的界面 OnMenuItemClick(GameManager.gameManager.PlayerDataPool.VipCost <= 0 ? 1 : GameManager.gameManager.PlayerDataPool.VipCost); } } public int _CurSelectVipLevel = -1; public void OnMenuItemClick(int vipLevel) { _CurSelectVipLevel = vipLevel; scrollViewShowPosition(vipLevel); for (int index = 0; index < _MenuItemPrefabList.Count; index++) { _MenuItemPrefabList[index].GetComponent().ShowMarkIcon( vipLevel == _MenuItemPrefabList[index].GetComponent()._MenuItemVipLevel); } StartCoroutine(InitPage()); } private Tab_VipBook _CurPageVipBookTab = null; IEnumerator InitPage() { if (!TableManager.GetVipBook().TryGetValue(_CurSelectVipLevel, out _CurPageVipBookTab)) { LogModule.ErrorLog("_CurSelectVipLevel is null : " + _CurSelectVipLevel); yield break; } //实例并初始化奖励 InitRewItem(); //初始化模型 ShowModel(); //初始化描述文字Icon InitPageDescIcon(); InitBtnState(); SetRedDot(); _canGetRewMatkIcon.SetActive(false/*_PrivilegeWelfareRewStateDic.ContainsKey(_CurSelectVipLevel) && _PrivilegeWelfareRewStateDic[_CurSelectVipLevel] == 1*/); yield break; } private void SetRedDot() { foreach (var item in _PrivilegeWelfareRewStateDic) { _MenuItemPrefabList[ item.Key - 1].GetComponent().ShowMarkIconAndRemainTime(item.Value); } } void InitPageDescIcon() { for(int index = 0; index < _DescIconList.Count; index++) { if(_CurPageVipBookTab.GetIconPathbyIndex(index).Equals("-1")) { _DescIconList[index].gameObject.SetActive(false); }else { _DescIconList[index].gameObject.SetActive(true); LoadAssetBundle.Instance.SetImageSprite(_DescIconList[index], _CurPageVipBookTab.GetIconPathbyIndex(index)); } } } public void InitBtnState() { if(_PrivilegeWelfareRewStateDic.ContainsKey(_CurPageVipBookTab.VipLevel)) { if(_PrivilegeWelfareRewStateDic[_CurPageVipBookTab.VipLevel] == (int)PRIVILEGEWELFAREREWSTATE.CANT) { _CantBtn.SetActive(true); _HasAcceptBtn.SetActive(false); _CanBtn.SetActive(false); } if (_PrivilegeWelfareRewStateDic[_CurPageVipBookTab.VipLevel] == (int)PRIVILEGEWELFAREREWSTATE.CAN) { _CantBtn.SetActive(false); _HasAcceptBtn.SetActive(false); _CanBtn.SetActive(true); } if (_PrivilegeWelfareRewStateDic[_CurPageVipBookTab.VipLevel] == (int)PRIVILEGEWELFAREREWSTATE.ACCEPTED) { _CantBtn.SetActive(false); _HasAcceptBtn.SetActive(true); _CanBtn.SetActive(false); } } else { LogModule.ErrorLog("No state"); _CantBtn.SetActive(false); _HasAcceptBtn.SetActive(false); _CanBtn.SetActive(false); } } public void OnGainBtnClick() { ReqGetPrivilegeWelfare req = new ReqGetPrivilegeWelfare(); req._vipLevel = _CurSelectVipLevel; req.SendMsg(); } public void OnCantBtnClick() { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{87333}")); } void ShowModel() { var CharModel = TableManager.GetCharModelByID(GetShowModelId(_CurPageVipBookTab.ShowModeId), 0); if (CharModel == null) { _CamerTexture.gameObject.SetActive(false); return; } _CamerTexture._CanDrag = false; _CamerTexture.gameObject.SetActive(true); if (_CamerTexture._FakeObj != null) { _CamerTexture._FakeObj.Disable(); _CamerTexture._FakeObj.Enable(); } _CamerTexture.InitModelPath(CharModel.ResPath, CharModel, LoadAssetBundle.BUNDLE_PATH_MODEL, true, null, false, _CurPageVipBookTab.ShowModeId.Contains("|") ? GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession : -1); } public int GetShowModelId(string modelStr) { if (!modelStr.Contains("|")) { return int.Parse(modelStr); } else { var modelIdStr = modelStr.Split('|'); return int.Parse(modelIdStr[GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession]); } } private List _RewList = new List(); void InitRewItem() { if(_RewList.Count < _CurPageVipBookTab.getRewItemCount()) { var _NeedCreateCount = _CurPageVipBookTab.getRewItemCount() - _RewList.Count; for (int index = 0; index < _NeedCreateCount; index++) { GameObject rewItem = GameObject.Instantiate(_RewItemPrefab); rewItem.transform.SetParent(_RewItemParent); rewItem.transform.localPosition = Vector3.zero; rewItem.transform.localRotation = Quaternion.Euler(Vector3.zero); rewItem.transform.localScale = Vector3.one; rewItem.SetActive(false); _RewList.Add(rewItem); } } for (int index = 0; index < _CurPageVipBookTab.getRewItemCount(); index++) { if (_CurPageVipBookTab.GetRewItembyIndex(index) == -1) { _RewList[index].SetActive(false); } else { _RewList[index].SetActive(true); _RewList[index].GetComponent().InitItem(_CurPageVipBookTab.GetRewItembyIndex(index), _CurPageVipBookTab.GetRewNumbyIndex(index)); } } } }