using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; using GCGame.Table; using Games.Item; using Games.LogicObj; using Module.Log; public class AdvanceFashionPanelCtr : MonoBehaviour { public void InitMenuItemName() { switch (AdvanceMountPanelCtr.Instance.m_AdvanceType) { case AdvanceBase.AdvanceType.Ride: menuItemName[0].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42667}"); menuItemName[1].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42667}"); menuItemName[2].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42667}"); menuItemName[3].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42667}"); break; case AdvanceBase.AdvanceType.Wing: menuItemName[0].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42669}"); menuItemName[1].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42669}"); menuItemName[2].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42669}"); menuItemName[3].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42669}"); break; case AdvanceBase.AdvanceType.Piano: menuItemName[0].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42668}"); menuItemName[1].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42668}"); menuItemName[2].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42668}"); menuItemName[3].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42668}"); break; case AdvanceBase.AdvanceType.Qilinbi: menuItemName[0].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42670}"); menuItemName[1].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42670}"); menuItemName[2].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42670}"); menuItemName[3].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42670}"); break; case AdvanceBase.AdvanceType.Soul: menuItemName[0].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42709}"); menuItemName[1].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42709}"); menuItemName[2].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42709}"); menuItemName[3].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42709}"); break; case AdvanceBase.AdvanceType.Mask: menuItemName[0].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42710}"); menuItemName[1].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42710}"); menuItemName[2].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42710}"); menuItemName[3].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42710}"); break; case AdvanceBase.AdvanceType.Huopao: menuItemName[0].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42711}"); menuItemName[1].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42711}"); menuItemName[2].text = StrDictionary.GetClientDictionaryString("#{43010}") + StrDictionary.GetClientDictionaryString("#{42711}"); menuItemName[3].text = StrDictionary.GetClientDictionaryString("#{43012}") + StrDictionary.GetClientDictionaryString("#{42711}"); break; } } public static AdvanceFashionPanelCtr Instance; private void Awake() { Instance = this; } private void OnDestroy() { Instance = null; } private void OnEnable() { InitMenuItemName(); IsCanDragCameraTeture(); StartCoroutine(GetAllTypeIdList()); } public void IsCanDragCameraTeture() { cameraTexture._CanDrag = AdvanceMountPanelCtr.Instance.m_AdvanceType == AdvanceBase.AdvanceType.Ride || AdvanceMountPanelCtr.Instance.m_AdvanceType == AdvanceBase.AdvanceType.Wing; } public int isShowIndex = -1; public void ShowDefaultFirst() { if (isShowIndex == -1) { OnToggleClick(0); }else { OnToggleClick(isShowIndex); } isShowIndex = -1; } public void ReqAdvancdFashionInfo() { CG_REQ_ADVANCE req = (CG_REQ_ADVANCE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ADVANCE); req.SetType((int)AdvanceMountPanelCtr.Instance.m_AdvanceType); req.SetOptionType((int)AdvanceBase.ReqType.REQ_INFO); req.SetParam1(1); req.SetParam2(0); req.SendPacket(); } private List advanceItemPrefabList = new List(); private List fashionItemPrefabList = new List(); private void CreateItemPrefab() { //当前帧只初始化一个 if (curTypeGradeBaseIdList.Count > 0) { GameObject item = GameObject.Instantiate(itemprefab); item.transform.SetParent(prefabParent); item.transform.localPosition = Vector3.zero; item.transform.localScale = Vector3.one; item.transform.localRotation = Quaternion.Euler(Vector3.zero); advanceItemPrefabList.Add(item); advanceItemPrefabList[0].GetComponent().InitItem(curTypeGradeBaseIdList[0], (int)AdvanceFashionType.Advance, 0); } if (curTypeGradeBaseIdList.Count > 1) { StartCoroutine(CreateItemCoroutine()); } } IEnumerator CreateItemCoroutine() { yield return new WaitForEndOfFrame(); for (int index = 1; index < curTypeGradeBaseIdList.Count; index++) { GameObject item = GameObject.Instantiate(itemprefab); item.transform.SetParent(prefabParent); item.transform.localPosition = Vector3.zero; item.transform.localScale = Vector3.one; item.transform.localRotation = Quaternion.Euler(Vector3.zero); advanceItemPrefabList.Add(item); advanceItemPrefabList[index].GetComponent().InitItem(curTypeGradeBaseIdList[index], (int)AdvanceFashionType.Advance, index); } for (int index = 0; index < curTypeFashionIdList.Count; index++) { GameObject item = GameObject.Instantiate(itemprefab); item.transform.SetParent(prefabParent); item.transform.localPosition = Vector3.zero; item.transform.localScale = Vector3.one; item.transform.localRotation = Quaternion.Euler(Vector3.zero); fashionItemPrefabList.Add(item); fashionItemPrefabList[index].GetComponent().InitItem(curTypeFashionIdList[index], (int)AdvanceFashionType.Fashion, index); } RefreshAdvanceItemState(); ShowDefaultFirst(); yield break; } #region public GameObject itemprefab; public Transform prefabParent; public List menuItemMarkIconList; public List menuItemName; public Text gradeText; public Text modelName; public UICameraTexture cameraTexture; public GameObject namePanel; public GameObject attrPanel; public Text _MoveDesc; public List attrNameList; public List attrValueTetx; public Text combatValue; public Button usingBtn; public Text usingBtnDesc; public GameObject remainTimePanel; public Text remainTimeDesc; public Text gainPath; public GameObject _FashionMenuItem; #endregion public enum AdvanceFashionType { Advance = 0, //正常进阶获得 Fashion = 1, //活动获得 } public void OnToggleClick(int _Index) { namePanel.SetActive(_Index == 0 ? true : false); attrPanel.SetActive(_Index == 1 ? true : false); for(int index = 0; index < menuItemMarkIconList.Count; index++) { menuItemMarkIconList[index].gameObject.SetActive(index == _Index ? true : false); } StartCoroutine(ShowTypeItem(_Index)); } private List curTypeGradeBaseIdList = new List(); private List curTypeFashionIdList = new List(); private Dictionary> baseDic; private Dictionary> fashionDic; IEnumerator ShowTypeItem(int _Index) { switch (_Index) { case (int)AdvanceFashionType.Advance: for (int index = 0; index < advanceItemPrefabList.Count; index++) { advanceItemPrefabList[index].SetActive(true); } for (int index = 0; index < fashionItemPrefabList.Count; index++) { fashionItemPrefabList[index].SetActive(false); } //点击前刷新状态 RefreshAdvanceItemState(); if (advanceItemPrefabList.Count > 0) { advanceItemPrefabList[0].GetComponent().OnItemClick(); } break; default: ReqAdvancdFashionInfo(); for (int index = 0; index < advanceItemPrefabList.Count; index++) { advanceItemPrefabList[index].SetActive(false); } for (int index = 0; index < fashionItemPrefabList.Count; index++) { fashionItemPrefabList[index].SetActive(true); } RefreshAdvanceItemState(); if (fashionItemPrefabList.Count > 0) fashionItemPrefabList[0].GetComponent().OnItemClick(); break; } yield break; } IEnumerator GetAllTypeIdList() { yield return new WaitForEndOfFrame(); if(curTypeGradeBaseIdList.Count != 0) { ShowDefaultFirst(); yield break; }else { var baseDic = TableManager.GetAdvanceBase().Values; foreach (var baseInfo in baseDic) { if ((baseInfo.Id - baseInfo.Level) / 1000 - 1 == (int)AdvanceMountPanelCtr.Instance.m_AdvanceType) { bool hasFind = false; for (int index = 0; index < curTypeGradeBaseIdList.Count; index++) { Tab_AdvanceBase advanBase = TableManager.GetAdvanceBaseByID(curTypeGradeBaseIdList[index], 0); if (advanBase == null) { yield break; } if (advanBase.Grade == baseInfo.Grade) { hasFind = true; break; } } if (!hasFind) { curTypeGradeBaseIdList.Add(baseInfo.Id); } } } var fashionDic = TableManager.GetAdvanceFashion().Values; foreach (var fashionInfo in fashionDic) { if (fashionInfo.Type == (int)AdvanceMountPanelCtr.Instance.m_AdvanceType) { curTypeFashionIdList.Add(fashionInfo.Id); } } IsNeedHideFashionMenuitem(); CreateItemPrefab(); yield break; } } //如果时装为0,需要隐藏按钮 private void IsNeedHideFashionMenuitem() { _FashionMenuItem.SetActive(curTypeFashionIdList.Count > 0); } //刷新进阶状态以及活动时装是否佩戴,收到协议返回再处理 public void RefreshAdvanceItemState() { for (int itemIndex = 0; itemIndex < advanceItemPrefabList.Count; itemIndex++) { Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(advanceItemPrefabList[itemIndex].GetComponent().advanceFashionId, 0); if (advanceBase == null) { return; } switch (AdvanceMountPanelCtr.Instance.m_AdvanceType) { case AdvanceBase.AdvanceType.Ride: advanceItemPrefabList[itemIndex].GetComponent().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.RideGrade ? true : false); advanceItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (advanceItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.m_objMountParam.AutoFlagMountID && GameManager.gameManager.PlayerDataPool.m_objMountParam.AutoFlagMountID != -1) ? true : false); break; case AdvanceBase.AdvanceType.Wing: advanceItemPrefabList[itemIndex].GetComponent().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.WingGrade ? true : false); advanceItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (advanceItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWingId) ? true : false); break; case AdvanceBase.AdvanceType.Piano: advanceItemPrefabList[itemIndex].GetComponent().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.GodWeaponGrade ? true : false); advanceItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (advanceItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceGodweaponId) ? true : false); break; case AdvanceBase.AdvanceType.Qilinbi: advanceItemPrefabList[itemIndex].GetComponent().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.WishGrade ? true : false); advanceItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (advanceItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWishId) ? true : false); break; case AdvanceBase.AdvanceType.Soul: advanceItemPrefabList[itemIndex].GetComponent().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.SealGrade ? true : false); advanceItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (advanceItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceSealId) ? true : false); break; case AdvanceBase.AdvanceType.Mask: advanceItemPrefabList[itemIndex].GetComponent().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.MaskGrade ? true : false); advanceItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (advanceItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceMaskId) ? true : false); break; case AdvanceBase.AdvanceType.Huopao: advanceItemPrefabList[itemIndex].GetComponent().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.CrownGrade ? true : false); advanceItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (advanceItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceCrownId) ? true : false); break; } } for(int itemIndex = 0; itemIndex < fashionItemPrefabList.Count; itemIndex++) { switch (AdvanceMountPanelCtr.Instance.m_AdvanceType) { case AdvanceBase.AdvanceType.Ride: fashionItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( ( fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.m_objMountParam.AutoFlagMountID && GameManager.gameManager.PlayerDataPool.m_objMountParam.AutoFlagMountID != -1) ? true : false); break; case AdvanceBase.AdvanceType.Wing: fashionItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWingId && GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWingId != -1) ? true : false); break; case AdvanceBase.AdvanceType.Piano: fashionItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( ( fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceGodweaponId && GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceGodweaponId != -1) ? true : false); break; case AdvanceBase.AdvanceType.Qilinbi: fashionItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWishId && GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWishId != -1)? true : false); break; case AdvanceBase.AdvanceType.Mask: fashionItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceMaskId && GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceMaskId != -1) ? true : false); break; case AdvanceBase.AdvanceType.Soul: fashionItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceSealId && GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceSealId != -1) ? true : false); break; case AdvanceBase.AdvanceType.Huopao: fashionItemPrefabList[itemIndex].GetComponent().ShowUsingIcon( (fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceCrownId && GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceSealId != -1) ? true : false); break; } if ((GameManager.gameManager.PlayerDataPool.m_AdvanceData.m_AdvanceFashionDic.ContainsKey(fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId) && GameManager.gameManager.PlayerDataPool.m_AdvanceData.m_AdvanceFashionDic[fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId] >= 0)) { fashionItemPrefabList[itemIndex].GetComponent().ShowActiviteIcon(true); fashionItemPrefabList[itemIndex].GetComponent().SetRemainTime(GameManager.gameManager.PlayerDataPool.m_AdvanceData.m_AdvanceFashionDic[fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId]); }else { fashionItemPrefabList[itemIndex].GetComponent().ShowActiviteIcon(false); fashionItemPrefabList[itemIndex].GetComponent().SetRemainTime(-1); } } RefreshDressBtnState(); } public void RefreshDressBtnState() { //刷新幻化Item状态 for (int index = 0; index < fashionItemPrefabList.Count; index++) { if (fashionItemPrefabList[index].GetComponent().advanceFashionId == lastModelId) { fashionItemPrefabList[index].GetComponent().OnItemClick(); } } for (int index = 0; index < advanceItemPrefabList.Count; index++) { if (advanceItemPrefabList[index].GetComponent().advanceFashionId == lastModelId) { advanceItemPrefabList[index].GetComponent().OnItemClick(); } } } //活动相关时装在收到返回协议的时候刷新是否激活的状态 public void ReceiveAdvanceFashionPacket(GC_ADVANCE_FASHION_INFO packet) { //时装状态 for (int itemIndex = 0; itemIndex < fashionItemPrefabList.Count; itemIndex++) { bool hasFind = false; for (int index = 0; index < packet.infoCount; index++) { if (fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId != -1 && fashionItemPrefabList[itemIndex].GetComponent().advanceFashionId == packet.GetInfo(index).Id && packet.GetInfo(index).Time >= 0) { fashionItemPrefabList[itemIndex].GetComponent().SetRemainTime(packet.GetInfo(index).Time); hasFind = true; fashionItemPrefabList[itemIndex].GetComponent().ShowActiviteIcon(true); } } if(!hasFind) { fashionItemPrefabList[itemIndex].GetComponent().ShowActiviteIcon(false); } } //刷新(使用中/幻化)状态 for(int index = 0; index < fashionItemPrefabList.Count; index++) { if(fashionItemPrefabList[index].GetComponent().advanceFashionId == lastModelId) { fashionItemPrefabList[index].GetComponent().OnItemClick(); } } } private int lastModelId = -1; public void OnItemClick(int _Id, int _Type) { if(gameObject.activeInHierarchy) { StartCoroutine(OnAdvanceFashionItemClick(_Id, _Type)); } } public GameObject DoubleRideSign;//双骑相关 public GameObject L_DoubleMountBtn; IEnumerator OnAdvanceFashionItemClick(int id, int type) { yield return new WaitForEndOfFrame(); lastModelId = id; //双骑标记---------------------------------------------------------- Tab_AdvanceFashion m_advanceFashion = TableManager.GetAdvanceFashionByID(id, 0); L_DoubleMountBtn = FunctionButtonLogic.Instance().DoubleMountBtnBg; if (m_advanceFashion != null) { Tab_MountBase mountBases = TableManager.GetMountBaseByID(m_advanceFashion.ModelId, 0); if (DoubleRideSign) DoubleRideSign.gameObject.SetActive(mountBases != null ? mountBases.DoubleRiding == 1 : false); //判断双人坐骑 if (L_DoubleMountBtn) { L_DoubleMountBtn.gameObject.SetActive(mountBases != null ? mountBases.DoubleRiding == 1 : false); //判断双人坐骑 } } else { DoubleRideSign.gameObject.SetActive(false); L_DoubleMountBtn.gameObject.SetActive(false); } //------------------------------------------------------------------ switch (type) { case (int)AdvanceFashionType.Advance: { attrPanel.SetActive(false); Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(id, 0); if (advanceBase == null) { yield break; } gainPath.text = StrDictionary.GetClientDictionaryString("#{44038}", advanceBase.GainPath); cameraTexture.gameObject.SetActive(true); switch (AdvanceMountPanelCtr.Instance.m_AdvanceType) { case AdvanceBase.AdvanceType.Ride: { Tab_MountBase mountBase = TableManager.GetMountBaseByID(advanceBase.ModelId, 0); if (mountBase == null) { yield break; } Tab_CharMount charMount = TableManager.GetCharMountByID(mountBase.ModelID, 0); if (charMount == null) { yield break; } cameraTexture.InitMountModelPath(charMount); modelName.text = mountBase.Name; gradeText.text = GCGame.Utils.GetGradeString(advanceBase.Grade); } break; case AdvanceBase.AdvanceType.Wing: { cameraTexture.InitWingModelPath(advanceBase); gradeText.text = GCGame.Utils.GetGradeString(advanceBase.Grade); modelName.text = advanceBase.Name; } break; default: { cameraTexture.gameObject.SetActive(true); Tab_CharModel charModel = TableManager.GetCharModelByID(advanceBase.ModelId, 0); if(charModel != null) { cameraTexture.InitModelPath(charModel.ResPath, charModel, LoadAssetBundle.BUNDLE_PATH_MODEL, true); } modelName.text = advanceBase.Name; gradeText.text = GCGame.Utils.GetGradeString(advanceBase.Grade); } break; } } break; default: { Tab_AdvanceFashion advanceFashion = TableManager.GetAdvanceFashionByID(id, 0); if (advanceFashion == null) { yield break; ; } gainPath.text = gainPath.text = StrDictionary.GetClientDictionaryString("#{44038}", advanceFashion.GainPath); if(advanceFashion.GetAttrIdbyIndex(0) == -1) { attrPanel.SetActive(false); }else { attrPanel.SetActive(true); for (int index = 0; index < advanceFashion.getAttrIdCount(); index++) { if (advanceFashion.GetAttrIdbyIndex(index) != -1) { attrNameList[index].gameObject.SetActive(true); attrValueTetx[index].gameObject.SetActive(true); int strId = advanceFashion.GetAttrIdbyIndex(index) + 10000; attrNameList[index].text = StrDictionary.GetClientDictionaryString("#{" + strId + "}") + ":"; attrValueTetx[index].text = advanceFashion.GetAttrValuebyIndex(index).ToString(); } else { attrNameList[index].gameObject.SetActive(false); attrValueTetx[index].gameObject.SetActive(false); } } combatValue.text = advanceFashion.CombatValue.ToString(); } _MoveDesc.gameObject.SetActive(AdvanceMountPanelCtr.Instance.m_AdvanceType == AdvanceBase.AdvanceType.Ride); switch (AdvanceMountPanelCtr.Instance.m_AdvanceType) { case AdvanceBase.AdvanceType.Ride: { //刷新模型 cameraTexture.gameObject.SetActive(true); //animationPanel.gameObject.SetActive(false); Tab_MountBase mountBase = TableManager.GetMountBaseByID(advanceFashion.ModelId, 0); if (mountBase == null) { yield break; ; } Tab_CharMount charMount = TableManager.GetCharMountByID(mountBase.ModelID, 0); if (charMount == null) { yield break; ; } _MoveDesc.text = StrDictionary.GetClientDictionaryString("#{3243}", mountBase.Speed - 100); cameraTexture.InitMountModelPath(charMount); modelName.text = mountBase.Name; } break; case AdvanceBase.AdvanceType.Wing: { cameraTexture.gameObject.SetActive(true); //animationPanel.gameObject.SetActive(false); var auraConfig = TableManager.GetAuraConfigByID(advanceFashion.ModelId, 0); if(auraConfig == null) { yield break; } Tab_WeaponModel weapon = TableManager.GetWeaponModelByID(auraConfig.LiuShanWingModelId, 0); if(weapon == null) { LogModule.WarningLog("weapon is null"); yield break; } cameraTexture.InitWingModelPath(null, weapon, delegate() { cameraTexture.gameObject.SetActive(true); }); } break; default: { cameraTexture.gameObject.SetActive(true); Tab_CharModel charModel = TableManager.GetCharModelByID(advanceFashion.ModelId, 0); if(charModel != null) { cameraTexture.InitModelPath(charModel.ResPath, charModel); } } break; } } break; } yield break; } public void SetFashionItemMarkIcon(int type, int _Index) { switch(type) { case (int)AdvanceFashionType.Advance: { for(int index = 0; index < advanceItemPrefabList.Count; index++) { advanceItemPrefabList[index].GetComponent().ShowMarkIcon(index == _Index ? true : false); } } break; default: for (int index = 0; index < fashionItemPrefabList.Count; index++) { fashionItemPrefabList[index].GetComponent().ShowMarkIcon(index == _Index ? true : false); } break; } } private bool IsHavaFashionInBack(int type, int itemId) { GameItemContainer container = GameManager.gameManager.PlayerDataPool.BackPack; List backpackItems = ItemTool.ItemFilter(container, 0); if (container == null) { return false; } foreach (var item in backpackItems) { if(item.GetClass() == (int)ItemClass.ADVANCEFASHION && item.GetSubClass() == type && item.DataID == itemId) { return true; } } return false; } private bool canActivite = false; private bool showGetPath = false; private bool showDress = false; private int activiteItemId = -1; private int pathId = -1; readonly string _LockColor = "{0}"; readonly string _UnLockColor = "{0}"; public void InitUsingBtnState(bool isUsing, bool isOwn, int remainTime, int type, int itmeId, int getPathId)//剩余时间(0代表永久,-1代表删除) { pathId = getPathId; if (remainTime < 0) { remainTimePanel.SetActive(false); if (type == 0) //坐骑 正常进阶获取 { usingBtn.interactable = false; usingBtnDesc.text = string.Format(_LockColor, StrDictionary.GetClientDictionaryString("#{43014}")); canActivite = false; showDress = false; showGetPath = false; } else //时装 1.背包有对应道具显示激活 2.背包没有显示获取途径 { remainTimeDesc.text = StrDictionary.GetClientDictionaryString("#{43016}"); //永久拥有 if (getPathId != -1) usingBtn.interactable = true; else usingBtn.interactable = false; if (IsHavaFashionInBack(type, itmeId)) { //显示为可激活 usingBtnDesc.text = string.Format(_UnLockColor, StrDictionary.GetClientDictionaryString("#{42653}")); ; canActivite = true; showGetPath = false; showDress = false; activiteItemId = itmeId; } else { //显示为获取途径 usingBtnDesc.text = string.Format(_UnLockColor, StrDictionary.GetClientDictionaryString("#{42657}")); ; canActivite = false; showGetPath = true; showDress = false; } } }else if(remainTime == 0) //永久拥有 { remainTimePanel.SetActive(true); if (isUsing) //使用中 { canActivite = false; showDress = false; showGetPath = false; remainTimePanel.SetActive(true); remainTimeDesc.text = StrDictionary.GetClientDictionaryString("#{43016}"); usingBtn.interactable = false; usingBtnDesc.text = string.Format(_LockColor, StrDictionary.GetClientDictionaryString("#{43013}")); } else //可以幻化 { canActivite = false; showDress = true; showGetPath = false; remainTimePanel.SetActive(true); remainTimeDesc.text = StrDictionary.GetClientDictionaryString("#{43016}"); usingBtn.interactable = true; usingBtnDesc.text = string.Format(_UnLockColor, StrDictionary.GetClientDictionaryString("#{43015}")); } } else //已激活 { remainTimePanel.SetActive(true); int remainDay = remainTime / (3600 * 24); int remainHour = (remainTime - remainDay * 3600 * 24) / 3600; int remainSec = (remainTime - remainDay * 3600 * 24 - remainHour * 3600) / 60; remainTimeDesc.text = StrDictionary.GetClientDictionaryString("#{43017}", remainDay, remainHour, remainSec); if (isUsing) //使用中 { canActivite = false; showDress = false; showGetPath = false; usingBtn.interactable = false; usingBtnDesc.text = string.Format(_LockColor, StrDictionary.GetClientDictionaryString("#{43013}")); } else //可以幻化 { canActivite = false; showDress = true; showGetPath = false; usingBtn.interactable = true; usingBtnDesc.text = string.Format(_UnLockColor, StrDictionary.GetClientDictionaryString("#{43015}")); } } } public void OnUsingBtnClick() { if(showDress) { CG_REQ_ADVANCE req = (CG_REQ_ADVANCE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ADVANCE); req.SetOptionType((int)AdvanceBase.ReqType.CHANGE_USEID); req.SetType((int)AdvanceMountPanelCtr.Instance.m_AdvanceType); req.SetParam1(lastModelId); req.SetParam2(-1); req.SendPacket(); } else if(canActivite) { //关闭当前的进阶界面 UIManager.CloseUI(UIInfo.AdvanceMountPanel); //跳转到背包界面 UIManager.ShowUI(UIInfo.BackPackRoot, delegate(bool bSucess, object param) { if(bSucess) { BackPackLogic.Instance()._TagPanel.ShowPage(0); } }); } else if(showGetPath) { ItemTooltipsLogic.ShowItemTooltip(pathId, ItemTooltipsLogic.ShowType.GetPath, usingBtn.transform.position); } } private void OnDisable() { curTypeGradeBaseIdList.Clear(); curTypeFashionIdList.Clear(); for(int index = 0; index < advanceItemPrefabList.Count; index++) { GameObject.Destroy(advanceItemPrefabList[index]); } advanceItemPrefabList.Clear(); for(int index = 0; index < fashionItemPrefabList.Count; index++) { GameObject.Destroy(fashionItemPrefabList[index]); } fashionItemPrefabList.Clear(); } }