Files
JJBB/Assets/Project/Script/GUI/Advance/AdvanceFashionPanelCtr.cs
2024-08-23 15:49:34 +08:00

857 lines
41 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 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<GameObject> advanceItemPrefabList = new List<GameObject>();
private List<GameObject> fashionItemPrefabList = new List<GameObject>();
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<AdvanceFashionItem>().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<AdvanceFashionItem>().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<AdvanceFashionItem>().InitItem(curTypeFashionIdList[index], (int)AdvanceFashionType.Fashion, index);
}
RefreshAdvanceItemState();
ShowDefaultFirst();
yield break;
}
#region
public GameObject itemprefab;
public Transform prefabParent;
public List<Image> menuItemMarkIconList;
public List<Text> menuItemName;
public Text gradeText;
public Text modelName;
public UICameraTexture cameraTexture;
public GameObject namePanel;
public GameObject attrPanel;
public Text _MoveDesc;
public List<Text> attrNameList;
public List<Text> 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<int> curTypeGradeBaseIdList = new List<int>();
private List<int> curTypeFashionIdList = new List<int>();
private Dictionary<int, List<Tab_AdvanceBase>> baseDic;
private Dictionary<int, List<Tab_AdvanceFashion>> 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<AdvanceFashionItem>().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<AdvanceFashionItem>().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<AdvanceFashionItem>().advanceFashionId, 0);
if (advanceBase == null)
{
return;
}
switch (AdvanceMountPanelCtr.Instance.m_AdvanceType)
{
case AdvanceBase.AdvanceType.Ride:
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.RideGrade ? true : false);
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.m_objMountParam.AutoFlagMountID
&& GameManager.gameManager.PlayerDataPool.m_objMountParam.AutoFlagMountID != -1) ? true : false);
break;
case AdvanceBase.AdvanceType.Wing:
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.WingGrade ? true : false);
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWingId) ? true : false);
break;
case AdvanceBase.AdvanceType.Piano:
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.GodWeaponGrade ? true : false);
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceGodweaponId) ? true : false);
break;
case AdvanceBase.AdvanceType.Qilinbi:
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.WishGrade ? true : false);
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWishId) ? true : false);
break;
case AdvanceBase.AdvanceType.Soul:
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.SealGrade ? true : false);
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceSealId) ? true : false);
break;
case AdvanceBase.AdvanceType.Mask:
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.MaskGrade ? true : false);
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceMaskId) ? true : false);
break;
case AdvanceBase.AdvanceType.Huopao:
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowActiviteIcon(advanceBase.Grade <= GameManager.gameManager.PlayerDataPool.m_AdvanceData.CrownGrade ? true : false);
advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(advanceItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().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<AdvanceFashionItem>().ShowUsingIcon(
( fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.m_objMountParam.AutoFlagMountID
&& GameManager.gameManager.PlayerDataPool.m_objMountParam.AutoFlagMountID != -1) ? true : false);
break;
case AdvanceBase.AdvanceType.Wing:
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWingId
&& GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWingId != -1) ? true : false);
break;
case AdvanceBase.AdvanceType.Piano:
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
( fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceGodweaponId
&& GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceGodweaponId != -1) ? true : false);
break;
case AdvanceBase.AdvanceType.Qilinbi:
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWishId
&& GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceWishId != -1)? true : false);
break;
case AdvanceBase.AdvanceType.Mask:
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceMaskId
&& GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceMaskId != -1) ? true : false);
break;
case AdvanceBase.AdvanceType.Soul:
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceSealId
&& GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.AdvanceSealId != -1) ? true : false);
break;
case AdvanceBase.AdvanceType.Huopao:
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowUsingIcon(
(fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().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<AdvanceFashionItem>().advanceFashionId)
&& GameManager.gameManager.PlayerDataPool.m_AdvanceData.m_AdvanceFashionDic[fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId] >= 0))
{
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowActiviteIcon(true);
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().SetRemainTime(GameManager.gameManager.PlayerDataPool.m_AdvanceData.m_AdvanceFashionDic[fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId]);
}else
{
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowActiviteIcon(false);
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().SetRemainTime(-1);
}
}
RefreshDressBtnState();
}
public void RefreshDressBtnState()
{
//刷新幻化Item状态
for (int index = 0; index < fashionItemPrefabList.Count; index++)
{
if (fashionItemPrefabList[index].GetComponent<AdvanceFashionItem>().advanceFashionId == lastModelId)
{
fashionItemPrefabList[index].GetComponent<AdvanceFashionItem>().OnItemClick();
}
}
for (int index = 0; index < advanceItemPrefabList.Count; index++)
{
if (advanceItemPrefabList[index].GetComponent<AdvanceFashionItem>().advanceFashionId == lastModelId)
{
advanceItemPrefabList[index].GetComponent<AdvanceFashionItem>().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<AdvanceFashionItem>().advanceFashionId != -1
&& fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().advanceFashionId == packet.GetInfo(index).Id
&& packet.GetInfo(index).Time >= 0)
{
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().SetRemainTime(packet.GetInfo(index).Time);
hasFind = true;
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowActiviteIcon(true);
}
}
if(!hasFind)
{
fashionItemPrefabList[itemIndex].GetComponent<AdvanceFashionItem>().ShowActiviteIcon(false);
}
}
//刷新(使用中/幻化)状态
for(int index = 0; index < fashionItemPrefabList.Count; index++)
{
if(fashionItemPrefabList[index].GetComponent<AdvanceFashionItem>().advanceFashionId == lastModelId)
{
fashionItemPrefabList[index].GetComponent<AdvanceFashionItem>().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<AdvanceFashionItem>().ShowMarkIcon(index == _Index ? true : false);
}
}
break;
default:
for (int index = 0; index < fashionItemPrefabList.Count; index++)
{
fashionItemPrefabList[index].GetComponent<AdvanceFashionItem>().ShowMarkIcon(index == _Index ? true : false);
}
break;
}
}
private bool IsHavaFashionInBack(int type, int itemId)
{
GameItemContainer container = GameManager.gameManager.PlayerDataPool.BackPack;
List<GameItem> 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 = "<color=#515053>{0}</color>";
readonly string _UnLockColor = "<color=#745146>{0}</color>";
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();
}
}