//LuaEx.h文件
#pragma once
#include <Windows.h>
extern "C"
{
#include "lua/lua.h"
#include "lua/lualib.h"
#include "lua/lauxlib.h"
};
class LuaEx
{
public:
LuaEx(void);
~LuaEx(void);
bool LoadFile(LPCSTR str); //載入lua文件
LPSTR LoadString(LPCSTR str); //讀取字符串
int LoadInteger(LPCSTR str); //讀取整形
double LoadDouble(LPCSTR str); //讀取浮點型
bool LoadBoolean(LPCSTR str); //讀取布爾型
private:
lua_State *L; //lua指針
};
//LuaEx.cpp文件
#include ".\luaex.h"
#pragma comment(lib, ".\\lua\\lua.lib")
LuaEx::LuaEx(void)
{
L = lua_open();
luaL_openlibs(L);
}
LuaEx::~LuaEx(void)
{
lua_close(L);
}
bool LuaEx::LoadFile(LPCSTR str)
{
if(luaL_dofile(L, str))
{
return false;
}
return true;
}
LPSTR LuaEx::LoadString(LPCSTR str)
{
lua_getglobal(L, str);
if (lua_isstring(L, -1))
{
return (LPSTR)lua_tostring(L, -1);
}
return NULL;
}
int LuaEx::LoadInteger(LPCSTR str)
{
lua_getglobal(L, str);
if (lua_isnumber(L, -1))
{
return (int)lua_tointeger(L, -1);
}
return NULL;
}
double LuaEx::LoadDouble(LPCSTR str)
{
lua_getglobal(L, str);
if (lua_isnumber(L, -1))
{
return (double)lua_tonumber(L, -1);
}
return 0.0;
}
bool LuaEx::LoadBoolean(LPCSTR str)
{
lua_getglobal(L, str);
if (lua_isboolean(L, -1))
{
return (bool)lua_toboolean(L, -1);
}
return false;
}
在要使用配置文件的地方實例化一個LuaEx類就可以了。
先調用LoadFile載入文件,參數為文件路徑。文件格式可以按照如下方式:
title = "游戲"
width = 640
height = 480
isWindowed = true;
useSound = false;
hideMouse = false;
結尾分號可加可不加,就是寫一個lua腳本,但是只包含變量不包含方法。
之后就可以讀取其中內容了。例如
LoadString("title"); //表示載入變量名為title的變量的值。
本類中所有函數的參數都是字符串。