热血传奇服务端FIR0918源码服务端Actor继承关系以及注解
首先要声明一下,Fir0918服务端方面个人感觉实在是渣 代码各种乱入,写此博客只是记录自己学习的点滴。并不是来告诉大家fir的代码有多好。
TBaseObject 只有四个成员 对象所在地图的X,Y以及对象类型objType(玩家 英雄 NPC 事件 等等)。以及对象创建的时间使用GetTickCount。成员函数也只有一个构造函数。
TActorObject: TActorObject .从代码上看来是作为Actor超类 。但是此类内部实际耦合了太多Player的成员 比如 Socket 句柄 ,衣服样子 以及所属行会等等。而从结构上来看
TActorObject 只是作为一个抽象类来泛化人物 怪物 以及NPC的 具体功能。而此类却耦合太多的人物操作。所以这里并没有设计好。需要解耦。关于属性问题:其内部有三个关于属性的结构体成员:
{人物属性}
m_Abil: TAbility; //人物临时属性。此结构体用来计算人物所在等级应具有的基本属性。之后再计算入m_wAbil内
m_WAbil: TAbility; //人物主要属性。此结构体是人物的主要属性值记录。攻击伤害是以此结构体作为数据来计算。
m_AddAbil: TAddAbility;//人物附加属性。此结构体 类似与TAbilty 。有不少重复的字段是一样的。其作用是计算人物身上穿戴装备的属性值。然后和m_Abil相加 赋值给 m_wAbil 。
TAnimalObject : 此类实现了Actor的搜寻 和攻击 以及 随机的走动方法。以及处理Socket消息的小实现。个人认为 此类功能应该在TActorObject内实现。再此多一层继承关系是没必要的。
TMonster : 此类作为怪物类的基类 实现了攻击目标 和基本逻辑处理(Run函数) 子类怪物继承自其要实现新的功能基本 是在Run内进行重写。
TAIObject : 此类 实现了自动控制的一些功能 但并未完全实现。从设计角度来看 此类是为英雄以及假人实现做抽象的。但是个人认为此类应该继承自TPlayObject 而不是让TPlayObject 继承自TAIObject 毕竟 玩家是不需要自动控制的吧。或许需要挂机的功能?
TNormalNPC: 此类实现了各种脚本功能的支持 #IF #ACT 条件的支持!其实有点不太理解 为什么此类需要从TAnimalObject继承。 而卫士类TSuperGuard继承自TNormalNpc 却只实现了攻击玩家这种方法。对于TNormalNPC实现的脚本功能卫士是使用不上的。
TAIPlayObject : 假人的实现。
THeroObject : 英雄的实现。
思考分析:从继承关系上来看TAnimalObject 不应该出现 此类应该集合在Actor类内。而TSuperGuard 也不应继承自TNormalNPC。 而且FIR的源代码内 Actor 也包含了TPlayObject 和 THeroObject的代码:从继承关系上来 应该从更新整理为以下关系
如果非得在服务端实现 人物的挂机功能。那么可以提取出一个公共接口。让假人 和玩家 ,英雄 各自实现 其智能化的功能。
热血传奇服务端FIR0918源码服务端Actor继承关系以及注解相关推荐
- 按头安利 好看又实用的端游源码 PC端 客户端 电脑游戏源码素材看这里
想必大家都在为找端游源码 PC端 客户端 电脑游戏源码而头疼吧,今天小编都为大家整理好咯,上资源的端游源码 PC端 客户端 电脑游戏源码,大家喜欢的可以先行收藏哈,之后会持续更新哒~ 在找寻资源的时候 ...
- C语言实现UDP网络通信(附服务端和客服端完整源码)
C语言实现UDP网络通信 服务端源码 客户端源码 服务端源码 #ifdef _WIN32 #define _WINSOCK_DEPRECATED_NO_WARNINGS #define close c ...
- C语言实现TCP网络通信(附服务端和客服端完整源码)
C语言实现TCP网络通信 服务端源码 客户端源码 服务端源码 #include <stdio.h> #include <stdlib.h> #include <strin ...
- 2021最新4合1即时通讯IM源码-服务端+PC+WEB+安卓+IOS完整原生源码
介绍: 20214合1即时通讯IM源码 服务端+PC+WEB+安卓+IOS完整原生源码 附完整开发文档+视频搭建教程. 注意:此源码亲测可用,他处有小问题,我们已经修复.任何源码,难免有瑕疵,但不影响 ...
- java开源即时通讯软件服务端openfire源码构建
java开源即时通讯软件服务端openfire源码构建 本文使用最新的openfire主干代码为例,讲解了如何搭建一个openfire开源开发环境,正在实现自己写java聊天软件: 编译环境搭建 调试 ...
- php手游服务端开发教程,【手游服务端】梦想海贼王 卡牌系列一键端服务端游戏源码+教程...
[手游服务端]梦想海贼王 卡牌系列一键端服务端游戏源码+教程 游戏介绍: <梦想海贼王>是一款卡牌类手游,游戏以全球第一超人气动漫<海贼王>为题材,用Q版风格配合新奇多样的玩法 ...
- C++RTSP服务端(附源码)
VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 第16章:VC++ RTSP服务端(附源码) 源代码demo已上传到百度网盘:永久生效 ,文章尾部附 百度链接
- PHP服务端、Unity客户端 双端基础源码做avalon阿瓦隆桌游面sha(类似狼人游戏)支持WebGL、小程序发布
文章目录 PHP服务端发布(Windows下演示) Windows 安装PHP 启动服务器 Linux家族 Unity客户端发布 发布Windows客户端 发布WebGL端 演示 源码解析 联系作者 ...
- 校园网跑腿小程序源码 服务端+客户端+小程序
介绍: 校园网跑腿小程序源码 需要准备 1.小程序 2.服务器(推荐配置2h4g3m) 3.域名(需要备案) 搭建教程 使用服务器搭建宝塔 安装pm2管理器 新建项目上传服务器接口 修改/pub/co ...
最新文章
- Adobe Creative Suite CS4/CS5 全系列注册机
- SAP SMP的一些截图
- Lugre摩擦模型的Stribeck曲线仿真
- Q130:PBRT-V3,非均匀介质的采样(11.3.3章节、15.2.2章节)
- vue安装vue-pdf(预览pdf)(2021/03/02)
- tcpdf html table,TCPDF: HTML table and page breaks
- PMP-项目进度管理
- 汇编:Debug的常用命令
- 科研常用到的计算机编程,科研必备:几款好用的流程图工具,助力你的论文/科研绘图...
- HR不排斥的三大跳槽理由
- JVM2:垃圾收集器与内存分配策略
- 华硕笔记本BIOS设置u盘启动图文详解
- 宏基笔记本电脑怎么进入bios设置功能按键图解
- Discuz! X搬家说明
- Synaptics FP Sensors(WBF)(PID=0011)无法录入Windows Hello问题记录
- java谐音,那位有If I were a boy 谐音啊?!
- 小程序Cannot set property 'userInfo' of undefined
- Excel?最强国产开源在线表格 Luckysheet 走红GitHub!
- php学习笔记(一)--我们的第一段PHP代码
- 去除canvas 画圆的毛边
热门文章
- 从零开始学习JavaWeb(CSS背景图片固定+获取网页图片)
- 腾讯T2大牛亲自讲解!Android猿面试(附视频)
- mysql 10058_OUI-10058错误
- 来了,来了!孙正义出手之“软银22.5亿美金砸向通用Cruise”
- Java程序定义一个继承Thread类,并覆盖run()方法,在run()方法中每隔100毫秒打印一句话。
- HTML 知识点 小结
- 一整套偏方,亲们有对应症状可略为参考
- JSP Mysql 实例解说_JSP+MySQL实例
- 浅谈FPGA与音频处理器的结合
- 好用的天气预报软件:Living Earth Desktop for Mac