JJBB/Assets/Project/Script/GUI/Advance/AdvanceFashionPanelCtr.cs

857 lines
41 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
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();
}
}