using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; using static ClientToGameRes.Types; namespace GameServer.PacketHandler; [PacketHandler(typeof(ClientToGameReq), typeof(ClientToGameReq.Types.C2GS_REQ_SEARCH_NICKNAME), typeof(SearchNicknamePacketHandler), typeof(GameLoginListener))] internal class SearchNicknamePacketHandler : PacketRecvHandler { public static bool send_S2C_ACK_SEARCH_NICKNAME(Player owner, Result result, int searchResultCount, int totalPageNum, int currentPageNum, List? nicknames) { var ack_packet = new ClientToGame(); ack_packet.Response = new ClientToGameRes(); ack_packet.Response.ErrorCode = result.ErrorCode; ack_packet.Response.AckSearchNickname = new GS2C_ACK_SEARCH_NICKNAME(); if (result.isSuccess()) { ack_packet.Response.AckSearchNickname.SearchResultCount = searchResultCount; ack_packet.Response.AckSearchNickname.TotalPage = totalPageNum; ack_packet.Response.AckSearchNickname.CurrentPage = currentPageNum == 0 ? 1 : currentPageNum; ack_packet.Response.AckSearchNickname.Nicknames.AddRange(nicknames); } if (false == GameServerApp.getServerLogic().onSendPacket(owner, ack_packet)) { return false; } return true; } public override async Task onProcessPacket(ISession entityWithSession, Google.Protobuf.IMessage recvMessage) { var result = new Result(); var err_msg = string.Empty; var entity_player = entityWithSession as Player; ArgumentNullException.ThrowIfNull(entity_player); var req_msg = recvMessage as ClientToGame; ArgumentNullException.ThrowIfNull(req_msg); var request = req_msg.Request.ReqSearchNickname; var search_nickname_action = entity_player.getEntityAction(); ArgumentNullException.ThrowIfNull(search_nickname_action); (result, var nicknames) = await search_nickname_action.trySearchNickname(request.SearchString, request.PageNum); if (result.isFail()) { err_msg = $"Failed to trySearchNickname() !!! : {result.toBasicString()} - {entity_player.toBasicString()}"; Log.getLogger().error(err_msg); send_S2C_ACK_SEARCH_NICKNAME(entity_player, result, 0, 0, 0, null); return result; } var total_page_num = search_nickname_action.getSearchResultTotalPageCount(); var search_result_count = search_nickname_action.getSearchResultCount(); send_S2C_ACK_SEARCH_NICKNAME(entity_player, result, search_result_count, total_page_num, request.PageNum, nicknames); return result; } }