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 onProcessPacket(ISession session, IMessage recvMessage) { var player = session as Player; NullReferenceCheckHelper.throwIfNull(player, () => $"Player is null !!!"); var attribute = player.getEntityAttribute(); 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; } }