151 lines
4.5 KiB
C#
151 lines
4.5 KiB
C#
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<int, List<OrnamentInfo>> OrnamentInfo = null;
|
|
public void OnPacket(GC_SYN_ORNAMENT packet)
|
|
{
|
|
m_Packet = packet;
|
|
OrnamentInfo = new Dictionary<int, List<OrnamentInfo>>();
|
|
|
|
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<OrnamentInfo> newList = new List<OrnamentInfo>();
|
|
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<ObjManager>.Instance.MainPlayer;
|
|
if (mainPlayer != null)
|
|
{
|
|
mainPlayer.OrnamentFootPrintID = m_OrnamentFootprintID;
|
|
Singleton<ObjManager>.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<OrnamentInfo> GetStateInfoByType(int type)
|
|
{
|
|
List<OrnamentInfo> stateInfoList = new List<OrnamentInfo>();
|
|
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<OrnamentInfo> 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;
|
|
}
|
|
}
|