【发布时间】:2023-01-24 02:36:32
【问题描述】:
`使用 PhotonPackageParser; 使用系统; 使用 System.Collections.Generic; 使用 System.Linq;
命名空间 Albion.Network { 内部密封类 AlbionParser : PhotonParser, IPhotonReceiver { 私有只读 HandlersCollection 处理程序;
公共 AlbionParser() { handlers = new HandlersCollection(); }
public void AddHandler(PacketHandler 处理程序) { 处理程序。添加(处理程序); }
protected override void OnEvent(byte Code, Dictionary<byte, object> 参数) { 如果(代码 == 3) { Parameters.Add(1, EventCodes.Move); }
short eventCode = ParseEventCode(参数); 如果(事件代码 == 27) { Console.Write("事件代码: " + eventCode + " ["); Parameters.ToList().ForEach(x => Console.Write(x.Key + " {" + x.Value + "::" + ObjectDumper.Dump(x.Value, 2) + "},")); Console.WriteLine("]"); }
var eventPacket = new EventPacket(eventCode, Parameters);
handlers.HandleAsync(eventPacket); }
protected override void OnRequest(byte OperationCode, Dictionary<byte, object> 参数) { short operationCode = ParseOperationCode(Parameters); var requestPacket = new RequestPacket(operationCode, Parameters);
handlers.HandleAsync(requestPacket); }
protected override void OnResponse(byte OperationCode, short ReturnCode, string DebugMessage, Dictionary<byte, object> 参数) { short operationCode = ParseOperationCode(Parameters); var responsePacket = new ResponsePacket(operationCode, Parameters);
handlers.HandleAsync(responsePacket); }
private short ParseOperationCode(Dictionary<byte, object> parameters) { if (!parameters.TryGetValue(253, out object value)) { 抛出新的 InvalidOperationException(); }
返回(短)值; }
private short ParseEventCode(字典<字节,对象>参数) { if (!parameters.TryGetValue(252, out object value)) { 抛出新的 InvalidOperationException(); }
返回(短)值; } } }`
【问题讨论】:
-
花点时间阅读帮助中心的editing help。 Stack Overflow 上的格式与其他网站上的不同。您的帖子看起来越好,其他人就越容易阅读和理解它。
-
您发布的代码似乎超出了您的问题的合理范围。请阅读How to Ask以及如何制作minimal reproducible example;提供 MRE 可帮助用户回答您的问题,并帮助未来的用户与您的问题相关联。
标签: c#