public async UniTaskVoid HandleRequestCreateParty(RequestHandlerData requestHandler, RequestCreatePartyMessage request, RequestProceedResultDelegate <ResponseCreatePartyMessage> result) { #if UNITY_STANDALONE && !CLIENT_BUILD await UniTask.Yield(); IPlayerCharacterData playerCharacter; if (!GameInstance.ServerUserHandlers.TryGetPlayerCharacter(requestHandler.ConnectionId, out playerCharacter)) { result.Invoke(AckResponseCode.Error, new ResponseCreatePartyMessage() { message = UITextKeys.UI_ERROR_NOT_LOGGED_IN, }); return; } ValidatePartyRequestResult validateResult = playerCharacter.CanCreateParty(); if (!validateResult.IsSuccess) { result.Invoke(AckResponseCode.Error, new ResponseCreatePartyMessage() { message = validateResult.GameMessage, }); return; } PartyResp createPartyResp = await DbServiceClient.CreatePartyAsync(new CreatePartyReq() { LeaderCharacterId = playerCharacter.Id, ShareExp = request.shareExp, ShareItem = request.shareItem }); PartyData party = DatabaseServiceUtils.FromByteString <PartyData>(createPartyResp.PartyData); GameInstance.ServerPartyHandlers.SetParty(party.id, party); playerCharacter.PartyId = party.id; // Broadcast via chat server if (ChatNetworkManager.IsClientConnected) { ChatNetworkManager.SendCreateParty(null, MMOMessageTypes.UpdateParty, party.id, party.shareExp, party.shareItem, playerCharacter.Id); ChatNetworkManager.SendAddSocialMember(null, MMOMessageTypes.UpdatePartyMember, party.id, playerCharacter.Id, playerCharacter.CharacterName, playerCharacter.DataId, playerCharacter.Level); } GameInstance.ServerGameMessageHandlers.SendSetPartyData(requestHandler.ConnectionId, party); GameInstance.ServerGameMessageHandlers.SendAddPartyMembersToOne(requestHandler.ConnectionId, party); result.Invoke(AckResponseCode.Success, new ResponseCreatePartyMessage()); #endif }
public async UniTaskVoid HandleRequestCreateParty(RequestHandlerData requestHandler, RequestCreatePartyMessage request, RequestProceedResultDelegate <ResponseCreatePartyMessage> result) { #if UNITY_STANDALONE && !CLIENT_BUILD await UniTask.Yield(); IPlayerCharacterData playerCharacter; if (!GameInstance.ServerUserHandlers.TryGetPlayerCharacter(requestHandler.ConnectionId, out playerCharacter)) { result.InvokeError(new ResponseCreatePartyMessage() { message = UITextKeys.UI_ERROR_NOT_LOGGED_IN, }); return; } ValidatePartyRequestResult validateResult = playerCharacter.CanCreateParty(); if (!validateResult.IsSuccess) { result.InvokeError(new ResponseCreatePartyMessage() { message = validateResult.GameMessage, }); return; } AsyncResponseData <PartyResp> createPartyResp = await DbServiceClient.CreatePartyAsync(new CreatePartyReq() { LeaderCharacterId = playerCharacter.Id, ShareExp = request.shareExp, ShareItem = request.shareItem }); if (!createPartyResp.IsSuccess) { result.InvokeError(new ResponseCreatePartyMessage() { message = UITextKeys.UI_ERROR_INTERNAL_SERVER_ERROR, }); return; } // Update cache PartyData party = createPartyResp.Response.PartyData; GameInstance.ServerPartyHandlers.SetParty(party.id, party); playerCharacter.PartyId = party.id; // Broadcast via chat server if (ClusterClient.IsNetworkActive) { ClusterClient.SendCreateParty(MMOMessageTypes.UpdateParty, party.id, party.shareExp, party.shareItem, playerCharacter.Id); ClusterClient.SendAddSocialMember(MMOMessageTypes.UpdatePartyMember, party.id, playerCharacter.Id, playerCharacter.CharacterName, playerCharacter.DataId, playerCharacter.Level); } GameInstance.ServerGameMessageHandlers.SendSetPartyData(requestHandler.ConnectionId, party); GameInstance.ServerGameMessageHandlers.SendAddPartyMembersToOne(requestHandler.ConnectionId, party); result.InvokeSuccess(new ResponseCreatePartyMessage()); #endif }