seloba 发表于 2013-1-30 01:05:11

Nebula2探秘附件:nutildef与nkernelinfo的代码

nutildef.h中主要定义了运行Nebula2程序所需要的最小依赖以及简化声明和使用Nebula2对象的工具宏,代码如下:
<div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; width: 95%; padding-top: 4px;">/****************************************************************************/
/*Nebula2-TutorialUtils*/
/*nKernelInfo-Nebula2实用工具宏及静态库*/
/*author:happykevins*/
/****************************************************************************/
#pragmaonce

///----------------------------------------------------------------------------
///+必要的链接库
#ifdefKS_STATICLINK_NEBULA2

#pragmacomment(lib,"wsock32.lib")
#pragmacomment(lib,"dxguid.lib")
#pragmacomment(lib,"dxerr9.lib")
#pragmacomment(lib,"d3d9.lib")
#pragmacomment(lib,"d3dx9d.lib")
#pragmacomment(lib,"dinput8.lib")

#pragmacomment(lib,"ogg_d.lib")
#pragmacomment(lib,"theora_d.lib")
#pragmacomment(lib,"sqlite_d.lib")

#pragmacomment(lib,"d_microtcl.lib")
#pragmacomment(lib,"d_nkernel.lib")
#pragmacomment(lib,"d_nnebula.lib")
#pragmacomment(lib,"d_ntoollib.lib")
#pragmacomment(lib,"d_ngui.lib")
#pragmacomment(lib,"d_ndinput8.lib")
#pragmacomment(lib,"d_ndirect3d9.lib")

#endif
///-必要的链接库
///----------------------------------------------------------------------------

///----------------------------------------------------------------------------
///+声明Nebula2对象工具宏
///声明使用指定的Module
#definenNebulaUseModule(MODULE)
externvoid*n_new_##MODULE(void);
externbooln_init_##MODULE(nClass*,nKernelServer*);

///将指定Module添加到KernelServer
#definenNebulaAddModule(MODULE)
nKernelServer::Instance()->AddModule(#MODULE,
n_init_##MODULE,n_new_##MODULE);

///声明为Nebula2Module
#definenNebulaModule(CLASS,MODULE,BASEMODULENAME)
externbooln_init_##MODULE(nClass*clazz,nKernelServer*kernelServer);
externvoid*n_new_##MODULE();
booln_init_##MODULE(nClass*clazz,nKernelServer*kernelServer){
clazz->SetProperName(#MODULE);
clazz->SetInstanceSize(sizeof(CLASS));
kernelServer->AddClass(BASEMODULENAME,clazz);
returntrue;
};
void*n_new_##MODULE(){returnn_new(CLASS());};

///命令初始化函数名
#definenNebulaScriptInitCmds(MODULE)n_initcmds_##MODULE

///声明为Nebula2脚本Module
#definenNebulaScriptModule(CLASS,MODULE,BASEMODULENAME)
externbooln_init_##MODULE(nClass*clazz,nKernelServer*kernelServer);
externvoid*n_new_##MODULE();
externvoidn_initcmds_##MODULE(nClass*);
booln_init_##MODULE(nClass*clazz,nKernelServer*kernelServer){
clazz->SetProperName(#MODULE);
clazz->SetInstanceSize(sizeof(CLASS));
kernelServer->AddClass(BASEMODULENAME,clazz);
n_initcmds_##MODULE(clazz);
returntrue;
};
void*n_new_##MODULE(){returnn_new(CLASS());};

///-声明Nebula2对象工具宏
///----------------------------------------------------------------------------

页: [1]
查看完整版本: Nebula2探秘附件:nutildef与nkernelinfo的代码