mirror of
https://github.com/MikuLeaks/KianaBH3.git
synced 2025-12-12 13:04:33 +01:00
63 lines
1.9 KiB
C#
63 lines
1.9 KiB
C#
using KianaBH.Data;
|
|
using KianaBH.Data.Excel;
|
|
using KianaBH.Database;
|
|
using KianaBH.Database.Avatar;
|
|
using KianaBH.Enums.Item;
|
|
using KianaBH.GameServer.Game.Player;
|
|
using KianaBH.GameServer.Server.Packet.Send.Avatar;
|
|
using KianaBH.Util.Extensions;
|
|
|
|
|
|
namespace KianaBH.GameServer.Game.Avatar;
|
|
|
|
public class AvatarManager(PlayerInstance player) : BasePlayerManager(player)
|
|
{
|
|
public AvatarData AvatarData { get; } = DatabaseHelper.GetInstanceOrCreateNew<AvatarData>(player.Uid);
|
|
public async ValueTask<AvatarDataExcel?> AddAvatar(int avatarId, bool sync = true)
|
|
{
|
|
GameData.AvatarData.TryGetValue(avatarId, out var avatarExcel);
|
|
if (avatarExcel == null) return null;
|
|
|
|
var avatar = new AvatarInfo
|
|
{
|
|
Level = 1,
|
|
Timestamp = Extensions.GetUnixSec(),
|
|
Star = avatarExcel.UnlockStar,
|
|
DressId = avatarExcel.DefaultDressId,
|
|
DressList = {avatarExcel.DefaultDressId},
|
|
AvatarId = avatarExcel.AvatarID,
|
|
};
|
|
|
|
foreach (var skill in avatarExcel.SkillList)
|
|
{
|
|
avatar.SkillList.Add(new AvatarSkill
|
|
{
|
|
SkillId = skill
|
|
});
|
|
};
|
|
|
|
var weapon = GameData.WeaponData.TryGetValue(avatarExcel.InitialWeapon, out var weaponConfig);
|
|
if (weaponConfig != null)
|
|
{
|
|
var item = await Player.InventoryManager!.AddItem(avatarExcel.InitialWeapon, 1, ItemMainTypeEnum.Weapon, weaponConfig.MaxLv, avatarId);
|
|
if (item != null)
|
|
{
|
|
avatar.WeaponUniqueId = item!.UniqueId;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
AvatarData.Avatars.Add(avatar);
|
|
|
|
if (sync) await Player.SendPacket(new PacketGetAvatarDataRsp(new List<AvatarInfo> { avatar }, false));
|
|
|
|
return avatarExcel;
|
|
}
|
|
|
|
public AvatarInfo? GetAvatar(uint avatarId)
|
|
{
|
|
|
|
return AvatarData.Avatars.Find(avatar => avatar.AvatarId == avatarId);
|
|
}
|
|
} |