当时熬通宵赶工,源码可读性完全没法保证,而且41个类,没有一行注释。。。我打算整理一下,不过快考试了,暂时没有时间。。。
没什么技术,就是用的各种API而已。用到的都是很简单的东西,cocos2d-x的初学者完全会用的。。。
说一下基本思路吧:
1、开箱子之后会发生一些事件,这时候需要回调函数,因为我是C++写的,没办法做到脚本语言中“反射”的功能,所以是用std::map做的,map的key是字符串,保存在tiled地图中,map的value是一个函数指针,这样就可以模拟一下“反射”了。
2、颜色的切换就是单纯的replaceScene,不过要保证切换前地图的改动(如割掉的草)能够在新切换的场景中得到延续,类似存档和读档。
3、虚拟键盘和摇杆的切换。两者继承了OperatorBase抽象基类,所以可以随时切换。
4、存档。地图的改动保存在一个单例DataService中,切换场景时,将改动写入临时文件,再次切换回来时记得及时恢复,这样保证数据的持久化。存档时,将临时文件复制到存档文件。万一存档前死亡,清空DataService中的内容,忽略临时文件的内容。
5、GameManager单例类保存栈顶场景的角色、地图、提示框等元素的指针,方便开箱子后的处理还有其他模块的逻辑。(例如回合制战斗模块只需要一行addChild就可以加入场景,它只需要检测GameManager的Player是否在行走,就可以决定是否触发战斗),这样减少各模块的耦合。
暂时想到了这一些,我必须承认,代码真的没有上面这几句话好懂。。。
如果感兴趣的话可以自己试着敲一下,有什么疑问问我就好了,大学狗除了考试都有时间。