首页 > 其他 > 详细

CDDA 源码解析

时间:2017-01-05 21:39:08      阅读:490      评论:0      收藏:0      [点我收藏+]

一.编译
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里调用对应的函数,在调用到具体的类去

CDDA 源码解析

原文:http://www.cnblogs.com/jeason1997/p/6254020.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!