编程语言:Lua
生成的代码语言:TypeScript
Git仓库地址:https://github.com/superXfx/GameDesignPatterns.git
痛点——
基于状态机编写代码时,我们要为每个组件编写 状态枚举 ,每个State的类 ,以及Ctrl 三部分。
多写几个就会发现,在没有编写具体逻辑的情况下,每个组件包含的类 只有命名差异。
这就导致重复性的工作存在——重复的工作就得交给程序(不带“员”)去做~
解决思路——
先要问,代码是什么?
给机器的指令?逻辑化语言?
对,但却复杂化了。简单来讲,任何可被记录的语言都是一种 字符系统,在简单讲,就是 字符串!
这样问题就简化为字符串的处理啦。
按照一定的配置生成字符串即可。
方案——
1、用json配置state枚举,CtrlName等信息
2、用Lua作为开发语言,这个只是因为自己比较熟,任选一种脚本语言都行。
3、运行Lua脚本,生成一个个 .ts 文件,放在对应的目录下。
实现——
1、配置文件
如图,配置一波 状态枚举,Ctrl与状态枚举的关系,即可完成配置。
2、代码
如图,看这个run函数,即可明白我要做的事情。
至于原理,就像图上这样,一波字符串操作,然后将其保存在以.ts为后缀保存下来。
另外三个函数同理,就不贴图了。
3、成果
run一下,你就获得给予状态机的框架啦,往里面填填具体逻辑即可。
皮一下,我称其为 码妖 ~(✪ω✪)
扩展阅读
《码妖》
https://www.jianshu.com/p/4ef0467b0af5