Files
ft/Client/Assets/Scripts/UI/PartnerStatue/EventPartnerPlayerInfoPool.cs
2026-06-29 21:18:33 +08:00

88 lines
2.9 KiB
C#

using System.Collections.Generic;
using game;
using asap.core;
namespace EventPartner
{
public class PlayerInfoPool
{
private readonly Dictionary<string, PlayerInfo> _playerInfoDic = new Dictionary<string, PlayerInfo>();
private readonly FriendService _friendService = GContext.container.Resolve<FriendService>();
private IEventPartnerArchitecture _arc;
public Dictionary<string, PlayerInfo> PlayerInfoDic => _playerInfoDic;
public void Init(IEventPartnerArchitecture arc)
{
_playerInfoDic.Clear();
// UnityEngine.Debug.Log($"[EventPartnerStatue] zsq: Init!");
FillInFriends();
_arc = arc;
}
public void Add(IEnumerable<PlayerInfo> list)
{
foreach (var info in list)
_playerInfoDic[info.PlayFabId] = info;
}
public void Add(PlayerInfo info)
{
_playerInfoDic[info.PlayFabId] = info;
}
public PlayerInfo Get(string playfabId)
{
if (_playerInfoDic.ContainsKey(playfabId))
return _playerInfoDic[playfabId];
return PlayerInfo.Default;
}
public void FillInFriends()
{
foreach (var friend in _friendService.FriendList)
{
// UnityEngine.Debug.Log($"[EventPartnerStatue] zsq: {friend.playFabId}");
// UnityEngine.Debug.Log($"[EventPartnerStatue] zsq: {friend.displayName}");
// UnityEngine.Debug.Log($"[EventPartnerStatue] zsq: {friend.avatarUrl}");
// UnityEngine.Debug.Log($"[EventPartnerStatue] zsq: {friend.value / GameCore.LeadboardData.LV_MODELING}");
_playerInfoDic[friend.playFabId] = new PlayerInfo
{
PlayFabId = friend.playFabId,
DisplayName = friend.displayName,
AvatarUrl = friend.avatarUrl,
Level = friend.value / GameCore.LeadboardData.LV_MODELING
};
}
}
public void FillInDetail(EventPartnerGatherRequests.EventPartnerGatherDetail detail)
{
foreach (var info in detail.Partners)
{
AddInfo(info);
}
foreach (var info in detail.InvitePartners)
{
AddInfo(info);
}
foreach (var info in detail.RequestPartners)
{
AddInfo(info);
}
foreach (var info in detail.RecommendInfoList)
{
AddInfo(info);
}
}
private void AddInfo(PlayerInfo info)
{
if (!RobotDataManager.IsRobot(info.PlayFabId))
_playerInfoDic[info.PlayFabId] = info;
else
_playerInfoDic[info.PlayFabId] = _arc.Ctx.GetBotInfo(info.PlayFabId);
}
}
}