伪春菜SAORI的编写

网上关于伪春菜的资料真的好难找啊><

用户群不够大的样子……然后好多还是日语的

SAORI可以认为是SHIORI的插件,SHIORI是控制人格执行的程序,通常这个程序只提供了一个脚本语言解释器(比如YAYA),更加具体的功能由这些脚本来完成。这种脚本、解释器分离的模型为更改程序提供了方便。如果每次更改都要重新编译整个SHIORI,这就太“GEEK体验”了。我们要的是“用户体验”XD 

SAORI可以协助SHIORI完成一些脚本做不到的功能。SHIORI不能提供用户所需功能的时候,就需要调用外部的SAORI来完成。SAORI通常是一些DLL,这就提供了非常大的灵活性:因为可以用C语言或者C++语言来编写DLL,编写过程中还可以调用例如系统API之类的函数。

关于SAORI的编写,虽然它给出的流程并不是很复杂,load、unload、request三个函数:

extern "C" __declspec(dllexport) HGLOBAL __cdecl request(HGLOBAL h, long *len);
extern "C" __declspec(dllexport) BOOL __cdecl load(HGLOBAL h, long len);
extern "C" __declspec(dllexport) BOOL __cdecl unload();

(来源: http://www.boreas.dti.ne.jp/~sdn/saori.html

但是光是分析字符串,就有点小累人。在网上找了一圈以后,找到了别人写好的现成的框架代码:

http://code.google.com/p/csaori/

CSAORI那个下载就是框架。把很多东西都做好了,自己只要实现3个成员函数就可以了。其中有一个exec函数的接口十分整洁:分析过的Input部分和自己为每个成员赋值的Output部分。前后的处理工作都由框架负责完成。

这样的话编写SAORI的工作,特别是编写简单的SAORI的工作,就会轻松很多:VS里开一个DLL工程,把csaori.cpp加入到工程里面,新建一个源代码文件,把csaori.h给include进去,实现一下CSAORI类里面的load,unload和exec函数,大功告成。记得在exec里面设定Output的返回值~

发表评论