Snowflake/RPG.Services.Gameserver/Modules/AvatarModule.cs

43 lines
1.2 KiB
C#

using RPG.GameCore.Excel;
using RPG.Network.Proto;
using RPG.Services.Gameserver.Modules.Attributes;
using RPG.Services.Gameserver.Session;
namespace RPG.Services.Gameserver.Modules;
internal class AvatarModule : BaseModule
{
private readonly ExcelTables _excelTables;
public AvatarModule(ModuleManager moduleManager, ExcelTables excelTables) : base(moduleManager)
{
_excelTables = excelTables;
}
[OnCommand(CmdType.CmdGetAvatarDataCsReq)]
public Task OnCmdGetAvatarDataCsReq(PlayerSession session, ReadOnlyMemory<byte> body)
{
GetAvatarDataCsReq req = GetAvatarDataCsReq.Parser.ParseFrom(body.Span);
GetAvatarDataScRsp rsp = new()
{
IsAll = req.IsGetAll
};
foreach (ExcelRow row in _excelTables.GetAllRows(ExcelType.Avatar))
{
if (row is AvatarRow avatarRow)
{
if (avatarRow.AvatarID >= 9000) continue;
rsp.AvatarList.Add(new Avatar
{
AvatarId = avatarRow.AvatarID,
Level = 1
});
}
}
Send(session, CmdType.CmdGetAvatarDataScRsp, rsp);
return Task.CompletedTask;
}
}