You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
254 lines
9.6 KiB
254 lines
9.6 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
using Sog;
|
|
using ProtoCSStruct;
|
|
|
|
namespace Game
|
|
{
|
|
public class FriendOpHandler : BasePacketHandler
|
|
{
|
|
public override int GetServiceType()
|
|
{
|
|
return GameServiceType.FriendOpHandler;
|
|
}
|
|
|
|
//销毁的时候置空
|
|
public override void Dispose()
|
|
{
|
|
}
|
|
|
|
public FriendOpHandler()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
public override void HandlerClientPacket(PlayerSession playerSession, StructPacket packet)
|
|
{
|
|
PlayerOnGame player = playerSession.Player;
|
|
if (player == null)
|
|
{
|
|
player.Error("FriendHandler.HandlerClientPacket can not find PlayerOnGame sessionid {0}"
|
|
, playerSession.SessionID);
|
|
return;
|
|
}
|
|
|
|
switch (packet.MsgID)
|
|
{
|
|
case (int)CSGameMsgID.QueryFriendOpReq:
|
|
OnCliQueryFriendOpReq(player, packet);
|
|
break;
|
|
case (int)CSGameMsgID.FriendOpReq:
|
|
OnCliFriendOpReq(player, packet);
|
|
break;
|
|
case (int)CSGameMsgID.FriendQueryInfoByUidReq:
|
|
OnCliFriendQueryInfoByUidReq(player, packet);
|
|
break;
|
|
case (int)CSGameMsgID.FriendGetRecommenderReq:
|
|
OnCliFriendGetRecommenderReq(player, packet);
|
|
break;
|
|
case (int)CSGameMsgID.FriendQueryStrangerReq:
|
|
OnCliFriendQueryStrangerReq(player, packet);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
public override void HandlerServerPacket(uint serverID, StructPacket packet)
|
|
{
|
|
switch (packet.MsgID)
|
|
{
|
|
case (int)CSGameMsgID.QueryFriendOpRes:
|
|
OnSvrQueryFriendOpRes(serverID, packet);
|
|
break;
|
|
case (int)CSGameMsgID.FriendOpRes:
|
|
OnSvrFriendOpRes(serverID, packet);
|
|
break;
|
|
case (int)CSGameMsgID.FriendStrangerListChgNotify:
|
|
OnSvrFriendStrangerListChgNotify(serverID, packet);
|
|
break;
|
|
case (int)CSGameMsgID.FriendStrangerListDeleteNotify:
|
|
OnSvrFriendStrangerListDeleteNotify(serverID, packet);
|
|
break;
|
|
case (int)CSGameMsgID.FriendOpListChgNotify:
|
|
OnSvrFriendOpListChgNotify(serverID, packet);
|
|
break;
|
|
//case (int)CSGameMsgID.FriendOpListDeleteNotify:
|
|
// OnSvrFriendOpListDeleteNotify(serverID, packet);
|
|
// break;
|
|
case (int)CSGameMsgID.FriendQueryInfoByUidRes:
|
|
OnSvrFriendQueryInfoByUidRes(serverID, packet);
|
|
break;
|
|
case (int)CSGameMsgID.FriendGetRecommenderRes:
|
|
OnSvrFriendGetRecommenderRes(serverID, packet);
|
|
break;
|
|
case (int)CSGameMsgID.FriendQueryStrangerRes:
|
|
OnSvrFriendQueryStrangerRes(serverID, packet);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void OnCliQueryFriendOpReq(PlayerOnGame player, StructPacket packet)
|
|
{
|
|
GameServerUtils.GetPacketSender().SendToWorldServer<CSQueryFriendOpReq>(packet, player.UserID);
|
|
}
|
|
|
|
private void OnSvrQueryFriendOpRes(uint serverID, StructPacket packet)
|
|
{
|
|
PlayerOnGame player = GameServerUtils.GetPlayerTableOp().GetPlayerByUid(packet.ObjectID);
|
|
if (player == null)
|
|
{
|
|
player.Error("FriendOpHandler.OnSvrQueryFriendOpRes no player object uid {0}", packet.ObjectID);
|
|
return;
|
|
}
|
|
|
|
player.SendToClient<CSQueryFriendOpRes>(packet);
|
|
}
|
|
|
|
private void OnCliFriendOpReq(PlayerOnGame player, StructPacket packet)
|
|
{
|
|
ref CSFriendOpReq req = ref packet.GetMessage<CSFriendOpReq>();
|
|
|
|
player.Trace("FriendOpHandler.OnCliFriendOpReq uid {0} friendOp type {1} seq {2} targetUid {3}"
|
|
, player.UserID, req.OpType, req.OpSeq, req.TargetUid);
|
|
|
|
if(FriendOpSvc.CheckValidCliFriendOpReq(player, ref req) != 0)
|
|
{
|
|
player.Error("FriendOpHandler.OnCliFriendOpReq uid {0} friendOp type {1} CheckValidFriendOpReq check failed"
|
|
, player.UserID, req.OpType);
|
|
return;
|
|
}
|
|
|
|
GameServerUtils.GetPacketSender().SendToWorldServer<CSFriendOpReq>(packet, player.UserID);
|
|
}
|
|
|
|
private void OnSvrFriendOpRes(uint serverID, StructPacket packet)
|
|
{
|
|
PlayerOnGame player = GameServerUtils.GetPlayerTableOp().GetPlayerByUid(packet.ObjectID);
|
|
if (player == null)
|
|
{
|
|
player.Error("FriendOpHandler.OnSvrFriendOpRes no player object uid {0}", packet.ObjectID);
|
|
return;
|
|
}
|
|
|
|
player.SendToClient<CSFriendOpRes>(packet);
|
|
}
|
|
|
|
private void OnSvrFriendStrangerListChgNotify(uint serverID, StructPacket packet)
|
|
{
|
|
PlayerOnGame player = GameServerUtils.GetPlayerTableOp().GetPlayerByUid(packet.ObjectID);
|
|
if (player == null)
|
|
{
|
|
player.Error("FriendOpHandler.OnSvrFriendStrangerListChgNotify no player object uid {0}", packet.ObjectID);
|
|
return;
|
|
}
|
|
|
|
player.SendToClient<CSFriendStrangerListChgNotify>(packet);
|
|
}
|
|
|
|
private void OnSvrFriendStrangerListDeleteNotify(uint serverID, StructPacket packet)
|
|
{
|
|
PlayerOnGame player = GameServerUtils.GetPlayerTableOp().GetPlayerByUid(packet.ObjectID);
|
|
if (player == null)
|
|
{
|
|
player.Error("FriendOpHandler.OnSvrFriendStrangerListDeleteNotify no player object uid {0}", packet.ObjectID);
|
|
return;
|
|
}
|
|
|
|
player.SendToClient<CSFriendStrangerListDeleteNotify>(packet);
|
|
}
|
|
|
|
private void OnSvrFriendOpListChgNotify(uint serverID, StructPacket packet)
|
|
{
|
|
PlayerOnGame player = GameServerUtils.GetPlayerTableOp().GetPlayerByUid(packet.ObjectID);
|
|
if (player == null)
|
|
{
|
|
player.Error("FriendOpHandler.OnSvrFriendOpListChgNotify no player object uid {0}", packet.ObjectID);
|
|
return;
|
|
}
|
|
|
|
player.SendToClient<CSFriendOpListChgNotify>(packet);
|
|
}
|
|
|
|
//private void OnSvrFriendOpListDeleteNotify(uint serverID, StructPacket packet)
|
|
//{
|
|
// PlayerOnGame player = GameServerUtils.GetPlayerTableOp().GetPlayerByUid(packet.ObjectID);
|
|
// if (player == null)
|
|
// {
|
|
// player.Error("FriendOpHandler.OnSvrFriendOpListDeleteNotify no player object uid {0}", packet.ObjectID);
|
|
// return;
|
|
// }
|
|
|
|
// player.SendToClient<CSFriendOpListDeleteNotify>(packet);
|
|
//}
|
|
|
|
private void OnCliFriendQueryInfoByUidReq(PlayerOnGame player, StructPacket packet)
|
|
{
|
|
GameServerUtils.GetPacketSender().SendToWorldServer<CSFriendQueryInfoByUidReq>(packet, player.UserID);
|
|
}
|
|
|
|
private void OnSvrFriendQueryInfoByUidRes(uint serverID, StructPacket packet)
|
|
{
|
|
PlayerOnGame player = GameServerUtils.GetPlayerTableOp().GetPlayerByUid(packet.ObjectID);
|
|
if (player == null)
|
|
{
|
|
player.Error("FriendOpHandler.OnSvrFriendQueryInfoByUidRes no player object uid {0}", packet.ObjectID);
|
|
return;
|
|
}
|
|
|
|
player.SendToClient<CSFriendQueryInfoByUidRes>(packet);
|
|
}
|
|
|
|
private void OnCliFriendGetRecommenderReq(PlayerOnGame player, StructPacket packet)
|
|
{
|
|
GameServerUtils.GetPacketSender().SendToWorldServer<CSFriendGetRecommenderReq>(packet, player.UserID);
|
|
}
|
|
|
|
private void OnSvrFriendGetRecommenderRes(uint serverID, StructPacket packet)
|
|
{
|
|
PlayerOnGame player = GameServerUtils.GetPlayerTableOp().GetPlayerByUid(packet.ObjectID);
|
|
if (player == null)
|
|
{
|
|
player.Error("FriendOpHandler.OnSvrFriendGetRecommenderRes no player object uid {0}", packet.ObjectID);
|
|
return;
|
|
}
|
|
|
|
//过滤下GM账号
|
|
ref var res = ref packet.GetMessage<CSFriendGetRecommenderRes>();
|
|
for (int i = res.List.Count - 1; i >= 0; i--)
|
|
{
|
|
if (GmCmdSvc.IsGMFilter(res.List[i].Uid))
|
|
{
|
|
res.List.RemoveAt(i);
|
|
}
|
|
}
|
|
|
|
var csres = new CSFriendGetRecommenderRes();
|
|
csres.CopyFrom(ref res);
|
|
SendToPlayer(player, (int) CSGameMsgID.FriendGetRecommenderRes, ref csres);
|
|
}
|
|
|
|
private void OnCliFriendQueryStrangerReq(PlayerOnGame player, StructPacket packet)
|
|
{
|
|
GameServerUtils.GetPacketSender().SendToWorldServer<CSFriendQueryStrangerReq>(packet, player.UserID);
|
|
}
|
|
|
|
private void OnSvrFriendQueryStrangerRes(uint serverID, StructPacket packet)
|
|
{
|
|
PlayerOnGame player = GameServerUtils.GetPlayerTableOp().GetPlayerByUid(packet.ObjectID);
|
|
if (player == null)
|
|
{
|
|
player.Error("FriendOpHandler.OnSvrFriendQueryStrangerRes no player object uid {0}", packet.ObjectID);
|
|
return;
|
|
}
|
|
|
|
player.SendToClient<CSFriendQueryStrangerRes>(packet);
|
|
}
|
|
}
|
|
}
|
|
|