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.
108 lines
3.1 KiB
108 lines
3.1 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using Google.Protobuf.WellKnownTypes;
|
|
|
|
namespace SogClient
|
|
{
|
|
public class TestHandlerMgr
|
|
{
|
|
private Player m_player;
|
|
|
|
private Dictionary<int, ITestHandler> m_packetHandlerTable = new Dictionary<int, ITestHandler>();
|
|
|
|
private List<ITestHandler> m_packetHandlerList = new List<ITestHandler>();
|
|
|
|
|
|
public TestHandlerMgr(Player player)
|
|
{
|
|
m_player = player;
|
|
}
|
|
|
|
public void RegisterPacketHandler(int iMsgID, ITestHandler handler)
|
|
{
|
|
if (m_packetHandlerTable.ContainsKey(iMsgID))
|
|
{
|
|
TraceLog.Error("msgtype {0} already be registed!", iMsgID);
|
|
return;
|
|
}
|
|
|
|
TraceLog.Trace("register MsgID {0} by handler {1}", iMsgID, handler.GetType().FullName);
|
|
|
|
m_packetHandlerTable.Add(iMsgID, handler);
|
|
|
|
}
|
|
|
|
public void RegisterAllPacketHandler()
|
|
{
|
|
AddAllHandler();
|
|
RegisterAllMsg();
|
|
}
|
|
|
|
private void AddAllHandler()
|
|
{
|
|
m_packetHandlerTable.Clear();
|
|
//AddHandler(new TestSys(m_player, false));
|
|
//AddHandler(new TestArena(m_player));
|
|
|
|
AddHandler(new TestGM(m_player));
|
|
// AddHandler(new TestChapter(m_player));
|
|
//AddHandler(new TestOpenBox(m_player));
|
|
//AddHandler(new TestFriend(m_player));
|
|
//AddHandler(new TestLogClient(m_player));
|
|
//AddHandler(new TestHangupbonusView(m_player));
|
|
//AddHandler(new TestMainlandEnter(m_player));
|
|
//AddHandler(new TestMainlandFinish(m_player));
|
|
//AddHandler(new TestHeroUpdate(m_player));
|
|
//AddHandler(new TestFriendSelfChgNotify(m_player));
|
|
//AddHandler(new TestFriendListChgNotify(m_player));
|
|
//AddHandler(new TestCampaignMove(m_player));
|
|
//AddHandler(new TestTrade(m_player));
|
|
//AddHandler(new TestPetPvp(m_player));
|
|
}
|
|
|
|
private void AddHandler(ITestHandler handler)
|
|
{
|
|
if(handler != null && !m_packetHandlerList.Contains(handler))
|
|
{
|
|
m_packetHandlerList.Add(handler);
|
|
}
|
|
}
|
|
|
|
private void RegisterAllMsg()
|
|
{
|
|
foreach(var handler in m_packetHandlerList)
|
|
{
|
|
handler.RegisterMsg(this);
|
|
}
|
|
}
|
|
|
|
public void HandlerMsg(int iMsgID, RequestPacket packet)
|
|
{
|
|
ITestHandler handler;
|
|
m_packetHandlerTable.TryGetValue(iMsgID, out handler);
|
|
if (handler == null)
|
|
{
|
|
TraceLog.Trace("HandlerMsg packet id {0} not handler,please register a ITestHandler first!"
|
|
, packet.MsgID);
|
|
return;
|
|
}
|
|
|
|
handler.HandlerMsg(packet);
|
|
}
|
|
|
|
public void UpdateAllHandler()
|
|
{
|
|
long nowSecond = TimeUtils.GetTimeSecond();
|
|
|
|
foreach(ITestHandler handler in m_packetHandlerList)
|
|
{
|
|
handler.Update(nowSecond);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|