using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; using static ClientToGameReq.Types; using static ClientToGameRes.Types; namespace GameServer.PacketHandler; [PacketHandler(typeof(ClientToGameReq), typeof(ClientToGameReq.Types.GetCurrencyInfoReq), typeof(GetCurrencyInfoPacketHandler), typeof(GameLoginListener))] public class GetCurrencyInfoPacketHandler : PacketRecvHandler { private static void send_S2C_ACK_GET_CURRENCY_INFO(Player owner, Result result) { var ack_packet = new ClientToGame { Response = new ClientToGameRes { ErrorCode = result.ErrorCode, GetCurrencyInfoRes = new ClientToGameRes.Types.GetCurrencyInfoRes() } }; if (result.isSuccess()) { var account_attribute = owner.getOriginEntityAttribute(); NullReferenceCheckHelper.throwIfNull(account_attribute, () => $"AccountAttribute is null !!! - player:{owner.toBasicString()}"); var level_attribute = owner.getOriginEntityAttribute(); NullReferenceCheckHelper.throwIfNull(level_attribute, () => $"LevelAttribute is null !!! - player:{owner.toBasicString()}"); var money_attribute = owner.getOriginEntityAttribute(); NullReferenceCheckHelper.throwIfNull(money_attribute, () => $"MoneyAttribute is null !!! - player:{owner.toBasicString()}"); var nickname_attribute = owner.getOriginEntityAttribute(); NullReferenceCheckHelper.throwIfNull(nickname_attribute, () => $"NicknameAttribute is null !!! - player:{owner.toBasicString()}"); var char_info = new CharInfo { Level = (int)level_attribute.Level, Exp = (int)level_attribute.Exp, Gold = money_attribute.Gold, Sapphire = money_attribute.Sapphire, Calium = money_attribute.Calium, Ruby = money_attribute.Ruby, Usergroup = account_attribute.AuthAdminLevelType.ToString(), Operator = (int)account_attribute.AuthAdminLevelType, DisplayName = nickname_attribute.Nickname, LanguageInfo = (int)account_attribute.LanguageType, IsIntroComplete = 1 }; ack_packet.Response.GetCurrencyInfoRes.CurrencyInfo = char_info; } GameServerApp.getServerLogic().onSendPacket(owner!, ack_packet); } public override async Task onProcessPacket(ISession entityWithSession, IMessage recvMessage) { var result = new Result(); string err_msg; var entity_player = entityWithSession as Player; NullReferenceCheckHelper.throwIfNull(entity_player, () => $"entity_player is null"); // 1. 기본 정보 체크 var request = (recvMessage as ClientToGame)?.Request.GetCurrencyInfoReq; if (null == request) { err_msg = $"Failed to get Request !!! : {nameof(ClientToGame.Request.GetCurrencyInfoReq)}"; result.setFail(ServerErrorCode.InvalidArgument, err_msg); Log.getLogger().error(result.toBasicString()); send_S2C_ACK_GET_CURRENCY_INFO(entity_player, result); return result; } send_S2C_ACK_GET_CURRENCY_INFO(entity_player, result); return await Task.FromResult(result); } }