using UnityEngine; using UnityEngine.UI; using System.Collections; using Games.Item; using System.Collections.Generic; using GCGame.Table; public class ExtraFunTipRoot : UIControllerBase { public GameObject _Offset; public GameObject _MeridiaSoul; // 经脉提示 public GameObject _Kungfu; // 武魂提示 public GameObject _Heart; // 心法提示 public GameObject _ShihunTip; // 装备失魂 public GameObject _FixTip; // 装备修理 public GameObject _TianghuaTip; public GameObject _MissionAward_Day; // 日跑环奖励 public GameObject _MissionAward_Week; // 周跑环奖励 public GameObject _EquipFrenzy; // 装备狂化 public GameObject _Medicine; // 玩家可携带的自动回血/回蓝药品 public int _MedicineDescID = -1; // 药品提示用的字典ID public List advanceTypeIconList = new List(); public void OnEnable() { SetInstance(this); StartCoroutine(InitShowInfo()); } IEnumerator InitShowInfo() { yield return new WaitForEndOfFrame(); UpdateEquipFunTip(); UpdateEquipEnhance(); UpdateMissionAward(); UpdateMerial(); UpdateFrenzy(); UpdateAdvanceFuncTip(); yield break; } public void ShowBtnTips() { if (_Offset) _Offset.SetActive(true); } public void HideBtnTips() { if (_Offset) _Offset.SetActive(false); } public void OnDisable() { SetInstance(null); } #region equip private GameItem _NeedExchangeEquipA; private GameItem _NeedExchangeEquipB; private GameItem _UnfixableEquip; public void UpdateEquipFunTip() { if (!FunctionExLogic.Instance()) return; GameItemContainer BackPack = GameManager.gameManager.PlayerDataPool.BackPack; List backpackItems = ItemTool.ItemFilter(BackPack, 0); GameItemContainer EquipPack = GameManager.gameManager.PlayerDataPool.EquipPack; List equipPackItems = ItemTool.ItemFilter(EquipPack, 0); bool isShihun = false; bool isFix = false; bool enhanceExchange = false; _NeedExchangeEquipA = null; _NeedExchangeEquipB = null; foreach (var itemInfo in backpackItems) { if (itemInfo.IsEquipMent()) { if (itemInfo.ShihunTime > 0) { isShihun = true; } if (itemInfo.Durable == 0) { if (PlayerPreferenceData.AutoRefitEquip) { if (!itemInfo.EquipRefit((int)GameItemContainer.Type.TYPE_BACKPACK)) { _UnfixableEquip = itemInfo; isFix = true; } } else { isFix = true; } } //if (itemInfo.StrengthLevel > 0) //{ // GameItemContainer equipPack = GameManager.gameManager.PlayerDataPool.EquipPack; // foreach (var equip in equipPack.Items) // { // if (equip.StrengthLevel < itemInfo.StrengthLevel) // { // _NeedExchangeEquipA = itemInfo; // _NeedExchangeEquipB = equip; // enhanceExchange = true; // break; // } // } //} } } foreach (var itemInfo in equipPackItems) { if (itemInfo.IsEquipMent()) { if (itemInfo.ShihunTime > 0) { isShihun = true; } if (itemInfo.Durable == 0) { if (PlayerPreferenceData.AutoRefitEquip) { if (!itemInfo.EquipRefit((int)GameItemContainer.Type.TYPE_EQUIPPACK)) { _UnfixableEquip = itemInfo; isFix = true; } } else { isFix = true; } } } } if (isShihun) { _ShihunTip.SetActive(true); } else { _ShihunTip.SetActive(false); } if (isFix) { _FixTip.SetActive(true); } else { _FixTip.SetActive(false); } } public void UpdateMerial() { _MeridiaSoul.SetActive(MeridiaSoulData.Instance.MerialSoulHasUp); _Kungfu.SetActive(MeridiaSoulData.Instance.KungfuHasUp); _Heart.SetActive(MeridiaSoulData.Instance.HeartHasUp); } //打开境界界面 public void OnBtnOpenMerial(int index) { UIManager.ShowUI(UIInfo.MeridiaSoulWnd, delegate (bool bSuccess, object param) { if (bSuccess) { MeridiaSoulMain.Instance._TagPanel.ShowPage((int)param); } }, index); } public void OnBtnBackPack() { UIManager.ShowUI(UIInfo.BackPackRoot); } public void OnMedicineBtnClick() { int shopID = 2; _Medicine.gameObject.SetActive(false); MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{" + _MedicineDescID + "}"), null, () => { //Tab_SceneClass curSceneTab = TableManager.GetSceneClassByID(GameManager.gameManager.RunningScene, 0); //if (curSceneTab.Type != 1 && curSceneTab.Type != 0) //{ // GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{" + 71002 + "}")); // return; //} //Tab_AutoSearch autoSearch = TableManager.GetAutoSearchByID(1, 0); //if (autoSearch == null) //{ // return; //} ////接受任务后自动寻路 //Vector3 targetPos = new Vector3(); //targetPos.x = autoSearch.X; //targetPos.z = autoSearch.Z; //int nTargetScene = autoSearch.DstSceneID; //AutoSearchPoint point = new AutoSearchPoint(nTargetScene, targetPos.x, targetPos.z); //if (GameManager.gameManager && GameManager.gameManager.AutoSearch) //{ // GameManager.gameManager.AutoSearch.BuildPath(point); // Tab_RoleBaseAttr RoleBase = TableManager.GetRoleBaseAttrByID(autoSearch.DataId, 0); // // 确定NPC存在,并且寻路信息已经构建 // if (null != RoleBase && null != GameManager.gameManager.AutoSearch.Path) // { // GameManager.gameManager.AutoSearch.Path.AutoSearchTargetName = RoleBase.Name; // GameManager.gameManager.AutoSearch.Path.autoSearchRadius = RoleBase.DialogRadius; // UIManager.CloseUI(UIInfo.Activity); // } //} SysShopController.ShowShop(shopID, true); }, disableCallBack: () => { ExtraFunTipRoot.Instance()._Medicine.SetActive(true); }); } public void OnBtnFix() { if (_UnfixableEquip != null) { foreach (var attr in _UnfixableEquip.ExAttrs) { if (attr.XilianTab.PropID == (int)PropID.PropertyID.EQUIP_XILIAN_NOREFIT) { GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5375}")); } } } UIManager.ShowUI(UIInfo.BackPackRoot); } public void UpdateFrenzy() { _EquipFrenzy.gameObject.SetActive(EquipFrenzy.HasAnyFrenzy); } public void ShowEuipFrenzy() { UIManager.ShowUI(UIInfo.EquipEnhance, delegate (bool bSucess, object param) { if (bSucess) { EquipEnhanceRoot.Instance().TryOpen(3); } }); } public void UpdateEquipEnhance() { if (!FunctionExLogic.Instance()) return; if (!FunctionExLogic.Instance()._EquipFunc.IsBtnOpen()) return; if (EquipEnhanceRoot.CanAnyEquipQianhua()) { _TianghuaTip.SetActive(true); } else { _TianghuaTip.SetActive(false); } } public void OnEquipEnhance() { EquipEnhanceRoot.ShowEquipQianhua(); } #endregion #region mission award public void UpdateMissionAward() { // 每日跑环奖励 if (GameManager.gameManager.CircleMissionManager.LastAwardCntByType(CircleMissionManager.CircleType.daily) > 0 || GameManager.gameManager.CircleMissionManager.CurStateByType(CircleMissionManager.CircleType.daily) == 2) { _MissionAward_Day.SetActive(true); } else { _MissionAward_Day.SetActive(false); } // 每周跑环奖励 if (GameManager.gameManager.CircleMissionManager.LastAwardCntByType(CircleMissionManager.CircleType.weekly) > 0 || GameManager.gameManager.CircleMissionManager.CurStateByType(CircleMissionManager.CircleType.daily) == 2) { _MissionAward_Week.SetActive(true); } else { _MissionAward_Week.SetActive(false); } } // 每日跑环奖励 public void OnBtnCirclrAward_Day() { UIManager.ShowUI(UIInfo.MissionCircleAward_Day); } // 每周跑环奖励 public void OnBtnCirclrAward_Week() { UIManager.ShowUI(UIInfo.MissionCircleAward_Week); } #endregion #region Advance public void UpdateAdvanceFuncTip() { if (AdvanceCanadvanceCtr.GetInstance() != null) { AdvanceCanadvanceCtr.GetInstance().JudgeShowCanAdvanceIcon(); } else { for (int index = 0; index < advanceTypeIconList.Count; index++) { advanceTypeIconList[index].gameObject.SetActive(false); } } } public void ShowOrHideTypeIcon(List needShowTypeIconList) { for (int index = 0; index < advanceTypeIconList.Count; index++) { advanceTypeIconList[index].gameObject.SetActive(needShowTypeIconList.Contains((int)(advanceTypeIconList[index].advanceType))); } } #endregion #region role level public GameObject _BtnLevel; public void UpdateRoleLevel() { // 为了修复在当前经验可升级,显示了图标,再用GM升到满级,图标不消失的Bug _BtnLevel.SetActive(false); var playerBaseAttr = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr; var curTabLevelup = TableManager.GetLevelUpByID(playerBaseAttr.Level, 0); if (null == curTabLevelup) return; var maxExp = long.Parse(curTabLevelup.ExpNeed); _BtnLevel.SetActive(playerBaseAttr.Exp >= maxExp); } public void ClickRoleLevel() { UIManager.ShowUI(UIInfo.RoleView); } #endregion #region ChatExpandOperation public void OperationOffsetPos(float _ChangeValue) { _Offset.gameObject.transform.localPosition = new Vector3(_Offset.gameObject.transform.localPosition.x, _Offset.gameObject.transform.localPosition.y + _ChangeValue, _Offset.gameObject.transform.localPosition.z); } #endregion #region mail public GameObject _MailIcon; public void ShowMailIcon(bool isShow) { _MailIcon.SetActive(isShow); } public void OnMailIconClick() { UIManager.ShowUI(UIInfo.FriendAndMail, delegate(bool bSucess, object param) { if(bSucess) { FriendAndMailRoot.Instance()._TagPanel.ShowPage(3); } }); } #endregion }