using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; namespace GameServer.PacketHandler; [PacketHandler(typeof(ClientToGameReq), typeof(ClientToGameReq.Types.GetClaimInfoReq), typeof(GetClaimInfoPacketHandler), typeof(GameLoginListener))] public class GetClaimInfoPacketHandler : PacketRecvHandler { public override async Task onProcessPacket(ISession session, IMessage recvMessage) { var owner = session as Player; NullReferenceCheckHelper.throwIfNull(owner, () => "player is null !!!"); var claim_action = owner.getEntityAction(); NullReferenceCheckHelper.throwIfNull(claim_action, () => $"claim action is null !!! - {owner.toBasicString()}"); //var result = await claim_action.loadClaim(); // if (result.isFail()) // { // send_GS2C_ACK_GET_CLAIM_ERROR(owner, result); // } send_GS2C_ACK_GET_CLAIM_SUCCESS(owner); return await Task.FromResult(new Result()); } private static bool send_GS2C_ACK_GET_CLAIM_SUCCESS(Player owner) { var normal_claim_infos = ClaimRewardHelper.MakeClaimSendInfo(owner, MetaAssets.ClaimType.Normal); var membership_claim_infos = ClaimRewardHelper.MakeClaimSendInfo(owner, MetaAssets.ClaimType.Membership); foreach (var normal_info in normal_claim_infos) { var claim_id = normal_info.Key; var ack_packet = new ClientToGame(); ack_packet.Response = new ClientToGameRes(); ack_packet.Response.GetClaimInfoRes = new(); ack_packet.Response.GetClaimInfoRes.ClaimId = claim_id; ack_packet.Response.GetClaimInfoRes.NormalInfo = normal_info.Value; ack_packet.Response.GetClaimInfoRes.MembershipInfo = new(); if (true == membership_claim_infos.TryGetValue(claim_id, out var membership_info)) { ack_packet.Response.GetClaimInfoRes.MembershipInfo = membership_info; } GameServerApp.getServerLogic().onSendPacket(owner, ack_packet); } if (normal_claim_infos.Count == 0) { var ack_packet = new ClientToGame(); ack_packet.Response = new ClientToGameRes(); ack_packet.Response.GetClaimInfoRes = new(); ack_packet.Response.GetClaimInfoRes.ClaimId = 0; ack_packet.Response.GetClaimInfoRes.NormalInfo = new(); ack_packet.Response.GetClaimInfoRes.MembershipInfo = new(); GameServerApp.getServerLogic().onSendPacket(owner, ack_packet); } return true; } private static bool send_GS2C_ACK_GET_CLAIM_ERROR(Player owner, Result result) { var ack_packet = new ClientToGame(); ack_packet.Response = new ClientToGameRes(); ack_packet.Response.ErrorCode = result.ErrorCode; ack_packet.Response.GetClaimInfoRes = new(); if (false == GameServerApp.getServerLogic().onSendPacket(owner, ack_packet)) return false; return true; } }