public async UniTask <bool> SendMail(Mail mail) { #if UNITY_STANDALONE && !CLIENT_BUILD SendMailResp resp = await DbServiceClient.SendMailAsync(new SendMailReq() { Mail = DatabaseServiceUtils.ToByteString(mail), }); if (resp.Error == 0) { return(true); } #endif return(false); }
public async UniTaskVoid HandleRequestAcceptGuildInvitation(RequestHandlerData requestHandler, RequestAcceptGuildInvitationMessage request, RequestProceedResultDelegate <ResponseAcceptGuildInvitationMessage> result) { #if UNITY_STANDALONE && !CLIENT_BUILD await UniTask.Yield(); BasePlayerCharacterEntity playerCharacter; if (!GameInstance.ServerUserHandlers.TryGetPlayerCharacter(requestHandler.ConnectionId, out playerCharacter)) { result.Invoke(AckResponseCode.Error, new ResponseAcceptGuildInvitationMessage() { message = UITextKeys.UI_ERROR_NOT_LOGGED_IN, }); return; } ValidateGuildRequestResult validateResult = GameInstance.ServerGuildHandlers.CanAcceptGuildInvitation(request.guildId, playerCharacter); if (!validateResult.IsSuccess) { result.Invoke(AckResponseCode.Error, new ResponseAcceptGuildInvitationMessage() { message = validateResult.GameMessage, }); return; } playerCharacter.GuildId = request.guildId; validateResult.Guild.AddMember(playerCharacter); GameInstance.ServerGuildHandlers.SetGuild(request.guildId, validateResult.Guild); GameInstance.ServerGuildHandlers.RemoveGuildInvitation(request.guildId, playerCharacter.Id); // Save to database _ = DbServiceClient.UpdateCharacterGuildAsync(new UpdateCharacterGuildReq() { SocialCharacterData = DatabaseServiceUtils.ToByteString(SocialCharacterData.Create(playerCharacter)), GuildId = request.guildId, GuildRole = validateResult.Guild.GetMemberRole(playerCharacter.Id) }); // Broadcast via chat server if (ChatNetworkManager.IsClientConnected) { ChatNetworkManager.SendAddSocialMember(null, MMOMessageTypes.UpdateGuildMember, request.guildId, playerCharacter.Id, playerCharacter.CharacterName, playerCharacter.DataId, playerCharacter.Level); } GameInstance.ServerGameMessageHandlers.SendSetGuildData(requestHandler.ConnectionId, validateResult.Guild); GameInstance.ServerGameMessageHandlers.SendAddGuildMembersToOne(requestHandler.ConnectionId, validateResult.Guild); GameInstance.ServerGameMessageHandlers.SendAddGuildMembersToMembers(validateResult.Guild, playerCharacter.Id, playerCharacter.CharacterName, playerCharacter.DataId, playerCharacter.Level); result.Invoke(AckResponseCode.Success, new ResponseAcceptGuildInvitationMessage() { message = UITextKeys.UI_GUILD_INVITATION_ACCEPTED, }); #endif }
public async UniTask <bool> IncreaseStorageItems(StorageId storageId, CharacterItem addingItem) { #if UNITY_STANDALONE && !CLIENT_BUILD Storage storge = GetStorage(storageId, out _); IncreaseStorageItemsReq req = new IncreaseStorageItemsReq(); req.StorageType = (EStorageType)storageId.storageType; req.StorageOwnerId = storageId.storageOwnerId; req.WeightLimit = storge.weightLimit; req.SlotLimit = storge.slotLimit; req.Item = DatabaseServiceUtils.ToByteString(addingItem); IncreaseStorageItemsResp resp = await DbServiceClient.IncreaseStorageItemsAsync(req); if (UITextKeys.NONE != (UITextKeys)resp.Error) { // Error ocurring, storage may overwhelming let's it drop items to ground return(false); } SetStorageItems(storageId, DatabaseServiceUtils.MakeListFromRepeatedByteString <CharacterItem>(resp.StorageCharacterItems)); NotifyStorageItemsUpdated(storageId.storageType, storageId.storageOwnerId); return(true); #else return(false); #endif }
public async UniTaskVoid HandleRequestSendMail(RequestHandlerData requestHandler, RequestSendMailMessage request, RequestProceedResultDelegate <ResponseSendMailMessage> result) { #if UNITY_STANDALONE && !CLIENT_BUILD IPlayerCharacterData playerCharacter; if (GameInstance.ServerUserHandlers.TryGetPlayerCharacter(requestHandler.ConnectionId, out playerCharacter)) { // Validate gold if (request.gold < 0) { request.gold = 0; } if (playerCharacter.Gold >= request.gold) { playerCharacter.Gold -= request.gold; } else { result.Invoke(AckResponseCode.Error, new ResponseSendMailMessage() { message = UITextKeys.UI_ERROR_NOT_ENOUGH_GOLD, }); return; } // Find receiver GetUserIdByCharacterNameResp userIdResp = await DbServiceClient.GetUserIdByCharacterNameAsync(new GetUserIdByCharacterNameReq() { CharacterName = request.receiverName, }); string receiverId = userIdResp.UserId; if (string.IsNullOrEmpty(receiverId)) { result.Invoke(AckResponseCode.Error, new ResponseSendMailMessage() { message = UITextKeys.UI_ERROR_MAIL_SEND_NO_RECEIVER, }); return; } Mail mail = new Mail() { SenderId = playerCharacter.UserId, SenderName = playerCharacter.CharacterName, ReceiverId = receiverId, Title = request.title, Content = request.content, Gold = request.gold, }; SendMailResp resp = await DbServiceClient.SendMailAsync(new SendMailReq() { Mail = DatabaseServiceUtils.ToByteString(mail), }); UITextKeys message = (UITextKeys)resp.Error; result.Invoke( message == UITextKeys.NONE ? AckResponseCode.Success : AckResponseCode.Error, new ResponseSendMailMessage() { message = message, }); } else { result.Invoke(AckResponseCode.Error, new ResponseSendMailMessage() { message = UITextKeys.UI_ERROR_SERVICE_NOT_AVAILABLE, }); } #endif }