using Google.Protobuf; using ServerCore; using ServerBase; using ServerCommon; using static ClientToGameRes.Types; namespace GameServer.PacketHandler; [PacketHandler(typeof(ClientToGameReq), typeof(ClientToGameReq.Types.C2GS_REQ_SELECT_ADVERTISEMENT), typeof(AdvertisementPacketHandler), typeof(GameLoginListener))] public class AdvertisementPacketHandler : PacketRecvHandler { public static bool send_GS2C_ACK_SELECT_ADVERTISEMENT(Player player, Result result, int index) { var err_msg = string.Empty; var ack_packet = new ClientToGame(); ack_packet.Response = new ClientToGameRes(); ack_packet.Response.ErrorCode = result.ErrorCode; ack_packet.Response.AckSelectAdvertisement = new GS2C_ACK_SELECT_ADVERTISEMENT(); ack_packet.Response.AckSelectAdvertisement.Index = index; if (false == GameServerApp.getServerLogic().onSendPacket(player, ack_packet)) { return false; } return true; } public override async Task onProcessPacket(ISession entityWithSession, IMessage recvMessage) { var result = new Result(); var err_msg = string.Empty; var request = (recvMessage as ClientToGame)?.Request.ReqSelectAdvertisement; NullReferenceCheckHelper.throwIfNull(request, () => $"request is null !!!"); var player = entityWithSession as Player; NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!"); var advertisement_action = player.getEntityAction(); NullReferenceCheckHelper.throwIfNull(advertisement_action, () => $"ai_chat_action is null !!! - {player.toBasicString()}"); (result, int index) = await advertisement_action.selectAdvertisement(request.InteriorId); send_GS2C_ACK_SELECT_ADVERTISEMENT(player, result, index); return result; } }