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

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;
}
}