一.编译
1:从 https://github.com/CleverRaven/Cataclysm-DDA 下载源码
2:下载IDE CodeBlocks
3:下载TDM-GCC
4:CodeBlocks设置编译器路径为TDM-GCC路径(默认是MinGW)(Setting->Complier->Toolchain executables),
并将C compiler设置为x86_64-w64-mingw32-gcc-5.1.0.exe, C++ compiler/Linker dynamic设置为x86_64-w64-mingw32-g++.exe,
将Linker static设置为ar.exe,Resource compiler设置为windres.exe,Make program设置为mingw32-make.exe
(这里有份下载好的,但他用的是MinGW http://pan.baidu.com/s/1eSmPpWQ)
5:下载 http://pan.baidu.com/s/1eSmPpWQ 里的WinDepend解压到CDDA的根目录,这些是依赖的静态库跟动态库
6:下载LUA 5.1 For Win并安装
7:在CDDA根目录下找到CataclysmWin.cbp打开工程,右键项目(Cataclysm)-> Properties -> Build targets ->
双击要编译的类型(如Relase(Lua)),然后在Pre/post build steps标签下,将Pre-build steps里的lua5.1 改为 lua
因为第6步安装好Lua,默认在系统中的环境变量名是lua而不是lua5.1,不然会找不到该命令。
8:选择对应的编译类型,然后编译。
9:编译好后,将exe文件以及data拷贝到同一目录下(如果有多语言,贴图以及LUA,还要拷贝对应的文件夹lang,gfx以及依赖的dll到运 行目录下)
*如果MinGW可以下载,则第3、4步骤可以省略(但由于过国内的网络,MinGW很多时候是没法完整下完所有所需插件,包括GNU-GCC编译器)
*如果不需要LUA,6、7步骤可以省略
二.LUA支持
CDDA项目里支持LUA,具体的做法是:
1.注册函数;在catalua.cpp里写一个你新建的函数,例如void game_test(int x, inty)
2.在class_definitions.lua的global_functions下注册这个函数,
global_functions = { [...] test = { cpp_name = "game_test", args = {"int", "int"}, rval = nil }, [...] }
3.然后编译的时候,如果有选LUA,则会执行命令脚本,调用generate_bindings.lua将lass_definitions.lua注册的函数warp到catabindings.cpp文件里,生成一个global_test的函数,并绑定{"test", global_test}
4.LUA脚本里调用test的时候,CDDA的LUA引擎会通过‘test‘这个函数名在catabindings.cpp寻找与之对应的c++ warp函数(global_test),然后执行global_test,而global_test里又去调用最原先在catalua.cpp里创建的game_test达到LUA调用C++的目的
创建类也一样
1.先在c++文件里创建一个类,例如myClass
2.在class_definitions.lua的class里注册,注意各种名字必须与c++里的一一对应
myClass = { // 构造函数 new = { { "string" }, { "int" }, }, // 变量 attributes = { name = {type = "string", writable = true}, }, // 函数 functions = { {name = "fuck", rval = nil, args = {"int", "string"}}, }, },
3.编译的时候,会在catabindings.cpp生成warp方法,然后在LUA里调用的时候,再从catabindings.cpp里调用对应的函数,在调用到具体的类去
原文:http://www.cnblogs.com/jeason1997/p/6254020.html