using UnityEngine; using System.Collections; using GCGame.Table; using Module.Log; using UnityEngine.UI; public class BtnFunc : MonoBehaviour { public int _functionOpenId; //如果需要在外部设置ID,这边便需要激活为true,在UIPrefab上处理 public bool _IsIgnoreSetFuncId = false; public GameObject remainTimeStateIcon; public Text remainTimeText; public GameObject _ImageGO; public BtnList _BtnList; public GameObject _limitDescBG; public Text _limitLevelDesc; public GameObject _RedIcon; private int _OpenGuide; private int _OpenLevel; private int _ShowLevel; private int _OpenVIPLevel; private int _OpenDays; //按开服天数开启 private void OnEnable() { if (remainTimeStateIcon) { remainTimeStateIcon.SetActive(false); RedTipPoint redTipPoint = remainTimeStateIcon.GetComponent(); if (redTipPoint != null) redTipPoint.Init(); } } public void UpdateFuncState(int _funcId = -1) { if(_funcId != -1 && !_IsIgnoreSetFuncId) _functionOpenId = _funcId; if (_funcId == 104) return; //不处理 var functionOpenTab = TableManager.GetFunctionOpenByID(_functionOpenId, 0); if(functionOpenTab == null) { return; } _OpenGuide = functionOpenTab.ShowGUIDId; _OpenLevel = functionOpenTab.OpenLevel; _ShowLevel = functionOpenTab.ShowLevel; _OpenVIPLevel = functionOpenTab.OpenVipLv; _OpenDays = functionOpenTab.OpenServerDay; if (_OpenDays > GlobalData.OpenServerDays) { gameObject.SetActive(false); return; } else gameObject.SetActive(true); if (_OpenGuide > 0) { if (_OpenGuide > Guide.Instance._FinishGuideID) { gameObject.SetActive(false); return; } else { LogModule.DebugLog("Set fuc enable:" + gameObject.name + " " + (GameManager.gameManager.PlayerDataPool.VipCost >= _OpenVIPLevel).ToString()); gameObject.SetActive(GameManager.gameManager.PlayerDataPool.VipCost >= _OpenVIPLevel); } }else if(functionOpenTab.ShowLevel > 0) { gameObject.SetActive(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level >= functionOpenTab.ShowLevel && GameManager.gameManager.PlayerDataPool.VipCost >= _OpenVIPLevel); } if(_OpenLevel > _ShowLevel) { if(IsBtnOpen()) { if (_limitDescBG != null) _limitDescBG.gameObject.SetActive(false); // 达到开启得就不显示文字 } else { if (_limitDescBG != null && _limitLevelDesc != null) { _limitLevelDesc.text = StrDictionary.GetClientDictionaryString("#{46002}", functionOpenTab.OpenLevel); _limitDescBG.gameObject.SetActive(true); } } } else { if(_limitDescBG != null) _limitDescBG.gameObject.SetActive(false); } ShowRemainTimeStateIcon(); } public bool IsBtnOpen() { if (_OpenGuide > 0) { if (_OpenGuide > Guide.Instance._FinishGuideID) { return false; } else { return GameManager.gameManager.PlayerDataPool.VipCost >= _OpenVIPLevel; } } else if (_OpenLevel > 0) { if(GameManager.gameManager.PlayerDataPool.FunctionOpenState.ContainsKey(_functionOpenId) && GameManager.gameManager.PlayerDataPool.FunctionOpenState[_functionOpenId] && GameManager.gameManager.PlayerDataPool.VipCost >= _OpenVIPLevel) { return true; } else { return false; } } return true; } public void HideImage() { _ImageGO.gameObject.SetActive(false); } public void ShowImage() { _ImageGO.gameObject.SetActive(true); } public void OnFunctionIconClick() { if(IsBtnOpen()) { if(FunctionExLogic.Instance()) { FunctionExLogic.Instance().OnFunctionBtnClick(_functionOpenId); } }else { //打开提示界面 UIManager.ShowUI(UIInfo.FunctionLimitRoot, delegate(bool bSucess, object param) { if(bSucess) { FunctionLimitRoot.Instance.ShowFunctionLimitInfo(_functionOpenId); } }); } } public void ShowRemainTimeStateIcon(int remainTime = -1) { if (remainTimeStateIcon == null) return; if (remainTime == -1) remainTime = GameManager.gameManager.PlayerDataPool.FunctionRemainTimeStateManager.GetopyRemainTime(); if (remainTime <= 0) { remainTimeStateIcon.SetActive(false); return; } remainTimeStateIcon.SetActive(true); if (remainTimeText != null) { remainTimeText.text = (remainTime >= 99 ? 99 : remainTime).ToString(); } } public void ShowRedIcon(bool isShow) { if (_RedIcon) { if(isShow) { if(!_RedIcon.gameObject.activeInHierarchy) _RedIcon.gameObject.SetActive(true); }else _RedIcon.gameObject.SetActive(false); } } }