Files
JJBB/Assets/Project/Script/LuaScripts/UI/OpenServiceCS/OpenServiceSubMenuPageCS.cs
2024-08-23 15:49:34 +08:00

258 lines
7.6 KiB
C#

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<Text> descList; // 页面文字描述列表
//public Image tempModelImage; // 临时图片,代替模型
public Button btnReacharge; // 充值按钮
private int showingIndex = -1; // 当前显示的页面ID
private List<MarketingActPacketSubTag> menuDatas; // 二级菜单数据,包括奖品信息
public List<MarketingActPacketSubTag> 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<string> 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<MarketingActPacketSubTag> datas)
{
if(menuContainer != null && datas != null && datas.Count > 0)
{
List<MarketingActPacketSubTag> selectedMenus = new List<MarketingActPacketSubTag>();
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<OpenServiceSubMenuItem>(
// (menuItem) =>
// {
// if(menuItem.TagID == packet.tagID)
// {
// menuItem.SetRedPoint(packet.actState);
// }
// }
// );
// // 更新三级按钮
// awardContainer.ForeachActiveItem<OpenServiceSubAwardTag>(
// (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<OpenServiceSubMenuItem>(
(menuItem) =>
{
if (menuItem.TagID == p.tagID)
{
menuItem.SetRedPoint(p.actState);
}
}
);
// 更新三级按钮
awardContainer.ForeachActiveItem<OpenServiceSubAwardTag>(
(tag) =>
{
if (tag.SubID == p.subTagId)
{
tag.SetBtnState(p.btnState);
}
}
);
}
/////////////
#endregion
}