Files
JJBB/Assets/Project/Script/LuaScripts/UI/MarketingMainMenu.cs

209 lines
6.7 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using Games.GlobeDefine;
using GCGame.Table;
using GCGame;
using System;
using Module.Log;
// 运营活动按钮控制
// 注意:
// 其中超值首冲活动非常特殊,显示方式不为图片,而是序列帧,单独做了预设体
// 为 MarketingMainMenuItemSpecial该活动的_MenuIcon为空
public class MarketingMainMenu : UIItemBase
{
public GameObject _RedDot;
public Text remainTimeText; // 剩余次数
public Transform displayRt;
public GameObject descObj; // 描述控制文件
public Text desc; // 描述
public GameObject tomorrow; // 明日标记
private MarketingActState myActState;
public MarketingActState MyActState
{
get { return myActState; }
}
public override void Init()
{
if(descObj != null)
{
descObj.gameObject.SetActive(false);
}
if (tomorrow != null)
{
tomorrow.gameObject.SetActive(false);
}
base.Init();
}
public override void Show(Hashtable hash)
{
base.Show(hash);
MarketingActState actState = (MarketingActState)hash["InitObj"];
myActState = actState;
ShowActState(actState);
}
private void ShowActState(MarketingActState actState)
{
var tabAct = TableManager.GetActInfoClientByID(actState.actID, 0);
if(MyActState.leftOrRight == 1)
{
switch(actState.enumType)
{
case 1:
descObj.gameObject.SetActive(true);
tomorrow.SetActive(false);
desc.text = actState.pluginfo[0];
ShowPrefab(tabAct.Icon);
break;
case 2:
descObj.gameObject.SetActive(true);
tomorrow.SetActive(false);
desc.text = StrDictionary.GetClientDictionaryString("#{6756}", actState.pluginfo[0]);
ShowPrefab(tabAct.Icon);
break;
case 3:
descObj.gameObject.SetActive(false);
tomorrow.SetActive(false);
ShowPrefab(tabAct.Icon + actState.pluginfo[0]);
break;
case 4:
descObj.gameObject.SetActive(true);
desc.text = actState.pluginfo[1];
tomorrow.SetActive(true);
ShowPrefab(tabAct.Icon + actState.pluginfo[0]);
break;
default:
descObj.gameObject.SetActive(false);
tomorrow.SetActive(false);
//_MenuIcon.gameObject.SetActive(true);
//LoadAssetBundle.Instance.SetImageSprite(_MenuIcon, tabAct.Icon);
ShowPrefab(tabAct.Icon);
break;
}
}
// 策划要求左边的按钮只会出现一个,不会再多
// 现在后续增加的左侧按钮仅做特殊处理。
else if(MyActState.leftOrRight == 0)
{
ShowPrefab(tabAct.Icon);
}
_RedDot.SetActive(actState.state > 0);
if(remainTimeText)
remainTimeText.text = (actState.state > 99 ? 99 : actState.state).ToString();
}
public void OnBtnClick()
{
//OnItemClick();
if (MarketingActsRoot.Instance())
MarketingActsRoot.Instance().OnActBtnClick(MyActState);
}
//private void LoadIcon(string iconPath)
//{
// int childCount = iconParent.childCount;
// for(int i = childCount; i >=0; --i)
// {
// Destroy(iconParent.GetChild(i));
// }
// LoadAssetBundle.Instance.LoadGameObject(LoadAssetBundle.BUNDLE_PATH_UI, iconPath,
// (string assetName, GameObject assetItem, Hashtable hashTable) =>
// {
// if (assetItem != null)
// {
// GameObject newIconObj = Instantiate(assetItem, iconParent);
// newIconObj.transform.localPosition = Vector3.zero;
// newIconObj.transform.localScale = Vector3.one;
// }
// }, null);
//}
private void ShowPrefab(string name)
{
if(displayRt.childCount > 0)
{
Transform child = displayRt.GetChild(0);
if(name.Equals(child.gameObject.name, StringComparison.OrdinalIgnoreCase))
{
child.gameObject.SetActive(true);
var script = child.GetComponentInChildren<MarketingModelIcon>();
if(script != null)
{
script.OnEnable();
}
return;
}
else
{
Destroy(child.gameObject);
}
}
GameObject newParent = new GameObject(name);
newParent.gameObject.SetActive(true);
newParent.transform.SetParent(displayRt);
newParent.transform.SetSiblingIndex(0);
newParent.transform.localScale = Vector3.one;
newParent.transform.localPosition = Vector3.zero;
Hashtable data = new Hashtable();
data["Name"] = name;
data["Parent"] = newParent.transform;
LoadAssetBundle.Instance.LoadGameObject(LoadAssetBundle.BUNDLE_PATH_EFFECT, name,
(string assetName, GameObject assetItem, Hashtable hashTable) =>
{
if (assetItem != null)
{
GameObject prefab = assetItem as GameObject;
if(prefab == null)
{
LogModule.ErrorLog("No this resource " + assetName + ".prefab");
return;
}
Transform newRt = hashTable["Parent"] as Transform;
if(newRt == null)
{
return;
}
GameObject newOne = Instantiate(prefab, newRt);
newOne.SetActive(true);
newOne.name = (string)hashTable["Name"];
newOne.transform.localScale = Vector3.one;
newOne.transform.localPosition = Vector3.zero;
UIParticleSystem script = newOne.GetComponentInChildren<UIParticleSystem>(true);
if(script != null)
{
script.Init();
}
}
else
{
LogModule.ErrorLog("No this resource " + assetName + ".prefab");
}
}, data);
}
}