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(); 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(true); if(script != null) { script.Init(); } } else { LogModule.ErrorLog("No this resource " + assetName + ".prefab"); } }, data); } }