using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; using GCGame.Table; using Module.Log; // 包含多级菜单的页面 // 可能还需要显示模型 public class OpenServiceSubMenuPageCS : MarketingUIBaseCS { public UIContainerSelect menuContainer; // 菜单容器 public UIContainerBase awardContainer; // 奖品容器 public Image banner; // 页面背景 public UICameraTexture modelTexture; // 模型贴图 public List descList; // 页面文字描述列表 //public Image tempModelImage; // 临时图片,代替模型 public Button btnReacharge; // 充值按钮 private int showingIndex = -1; // 当前显示的页面ID private List menuDatas; // 二级菜单数据,包括奖品信息 public List MenuDatas { get { return menuDatas; } } private void OnEnable() { AskForInfo(); } // 设置Banner public void SetBanner() { if (banner != null) { Tab_ActInfoClient tab = TableManager.GetActInfoClientByID(this._ActID, 0); if (tab != null && !string.IsNullOrEmpty(tab.Icon)) { LoadAssetBundle.Instance.SetImageSprite(banner, tab.Icon); banner.gameObject.SetActive(true); } else { banner.gameObject.SetActive(false); } } } // 设置页面描述 public void SetDesc(List infos) { if (descList != null) { for (int i = 0; i < descList.Count; i++) { if (i < infos.Count && !string.IsNullOrEmpty(infos[i])) { descList[i].text = StrDictionary.GetServerDictionaryFormatString(infos[i]); descList[i].gameObject.SetActive(true); } else { descList[i].gameObject.SetActive(false); } } } } // 设置菜单显示 public void SetSubMenu(List datas) { if(menuContainer != null && datas != null && datas.Count > 0) { List selectedMenus = new List(); if(showingIndex != -1 && showingIndex < datas.Count) { selectedMenus.Add(datas[showingIndex]); } else { selectedMenus.Add(datas[0]); } menuContainer.InitSelectContent(datas, selectedMenus, OnMenuSelected); } } // 菜单点击回调 public void OnMenuSelected(object obj) { MarketingActPacketSubTag selectedMenu = obj as MarketingActPacketSubTag; if (selectedMenu != null) { for (int i = 0; i < MenuDatas.Count; i++) { if (MenuDatas[i].tagId == selectedMenu.tagId) { if (awardContainer != null) { awardContainer.InitContentItem(selectedMenu.awardTags); showingIndex = i; SetModel(MenuDatas[i]); break; } } } } } // 点击充值按钮 public void OnRechargeBtnClick() { YuanBaoShopLogic.OpenChargePage(); } // 设置模型 public void SetModel(MarketingActPacketSubTag selectMenu) { if(modelTexture != null) { if (selectMenu.modleID != 0) { Tab_CharModel tab = TableManager.GetCharModelByID(selectMenu.modleID, 0); if (tab != null) { modelTexture.InitModelPath(tab.ResPath, tab); modelTexture.gameObject.SetActive(true); //tempModelImage.gameObject.SetActive(false); } else { // 模型数据不存在时,使用“假”数据顶替。 //LoadAssetBundle.Instance.SetImageSprite(tempModelImage, selectMenu.modleID.ToString()); modelTexture.gameObject.SetActive(false); //tempModelImage.gameObject.SetActive(true); } } else { modelTexture.gameObject.SetActive(false); //tempModelImage.gameObject.SetActive(false); } } } #region 请求与接收处理 // 请求 public void AskForInfo() { MarketingActAwardPageReq req = new MarketingActAwardPageReq(); req.actID = this._ActID; req.updateOrInit = 1; req.SendMsg(); } //// 获取信息 //public void GetPageInfo(MarketingActPacketPageRet packet) //{ // LogModule.DebugLog(this.gameObject.name + " : Recieve message."); // menuDatas = packet.subTags; // SetBanner(); // SetDesc(packet.pageDescList); // SetSubMenu(MenuDatas); // // 设置充值按钮监听 // if(btnReacharge != null) // { // btnReacharge.onClick.AddListener(OnRechargeBtnClick); // } //} //// 接收获取奖励 //public void GetAwardRet(MarketingActAwardPageGetAwardRet packet) //{ // // 更新二级菜单红点信息 // menuContainer.ForeachActiveItem( // (menuItem) => // { // if(menuItem.TagID == packet.tagID) // { // menuItem.SetRedPoint(packet.actState); // } // } // ); // // 更新三级按钮 // awardContainer.ForeachActiveItem( // (tag) => // { // if (tag.SubID == packet.subTagId) // { // tag.SetBtnState(packet.btnState); // } // } // ); //} // 新数据接口 protected override void MarketingActPageAwardRetDelInner(object packet) { LogModule.DebugLog(this.gameObject.name + " : Recieve message."); MarketingActPacketPageRet p = packet as MarketingActPacketPageRet; if (p == null) return; menuDatas = p.subTags; SetBanner(); SetDesc(p.pageDescList); SetSubMenu(MenuDatas); // 设置充值按钮监听 if (btnReacharge != null) { btnReacharge.onClick.AddListener(OnRechargeBtnClick); } } protected override void MarketingActPageGetAwardRetInner(object packet) { MarketingActAwardPageGetAwardRet p = packet as MarketingActAwardPageGetAwardRet; if (p == null) return; // 更新二级菜单红点信息 menuContainer.ForeachActiveItem( (menuItem) => { if (menuItem.TagID == p.tagID) { menuItem.SetRedPoint(p.actState); } } ); // 更新三级按钮 awardContainer.ForeachActiveItem( (tag) => { if (tag.SubID == p.subTagId) { tag.SetBtnState(p.btnState); } } ); } ///////////// #endregion }