using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerOrnamentInfo{ private static PlayerOrnamentInfo m_Instance; public static PlayerOrnamentInfo Instance { get { if (m_Instance == null) m_Instance = new PlayerOrnamentInfo(); return m_Instance; } } public PlayerOrnamentInfo GetInstance() { return Instance; } private GC_SYN_ORNAMENT m_Packet; public GC_SYN_ORNAMENT Packet { get { return m_Packet; } private set { m_Packet = value; } } private Dictionary> OrnamentInfo = null; public void OnPacket(GC_SYN_ORNAMENT packet) { m_Packet = packet; OrnamentInfo = new Dictionary>(); for (int index = 0; index < packet.infoList.Count; index++) { if(OrnamentInfo.ContainsKey(packet.infoList[index].Type)) { OrnamentInfo[packet.infoList[index].Type].Add(packet.infoList[index]); } else { List newList = new List(); newList.Add(packet.infoList[index]); OrnamentInfo.Add(packet.infoList[index].Type, newList); } } m_OrnamentChatBGID = GetCurOrnamentEquipedId((int)OrnamentPanel.OrnamentType.Pop); RefreshPlayerFootPrint(); RefreshPlayerFrameLogic(); RefreshOrnamentPanel(); } private void RefreshPlayerFootPrint() { if (GameManager.gameManager.PlayerDataPool.PlayerOrnamentStateInfo .GetCurOrnamentEquipedId((int)OrnamentPanel.OrnamentType.footprint) == m_OrnamentFootprintID) return; m_OrnamentFootprintID = GameManager.gameManager.PlayerDataPool.PlayerOrnamentStateInfo .GetCurOrnamentEquipedId((int)OrnamentPanel.OrnamentType.footprint); var mainPlayer = Singleton.Instance.MainPlayer; if (mainPlayer != null) { mainPlayer.OrnamentFootPrintID = m_OrnamentFootprintID; Singleton.Instance.MainPlayer.ReloadOrnamentFootPrint(false); } } private int m_OrnamentHeadBGID = -1; public int OrnamentHeadBGID { get { return m_OrnamentHeadBGID; } set { m_OrnamentHeadBGID = value; } } private int m_OrnamentChatBGID = -1; public int OrnamentChatBGID { get { return m_OrnamentChatBGID; } set { m_OrnamentChatBGID = value; } } //当前外观脚印ID private int m_OrnamentFootprintID = -1; public int OrnamentFootprintID { get { return m_OrnamentFootprintID; } set { m_OrnamentFootprintID = value; } } private void RefreshPlayerFrameLogic() { if (GameManager.gameManager.PlayerDataPool.PlayerOrnamentStateInfo .GetCurOrnamentEquipedId((int)OrnamentPanel.OrnamentType.Head) == m_OrnamentHeadBGID) return; m_OrnamentHeadBGID = GameManager.gameManager.PlayerDataPool.PlayerOrnamentStateInfo .GetCurOrnamentEquipedId((int)OrnamentPanel.OrnamentType.Head); if (PlayerFrameLogic.Instance()) PlayerFrameLogic.Instance().RefreshHeadBG(m_OrnamentHeadBGID); } //收到协议的时候进行刷新 private void RefreshOrnamentPanel() { if (OrnamentPanel.Instance && OrnamentPanel.Instance.isActiveAndEnabled) OrnamentPanel.Instance.RefreshCurSelectTypeItemState(); } public List GetStateInfoByType(int type) { List stateInfoList = new List(); if (OrnamentInfo != null && OrnamentInfo.TryGetValue(type, out stateInfoList)) return stateInfoList; else { //协议还未下发,需要主动申请 CG_REQ_ORNAMENT_INFO req = (CG_REQ_ORNAMENT_INFO)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ORNAMENT_INFO); req.Flag = 1; req.SendPacket(); return null; } } public int GetCurOrnamentEquipedId(int type) { List list = GetStateInfoByType(type); if (list == null || list.Count <= 0) return -1; for(int index = 0; index < list.Count; index++) { if (list[index].IsEquiped == 1) return list[index].Id; } return -1; } }