private async ETTask RunAsync(Player player, C2L_RefreshStranger message, Action <L2C_RefreshStranger> reply) { L2C_RefreshStranger response = new L2C_RefreshStranger(); try { long uid = player.uid; Tuple <List <RelationshipSimpleInfo>, long> tuple = await RelationshipDataHelper.GetStrangers(uid, message.Skip, message.Limit); List <RelationshipSimpleInfo> relationships = tuple.Item1; long totalCount = tuple.Item2; RepeatedField <RelationshipSimpleInfo> list = new RepeatedField <RelationshipSimpleInfo>(); foreach (var info in relationships) { list.Add(info); } response.TotalCount = totalCount; response.RelationshipList = list; response.Error = ErrorCode.ERR_Success; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
private async ETTask RunAsync(Player player, C2L_RefreshRelationshipApply message, Action <L2C_RefreshRelationshipApply> reply) { L2C_RefreshRelationshipApply response = new L2C_RefreshRelationshipApply(); try { long uid = player.uid; List <RelationshipApplyInfo> relationApplyInfos = null; if (message.IsRequested) { relationApplyInfos = await RelationshipDataHelper.GetRelationshipApplyInfoBySenderUid(uid); } else { relationApplyInfos = await RelationshipDataHelper.GetRelationshipApplyInfoByReceiverUid(uid); } response.TotalCount = relationApplyInfos.Count; response.RelationshipApplyList.AddRange(relationApplyInfos); response.Error = ErrorCode.ERR_Success; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
private async ETVoid RunAsync(Player player, C2L_GetRelationshipApplyList message, Action <L2C_GetRelationshipApplyList> reply) { L2C_GetRelationshipApplyList response = new L2C_GetRelationshipApplyList(); try { long uid = player.uid; if (uid == 0) { //未被Gate授權的帳戶 response.Error = ErrorCode.ERR_ConnectGateKeyError; } else { List <RelationshipApplyInfo> relationApplyInfos = null; if (message.IsRequested) { relationApplyInfos = await RelationshipDataHelper.GetRelationshipApplyInfoBySenderUid(uid); } else { relationApplyInfos = await RelationshipDataHelper.GetRelationshipApplyInfoByReceiverUid(uid); } response.TotalCount = relationApplyInfos.Count; response.RelationshipApplyList.AddRange(relationApplyInfos); } response.Error = ErrorCode.ERR_Success; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
private async ETTask RunAsync(Player player, C2L_AddRelationship message, Action <L2C_AddRelationship> reply) { L2C_AddRelationship response = new L2C_AddRelationship(); try { long uid = player.uid; //Apply var relationshipApply = await RelationshipDataHelper.AddRelationshipApply(uid, message.Uid); if (relationshipApply == null) { response.Error = ErrorCode.ERR_RelationshipApplyInfo_AddFailed; reply(response); return; } response.Error = ErrorCode.ERR_Success; reply(response); // 確認玩家是在線,在線的話傳送好友資訊 var relationshipApplyInfo = RelationshipApply.ConvertToRelationshipApplyInfo(relationshipApply); var uidUser = await UserDataHelper.FindOneUser(uid); var receiverUidUser = await UserDataHelper.FindOneUser(message.Uid); var proxy = Game.Scene.GetComponent <CacheProxyComponent>(); var playerSync = proxy.GetMemorySyncSolver <Player>(); Player target = playerSync.Get <Player>(message.Uid); if (target != null) { var notifyRelationshipState_SenderNotRequested = new L2C_NotifyRelationshipApplyState() { AddApplyInfo = relationshipApplyInfo, IsRequested = false, }; GateMessageHelper.BroadcastTarget(notifyRelationshipState_SenderNotRequested, message.Uid); } //傳給自己更新Apply列表 var notifyRelationshipState_SenderIsRequested = new L2C_NotifyRelationshipApplyState() { AddApplyInfo = relationshipApplyInfo, IsRequested = true, }; GateMessageHelper.BroadcastTarget(notifyRelationshipState_SenderIsRequested, uid); // 推播告知receiverUser var firebase = Game.Scene.GetComponent <FirebaseComponent>(); var lang = Game.Scene.GetComponent <LanguageComponent>(); // 7 = {0}向你發出好友邀請! var body = lang.GetString(receiverUidUser.language, 7); await firebase.SendOneNotification(receiverUidUser.firebaseDeviceToken, string.Empty, string.Format(body, uidUser.name)); } catch (Exception e) { ReplyError(response, e, reply); } }
private async ETTask RunAsync(Player player, C2L_QueryRelationshipByUids message, Action <L2C_QueryRelationshipByUids> reply) { L2C_QueryRelationshipByUids response = new L2C_QueryRelationshipByUids(); try { long uid = player.uid; var result = await RelationshipDataHelper.QueryByUids(uid, message.Uids.ToArray()); response.RelationshipList = result; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
private async ETTask RunAsync(Player player, C2L_QueryRelationshipByName message, Action <L2C_QueryRelationshipByName> reply) { L2C_QueryRelationshipByName response = new L2C_QueryRelationshipByName(); try { long uid = player.uid; var result = await RelationshipDataHelper.QueryLikeName(uid, message.Name); response.RelationshipList = result; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
private async ETTask RunAsync(Player player, C2L_GetRelationshipList message, Action <L2C_GetRelationshipList> reply) { L2C_GetRelationshipList response = new L2C_GetRelationshipList(); try { long uid = player.uid; if (uid == 0) { //未被Gate授權的帳戶 response.Error = ErrorCode.ERR_ConnectGateKeyError; } else { List <RelationshipSimpleInfo> relations = await RelationshipDataHelper.GetUserRelationshipSimpleInfoList(uid); Tuple <List <RelationshipSimpleInfo>, long> tuple = await RelationshipDataHelper.GetStrangers(uid); List <RelationshipSimpleInfo> stranger = tuple.Item1; long totalCount = tuple.Item2; RepeatedField <RelationshipSimpleInfo> list = new RepeatedField <RelationshipSimpleInfo>(); var linq = Enumerable.Union(relations, stranger); foreach (var info in linq) { list.Add(info); } response.TotalCount = totalCount; response.RelationshipList = list; } response.Error = ErrorCode.ERR_Success; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
private async ETTask RunAsync(Player player, C2L_RemoveRelationship message, Action <L2C_RemoveRelationship> reply) { L2C_RemoveRelationship response = new L2C_RemoveRelationship(); try { long uid = player.uid; await RelationshipDataHelper.RemoveRelationship(uid, message.Uid); response.Error = ErrorCode.ERR_Success; reply(response); L2C_NotifyRelationshipState notifyRelationshipState = new L2C_NotifyRelationshipState(); RelationshipSimpleInfo info = new RelationshipSimpleInfo(); { info.Uid = uid; } notifyRelationshipState.Info = info; GateMessageHelper.BroadcastTarget(notifyRelationshipState, message.Uid); } catch (Exception e) { ReplyError(response, e, reply); } }
private async ETTask RunAsync(Player player, C2L_RefuseRelationshipApply message, Action <L2C_RefuseRelationshipApply> reply) { L2C_RefuseRelationshipApply response = new L2C_RefuseRelationshipApply(); try { long uid = player.uid; //尋找指定RelationshipApplyInfo var targetApplyInfo = await RelationshipDataHelper.GetRelationshipApplyInfoByApplyId(message.ApplyId); //判斷是否存在RelationshipApplyInfo if (targetApplyInfo == null) { response.Error = ErrorCode.ERR_RelationshipApplyInfo_NotFind; reply(response); return; } //判斷是否為申請目標 if (targetApplyInfo.ReceiverUid != uid) { response.Error = ErrorCode.ERR_RelationshipApplyInfo_NotReceiver; reply(response); return; } // 刪除關係申請 await RelationshipDataHelper.RemoveRelationship(targetApplyInfo.ApplyId); // 傳送senderUser更新申請列表 var notifyRelationshipApplyStateIsRequested = new L2C_NotifyRelationshipApplyState() { DeleteApplyId = message.ApplyId, IsRequested = true, }; GateMessageHelper.BroadcastTarget(notifyRelationshipApplyStateIsRequested, targetApplyInfo.SenderUid); // 傳送receiverUser更新申請列表 var notifyRelationshipApplyStateNotRequested = new L2C_NotifyRelationshipApplyState() { DeleteApplyId = message.ApplyId, IsRequested = false, }; GateMessageHelper.BroadcastTarget(notifyRelationshipApplyStateNotRequested, targetApplyInfo.ReceiverUid); var uidUser = await UserDataHelper.FindOneUser(uid); var senderUser = await UserDataHelper.FindOneUser(targetApplyInfo.SenderUid); // 推播告知senderUser var firebase = Game.Scene.GetComponent <FirebaseComponent>(); var lang = Game.Scene.GetComponent <LanguageComponent>(); // 8 = {0}拒絕你的好友邀請! var body = lang.GetString(senderUser.language, 8); await firebase.SendOneNotification(senderUser.firebaseDeviceToken, string.Empty, string.Format(body, uidUser.name)); response.Error = ErrorCode.ERR_Success; reply(response); } catch (Exception e) { ReplyError(response, e, reply); } }
private async ETTask RunAsync(Player player, C2L_AcceptRelationshipApply message, Action <L2C_AcceptRelationshipApply> reply) { L2C_AcceptRelationshipApply response = new L2C_AcceptRelationshipApply(); try { long uid = player.uid; //尋找指定RelationshipApplyInfo var targetApplyInfo = await RelationshipDataHelper.GetRelationshipApplyInfoByApplyId(message.ApplyId); //判斷是否存在RelationshipApplyInfo if (targetApplyInfo == null) { response.Error = ErrorCode.ERR_RelationshipApplyInfo_NotFind; reply(response); return; } //判斷是否為申請目標 if (targetApplyInfo.ReceiverUid != uid) { response.Error = ErrorCode.ERR_RelationshipApplyInfo_NotReceiver; reply(response); return; } //建立關係 var relationship = await RelationshipDataHelper.AddRelationship(targetApplyInfo.SenderUid, targetApplyInfo.ReceiverUid); if (relationship == null) { response.Error = ErrorCode.ERR_AddRelationshipRepeatedly; reply(response); return; } var receiverUser = await UserDataHelper.FindOneUser(targetApplyInfo.ReceiverUid); // 刪除關係申請 await RelationshipDataHelper.RemoveRelationship(targetApplyInfo.ApplyId); // 確認senderUser在線, 傳送更新訊息 var proxy = Game.Scene.GetComponent <CacheProxyComponent>(); var playerSync = proxy.GetMemorySyncSolver <Player>(); var senderUser = await UserDataHelper.FindOneUser(targetApplyInfo.SenderUid); var senderPlayer = playerSync.Get <Player>(targetApplyInfo.SenderUid); if (senderPlayer != null) { // 更新好友列表 var notifyRelationshipState_Sender = new L2C_NotifyRelationshipState() { Info = new RelationshipSimpleInfo { DisconnectTime = 0, Location = receiverUser.location, Mileage = receiverUser.playerRideTotalInfo.Mileage, Name = receiverUser.name, RelationshipType = relationship.relationshipType, Uid = uid } }; GateMessageHelper.BroadcastTarget(notifyRelationshipState_Sender, targetApplyInfo.SenderUid); // 更新申請列表 var notifyRelationshipApplyStateIsRequested = new L2C_NotifyRelationshipApplyState() { DeleteApplyId = message.ApplyId, IsRequested = true, }; GateMessageHelper.BroadcastTarget(notifyRelationshipApplyStateIsRequested, targetApplyInfo.SenderUid); } // 推播告知senderUser var firebase = Game.Scene.GetComponent <FirebaseComponent>(); var lang = Game.Scene.GetComponent <LanguageComponent>(); // 1 = {0}接受你的好友邀請! var body = lang.GetString(senderUser.language, 1); await firebase.SendOneNotification(senderUser.firebaseDeviceToken, string.Empty, string.Format(body, receiverUser.name)); response.Error = ErrorCode.ERR_Success; reply(response); // 傳送receiverUser更新申請列表 var notifyRelationshipApplyStateNotRequested = new L2C_NotifyRelationshipApplyState() { DeleteApplyId = message.ApplyId, IsRequested = false, }; GateMessageHelper.BroadcastTarget(notifyRelationshipApplyStateNotRequested, targetApplyInfo.ReceiverUid); } catch (Exception e) { ReplyError(response, e, reply); } }