#include "CLuaManager.h"
CLuaManager::CLuaManager(CGameManager* gameManager) : gameManager(gameManager)
{
}
//Open new state, used first for ANYTHING LUA related
void CLuaManager::LuaCreateState()
{
//Create LUA state
LuaState = lua_open();
if (NULL == LuaState)
{
gameManager->log << "Error Initializing lua\n";
}
}
//Destory current open state
void CLuaManager::LuaDestroyState()
{
//Close LUA state
lua_close(LuaGetState());
}
//Return current state
lua_State* CLuaManager::LuaGetState()
{
return LuaState;
}
//Load .lua external script
void CLuaManager::LuaLoadScript(const char * luaScript)
{
if (lua_dofile(LuaState, luaScript))
{
gameManager->log <<"YAY\n";
}
else
{
gameManager->log <<"oh noes!\n";
}
}
void CLuaManager::LuaOpenModules()
{
//Open all modules for LUA Binding
//tolua_CWeaponManager_open(LuaGetState());
//tolua_CDialogueManager_open(LuaGetState());
//tolua_CItemManager_open(LuaGetState());
//tolua_CLogger_open(LuaGetState());
tolua_CMapManager_open(LuaGetState());
//tolua_COpenALManager_open(LuaGetState());
//tolua_XML_open(LuaGetState());
}
//Open LUA Libraries for extended functionality
void CLuaManager::LuaOpenLibs()
{
lua_baselibopen(LuaGetState());
lua_iolibopen(LuaGetState());
lua_strlibopen(LuaGetState());
lua_mathlibopen(LuaGetState());
}
Pretty damn straight foward, heh. Now in my main file I do the following:
gameManager->luaMgr->LuaCreateState();
gameManager->luaMgr->LuaOpenLibs();
gameManager->luaMgr->LuaOpenModules();
gameManager->luaMgr->LuaLoadScript("test.lua");
Now, here is the script file "test.lua":
mapMgr = CMapManager:new()
mapMgr:loadMap("demo_test/Terrain Layers/Layer6.bmp", "demo_test")
The Problem: My program crashes at the lua_dofile line. Using the stack it starts at _file.c, then fprintf.c, then goes to lua_dofile. It's crazy, and I am so confused. Help! :( Thank you! Mike