网络消息结构体脚本自动生成编辑器的进一步扩展
2017-07-26 09:23
232 查看
由于之前我们的消息都是这样的
把所有相关部分的消息结构类都写在一个cs文件里,这样很乱,不便于管理,新网络框架是一个结构用一个文件的方式,就是我之前写的编辑器自动生成的那种脚本,所以现在需要把旧的框架脚本里的类一个个剥离提取成一个个新的cs文件,但是项目中最起码有几百个消息结构体,难道一个一个创建吗?那太费事了,不是一个程序员该做的。编辑器创建的功能是为了以后一个个添加新消息时方便快捷,而将旧的脚本替换成新的框架所需的脚本文件,我采用了代码的办法。对我的编辑器又做了进一步的扩展。
从前两天只能创建消息,到现在我把编辑器做成了选择好路径中的cs文件,再点击生成的按钮,选择一个保存大量脚本的文件夹,就可以自动剥离出我们需要的脚本文件了。像这样
选择好源文件路径(打开Windows文件浏览器自己选择),会把路径打到文本框里可以手动修改,点击生成按钮。再选择一个保存的路径
于是这些我需要的脚本文件就批量生成了。(和源文件中结构不同,采用新的结构。具体实现方式见下文)
生成的代码和源文件不同,统统按我的格式来,直接调用我之前写的创建脚本方法就好了。自动生成的代码永远比人手写的干净整齐,哈哈
批量创建仅需要拿到文件夹的路径,后面根据不同的类自己加文件名,然后批量写入即可。
由于每生成一个小脚本,都需要得到的是字段和两个id以及消息的类型是请求或是回应,字段可以在原脚本中读取,而两个id在原脚本中是被调用的时候再赋值的,消息类型也没有直接区分,只能根据其被调用的方式来得到,所以我在每个需要转换的类下面的第一行加入我的标签。格式如下
MYTIP,ID1,ID2,Type
就这样,通过读取标签的形式,我得到了该类的基本信息,再动动脑子仔细观察一下源文件代码结构实现一下逻辑上的算法,就能提取出想要的字段,生成我所需要的脚本文件了。
随便截取一部分代码,表示坑是很多的,源文件比较老了。很多地方是制表符还是空格根本分不清的,还有一些莫名其妙的空格,所以都是先处理再走逻辑。毕竟源文件比较乱,我又只能读字符串,所以调试和修改的过程还是比较痛苦的。但是最后点一下生成几十个脚本的时候那种爽快感还是不言而喻的。写了这个扩展功能。后续把别的游戏中的消息转成新网络框架所需的结构类脚本文件也轻松愉快了。写编辑器的技能绝对是程序员必备,不要做一个在做重复事情的程序员,重复的事情请交给计算机去做。哈哈
把所有相关部分的消息结构类都写在一个cs文件里,这样很乱,不便于管理,新网络框架是一个结构用一个文件的方式,就是我之前写的编辑器自动生成的那种脚本,所以现在需要把旧的框架脚本里的类一个个剥离提取成一个个新的cs文件,但是项目中最起码有几百个消息结构体,难道一个一个创建吗?那太费事了,不是一个程序员该做的。编辑器创建的功能是为了以后一个个添加新消息时方便快捷,而将旧的脚本替换成新的框架所需的脚本文件,我采用了代码的办法。对我的编辑器又做了进一步的扩展。
从前两天只能创建消息,到现在我把编辑器做成了选择好路径中的cs文件,再点击生成的按钮,选择一个保存大量脚本的文件夹,就可以自动剥离出我们需要的脚本文件了。像这样
选择好源文件路径(打开Windows文件浏览器自己选择),会把路径打到文本框里可以手动修改,点击生成按钮。再选择一个保存的路径
于是这些我需要的脚本文件就批量生成了。(和源文件中结构不同,采用新的结构。具体实现方式见下文)
生成的代码和源文件不同,统统按我的格式来,直接调用我之前写的创建脚本方法就好了。自动生成的代码永远比人手写的干净整齐,哈哈
批量创建仅需要拿到文件夹的路径,后面根据不同的类自己加文件名,然后批量写入即可。
由于每生成一个小脚本,都需要得到的是字段和两个id以及消息的类型是请求或是回应,字段可以在原脚本中读取,而两个id在原脚本中是被调用的时候再赋值的,消息类型也没有直接区分,只能根据其被调用的方式来得到,所以我在每个需要转换的类下面的第一行加入我的标签。格式如下
MYTIP,ID1,ID2,Type
就这样,通过读取标签的形式,我得到了该类的基本信息,再动动脑子仔细观察一下源文件代码结构实现一下逻辑上的算法,就能提取出想要的字段,生成我所需要的脚本文件了。
随便截取一部分代码,表示坑是很多的,源文件比较老了。很多地方是制表符还是空格根本分不清的,还有一些莫名其妙的空格,所以都是先处理再走逻辑。毕竟源文件比较乱,我又只能读字符串,所以调试和修改的过程还是比较痛苦的。但是最后点一下生成几十个脚本的时候那种爽快感还是不言而喻的。写了这个扩展功能。后续把别的游戏中的消息转成新网络框架所需的结构类脚本文件也轻松愉快了。写编辑器的技能绝对是程序员必备,不要做一个在做重复事情的程序员,重复的事情请交给计算机去做。哈哈
相关文章推荐
- 制作新网络框架快速自动生成消息结构体的编辑器
- Orcad下使用TCL脚本自动生成导线和网络标号
- 全面解析Unity3D自动生成的脚本工程文件
- 使用Hibernate-tools中的hbm2java和hbm2ddl根据hbm文件自动生成pojo和数据库脚本
- svn自动生成并简易配置repository和重启服务的脚本
- 一种自动反射消息类型的 Google Protobuf 网络传输方案
- Linux vim编辑器中tab自动补全python命令脚本
- 用批处理写的自动生成tablediff脚本的工具
- Microsoft自动生成脚本插件Microsoft.SqlServer.Smo.dll
- 在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,根据hbm文件自动生成pojo和数据库脚本
- 多个库需要提交时自动生成repo提交脚本
- [QualityCenter]设置工作流脚本-新建缺陷时字段自动生成
- linux下shell脚本自动生成编译信息
- 根据帧图自动生成android 动画xml文件--python脚本
- 自动生成公钥并自动写入到特定服务器脚本
- 一种自动反射消息类型的 Google Protobuf 网络传输方案
- 自动发QQ消息脚本
- Unity3D研究院之Machine动画脚本自动生成AnimatorController(七十一)
- 全面解析Unity3D自动生成的脚本工程文件
- 一种自动反射消息类型的 Google Protobuf 网络传输方案