完善网络消息的处理中心

  • 作用:分发到各自对应的模块去处理

  • 在GameServer中创建一个文件夹Logo

  • 创建一个所有的模块类继承的接口,IHandler,一个断开方法,一个接收消息的方法

  • 创建操作码对应的模块类

  • 在网络消息的处理中心分发到每个模块类中

Server项目图


IHandler的实现

namespace GameServer.Logic
{/// <summary>///每个模块处理的接口/// </summary>public interface IHandler{void DisConnected(ClientPeer clientPeer);void Receive(ClientPeer client,int subCode,object value);}
}

四个模块类的实现

//账号模块
namespace GameServer.Logic
{/// <summary>/// 账号模块的处理/// </summary>public class AccountHandler : IHandler{public void DisConnected(ClientPeer clientPeer){}public void Receive(ClientPeer client, int subCode, object value){}}
}//匹配模块
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyServer;namespace GameServer.Logic
{/// <summary>/// 匹配模块的处理/// </summary>public class MatchHandler : IHandler{public void DisConnected(ClientPeer clientPeer){}public void Receive(ClientPeer client, int subCode, object value){}}
}//聊天模块
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyServer;namespace GameServer.Logic
{/// <summary>/// 聊天模块的处理/// </summary>public class ChantHandler : IHandler{public void DisConnected(ClientPeer clientPeer){}public void Receive(ClientPeer client, int subCode, object value){}}
}//战斗模块
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyServer;namespace GameServer.Logic
{/// <summary>/// 战斗模块的处理/// </summary>public class FightHandler : IHandler{public void DisConnected(ClientPeer clientPeer){}public void Receive(ClientPeer client, int subCode, object value){}}
}

完善网络消息处理中心,分发消息到各自对应的模块

sing GameServer.Logic;
using MyServer;
using Protocol.Code;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace GameServer
{/// <summary>/// 消息处理中心,分发到对应的模块类/// </summary>public class NetMessageCenter : IApplication{private AccountHandler accountHandler = new AccountHandler();private ChantHandler chantHandler = new ChantHandler();private MatchHandler matchHandler = new MatchHandler();private FightHandler fightHandler = new FightHandler();/// <summary>/// 断开连接,分发到各个对应的模块进行处理/// </summary>/// <param name="client"></param>public void Disconnected(ClientPeer client){fightHandler.DisConnected(client);matchHandler.DisConnected(client);chantHandler.DisConnected(client);accountHandler.DisConnected(client);}/// <summary>/// 接收消息,分发到各自对应的模块进行处理/// </summary>/// <param name="client">客户端连接对象</param>/// <param name="msg">网络消息类</param>public void Receive(ClientPeer client, NetMsg msg){switch (msg.opCode){case OpCode.Account:accountHandler.Receive(client,msg.subCode,msg.value);break;case OpCode.Chat:chantHandler.Receive(client, msg.subCode, msg.value);break;case OpCode.Match:matchHandler.Receive(client, msg.subCode, msg.value);break;case OpCode.Fight:fightHandler.Receive(client, msg.subCode, msg.value);break;}}}
}

有需要学习视频的欢迎关注微信公众号

Zjh游戏(五)模块类的实现相关推荐

  1. Java第五课. 类对象

    Java第五课. 类&对象 回顾 1. 冒泡:概念,实现:2个for循环分别起的作用 2. 二维数组可以理解成表格:有行有列,行当成一维数组,列当成一维数组中的元素,行有下标(几个一维数组), ...

  2. 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...

    视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...

  3. 求python一个类与对象的代码_Python基础系列(五)类和对象,让你更懂你的python代码...

    首先,非常感谢各位打开本博文,本博文是Python入门基础系列文章之一,Python目前是非常火的编程工具,其实作为编程不在只是程序员的专利,每一个人在日常的工作中.学习中都会或多或少的要用到一些工具 ...

  4. js写的一个html游戏向导模块

    依旧是最近的一个游戏项目,其中的一个需求是要设计一个游戏向导模块,第一次登陆后用箭头,对话框,音频介绍游戏界面上的各个功能.因为介绍的步数较多,就不能纯粹写一些杂乱的代码去触发事件.我的基本思想是,用 ...

  5. 首份小程序广告投放价值榜单发布:游戏、工具类小程序占主导地位

    2018年3月小程序广告正式开放内测,所有类目小程序均可进行广告投放.随后众多品牌小程序纷纷开放小程序广告,近日第三方小程序开发工具即速应用和 精硕科技集团 赋能智慧商业的数据智能技术提供商nEqua ...

  6. Unity (游戏UI模块的封装)

    Unity (游戏UI模块的封装) 前言 之前介绍过Unity声音模块的封装,这次我将为大家继续带来Unity的UI模块的封装,当然在做一些demo的时候,我们常常不会花费太多的时间在这上面,我们都会 ...

  7. 格斗类游戏和休闲类游戏不同

    前阵子我开发了Match3D, 一个可以把三维动画输出成为swf的工具, 而且实现了swf渲染的实时三维角色动画, 这可以说是我真正推出的第一个flash第三方软件, 其实这以前, 我曾经开发过几个其 ...

  8. PyTorch模块类

    文章目录 PyTorch模块类 基于模块类的简单线性回归类 线性回归类的实例化和方法调用 1.使用name_parameters方法和parameters方法获取模型的参数 2.使用train方法和e ...

  9. boost::test模块类属性工具的单元测试

    boost::test模块类属性工具的单元测试 实现功能 C++实现代码 实现功能 boost::test模块类属性工具的单元测试 C++实现代码 #define BOOST_TEST_MODULE ...

最新文章

  1. 贝叶斯网络之父Judea Pearl力荐、LeCun点赞,这篇长论文全面解读机器学习中的因果关系...
  2. 《数据分析实战 基于EXCEL和SPSS系列工具的实践》一第2章 数据分析的理论、工具、模型...
  3. 胆固醇竟是新冠最隐蔽同伙!协助病毒入侵细胞,普林斯顿、哈佛医学院首次观察到全过程...
  4. C语言经典例61-杨辉三角
  5. php注册树模式,php基础设计模式大全(注册树模式、工厂模式、单列模式)
  6. python3 重新学习
  7. .php y=mp4,PHP输出MP4视频流函数
  8. 论文浅尝 | 面向自动问题生成的跨语言训练
  9. MFC小笔记:上下控件
  10. ToString函数用法
  11. IBM MQ - 连接远程队列管理器报AMQ4036错误
  12. final finalize finally比较
  13. 独立树Graph Coloringhttp://poj.org/problem?id=1419最大团问题
  14. 【Android游戏开发详细过程2】Android平台飞机大战游戏APP设计与实现
  15. SpringBoot实现本地、网络文件下载、zip压缩包批量下载
  16. 推荐一个美中不失优雅的博客网主页(素材参考---麋鹿鲁哟)
  17. Oracle PeopleSoft 应用安全加固
  18. 异常解决——Tomcat启动异常:Cannot assign requested address
  19. 关于笔记本加固态硬盘装系统的问题的解决办法
  20. 深入浅出Stream和parallelStream

热门文章

  1. 佛说前世的五百次回眸才换来今生的擦肩而过
  2. TortoiseGit 显示文件状态图标
  3. ubuntu下显示器刷新率的修改
  4. Linux基础简答题八个(含答案)
  5. 澳大利亚最大的个贷公司Latitude遭攻击,两家服务提供商受影响
  6. 看到自己有脱发趋势,我乱了
  7. Centos 安装Gogs
  8. 【深度学习】R-CNN 论文解读及个人理解
  9. labview的MAX显示数据库损坏的解决办法
  10. Coursera-AI for everyone Week 2 Quiz