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

209 lines
6.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}