mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 12:16:03 +08:00
feat: player collection display
This commit is contained in:
18
Common/Data/Excel/AchievementDataExcel.cs
Normal file
18
Common/Data/Excel/AchievementDataExcel.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
namespace EggLink.DanhengServer.Data.Excel;
|
||||
|
||||
[ResourceEntity("AchievementData.json")]
|
||||
public class AchievementDataExcel : ExcelResource
|
||||
{
|
||||
public int QuestID { get; set; }
|
||||
public int AchievementID { get; set; }
|
||||
|
||||
public override int GetId()
|
||||
{
|
||||
return AchievementID;
|
||||
}
|
||||
|
||||
public override void Loaded()
|
||||
{
|
||||
GameData.AchievementDataData.TryAdd(AchievementID, this);
|
||||
}
|
||||
}
|
||||
@@ -128,6 +128,7 @@ public static class GameData
|
||||
|
||||
#region Player
|
||||
|
||||
public static Dictionary<int, AchievementDataExcel> AchievementDataData { get; private set; } = [];
|
||||
public static Dictionary<int, QuestDataExcel> QuestDataData { get; private set; } = [];
|
||||
public static Dictionary<int, FinishWayExcel> FinishWayData { get; private set; } = [];
|
||||
public static Dictionary<int, PlayerLevelConfigExcel> PlayerLevelConfigData { get; private set; } = [];
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using EggLink.DanhengServer.Data;
|
||||
using EggLink.DanhengServer.Database.Avatar;
|
||||
using EggLink.DanhengServer.Database.Inventory;
|
||||
using EggLink.DanhengServer.Database.Quests;
|
||||
using EggLink.DanhengServer.Proto;
|
||||
using EggLink.DanhengServer.Util;
|
||||
using SqlSugar;
|
||||
@@ -168,9 +169,10 @@ public class PlayerData : BaseDatabaseDataHelper
|
||||
};
|
||||
|
||||
var avatarInfo = DatabaseHelper.Instance!.GetInstance<AvatarData>(Uid);
|
||||
var inventoryInfo = DatabaseHelper.Instance!.GetInstance<InventoryData>(Uid);
|
||||
var inventoryInfo = DatabaseHelper.Instance.GetInstance<InventoryData>(Uid);
|
||||
var questInfo = DatabaseHelper.Instance.GetInstance<QuestData>(Uid);
|
||||
|
||||
if (avatarInfo == null || inventoryInfo == null)
|
||||
if (avatarInfo == null || inventoryInfo == null || questInfo == null)
|
||||
{
|
||||
// Handle server profile
|
||||
var serverProfile = ConfigManager.Config.ServerOption.ServerProfile;
|
||||
@@ -187,6 +189,18 @@ public class PlayerData : BaseDatabaseDataHelper
|
||||
return info;
|
||||
}
|
||||
|
||||
info.RecordInfo = new PlayerRecordInfo
|
||||
{
|
||||
CollectAvatarCount = (uint)avatarInfo.FormalAvatars.Count,
|
||||
CollectEquipmentCount = (uint)inventoryInfo.EquipmentItems.Select(x => x.ItemId).ToHashSet().Count,
|
||||
CollectRelicCount = (uint)inventoryInfo.RelicItems.Count,
|
||||
CollectAchievementCount = (uint)GameData.AchievementDataData.Values.Select(x => x.QuestID).ToHashSet()
|
||||
.Count(x => questInfo.Quests.GetValueOrDefault(x)?.QuestStatus is QuestStatus.QuestFinish
|
||||
or QuestStatus.QuestClose), // count finished achievements
|
||||
CollectionInfo = new PlayerCollectionInfo(),
|
||||
CollectDiscCount = (uint)GameData.BackGroundMusicData.Count
|
||||
};
|
||||
|
||||
var pos = 0;
|
||||
foreach (var avatar in avatarInfo.AssistAvatars.Select(assist =>
|
||||
avatarInfo.FormalAvatars.Find(x => x.BaseAvatarId == assist)))
|
||||
@@ -248,7 +262,8 @@ public class PrivacySettingsPb
|
||||
DisplayActiveState = DisplayActiveState,
|
||||
DisplayRecentlyState = DisplayRecentlyState,
|
||||
DisplayBattleRecord = DisplayBattleRecord,
|
||||
DisplayCollection = DisplayCollection
|
||||
DisplayCollection = DisplayCollection,
|
||||
ExtraSettingsInfo = new PlayerExtraSettingsInfo()
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ public class HandlerGetPlayerDetailInfoCsReq : Handler
|
||||
{
|
||||
var req = GetPlayerDetailInfoCsReq.Parser.ParseFrom(data);
|
||||
|
||||
var playerData = connection.Player!.FriendManager!.GetFriendPlayerData([(int)req.Uid]).First();
|
||||
var playerData = connection.Player!.FriendManager!.GetFriendPlayerData([(int)req.Uid]).FirstOrDefault();
|
||||
if (playerData == null)
|
||||
{
|
||||
await connection.SendPacket(new PacketGetPlayerDetailInfoScRsp());
|
||||
|
||||
Reference in New Issue
Block a user