Files
caliverse_server/GameServer/Contents/SwitchingProp/PacketHandler/GetSwitchingPropStatePacketHandler.cs
2025-05-01 07:20:41 +09:00

63 lines
2.1 KiB
C#

using Google.Protobuf;
using Google.Protobuf.WellKnownTypes;
using ServerCore;
using ServerBase;
using ServerCommon;
using ServerCommon.BusinessLogDomain;
using MetaAssets;
namespace GameServer.PacketHandler;
[PacketHandler(typeof(ClientToGameReq), typeof(ClientToGameReq.Types.C2GS_REQ_SWITCHING_PROP_STATE), typeof(GetSwitchingPropStatePacketHandler), typeof(GameLoginListener))]
public class GetSwitchingPropStatePacketHandler : PacketRecvHandler
{
public async override Task<Result> onProcessPacket(ISession session, IMessage recvMessage)
{
var player = session as Player;
NullReferenceCheckHelper.throwIfNull(player, () => $"Player is null !!!");
var attribute = player.getEntityAttribute<SwitchingPropAttribute>();
NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!! - player:{player.toBasicString()}");
var result = send_GS2C_ACK_SWITCHING_PROP_STATE(player, attribute);
await Task.CompletedTask;
return result;
}
public static Result send_GS2C_ACK_SWITCHING_PROP_STATE(Player owner, SwitchingPropAttribute attribute)
{
var ack_packet = new ClientToGame();
ack_packet.Response = new ClientToGameRes();
ack_packet.Response.ErrorCode = new();
ack_packet.Response.AckSwitchingPropState = new ClientToGameRes.Types.GS2C_ACK_SWITCHING_PROP_STATE();
foreach (var prop in attribute.m_switching_props)
{
SwitchingPropState state = new();
state.PropState = prop.Value;
state.SwitchingPropId = prop.Key;
ack_packet.Response.AckSwitchingPropState.SwitchingPropState.Add(state);
}
var result = new Result();
if (false == GameServerApp.getServerLogic().onSendPacket(owner, ack_packet))
{
string err_msg = $"send_GS2C_ACK_SWITCHING_PROP_STATE Fail !!! : owner:{owner.toBasicString()}";
result.setFail(ServerErrorCode.ProudNetException, err_msg);
ServerCore.Log.getLogger().error(result.toBasicString());
return result;
}
return result;
}
}