diff options
| author | Alexander Pickering <alex@cogarr.net> | 2018-10-03 17:46:45 -0400 |
|---|---|---|
| committer | Alexander Pickering <alex@cogarr.net> | 2018-10-03 17:46:45 -0400 |
| commit | 6e8ef86afc5a559ff4df7f43bec53f82a9060731 (patch) | |
| tree | ef2b4384c932d336c700ba9db6c01d8a2d5b6197 /src | |
| parent | 1c790cc19e92d8ad9d74c637de51175159f6bdd2 (diff) | |
| download | brokengine-6e8ef86afc5a559ff4df7f43bec53f82a9060731.tar.gz brokengine-6e8ef86afc5a559ff4df7f43bec53f82a9060731.tar.bz2 brokengine-6e8ef86afc5a559ff4df7f43bec53f82a9060731.zip | |
Allow brokengine to start projects in other directories
Allow the second argument passed to brokengine on the command
line specify the location of the data/ folder the program
uses.
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/initdevice.cpp | 12 | ||||
| -rw-r--r-- | src/client/initdevice.hpp | 2 | ||||
| -rw-r--r-- | src/client/main.cpp | 13 |
3 files changed, 19 insertions, 8 deletions
diff --git a/src/client/initdevice.cpp b/src/client/initdevice.cpp index 79b6706..c7535a0 100644 --- a/src/client/initdevice.cpp +++ b/src/client/initdevice.cpp @@ -173,14 +173,18 @@ void settingsFromTable(lua_State *L, SIrrlichtCreationParameters* p){ printf("[OK]\n"); } -IrrlichtDevice* spawnIrrDevice(lua_State* L){ +IrrlichtDevice* spawnIrrDevice(lua_State* L, char *path){ //printf("Attempting to load settings...\n"); - int iErr = luaL_dofile(L,"../data/deviceinit.lua"); + char initname[] = "deviceinit.lua"; + size_t pathlen = strlen(initname) + strlen(path); + char filename[pathlen + 1]; + sprintf(filename,"%s/%s",path,initname); + int iErr = luaL_dofile(L,filename); SIrrlichtCreationParameters p = SIrrlichtCreationParameters(); - settingsFromTable(L,&p); if(iErr != 0){ - printf("Failed to open lua file:/data/deviceinit.lua\n"); + printf("Failed to open lua file:%s\n", filename); } + settingsFromTable(L,&p); IrrlichtDevice* dev = createDeviceEx(p); if(!dev) exit(1); diff --git a/src/client/initdevice.hpp b/src/client/initdevice.hpp index dd328f7..0a65a99 100644 --- a/src/client/initdevice.hpp +++ b/src/client/initdevice.hpp @@ -13,5 +13,5 @@ using namespace video; using namespace io; using namespace gui; -IrrlichtDevice* spawnIrrDevice(lua_State* L); +IrrlichtDevice* spawnIrrDevice(lua_State* L, char *path); #endif diff --git a/src/client/main.cpp b/src/client/main.cpp index 63b7131..4885d8a 100644 --- a/src/client/main.cpp +++ b/src/client/main.cpp @@ -122,12 +122,19 @@ int main(int argc, char *argv[]){ //Load the lua libraries loadLLibs(state); //Defined in initdevice.cpp, creates the irrlicht device - device = spawnIrrDevice(state); + printf("Argc: %d\n",argc); + char *path; + if(argc == 2){ + path = argv[1]; + }else{ + path = (char*)"../data"; + } + device = spawnIrrDevice(state,path); if (!device){ printf("Failed to initalize device\n"); return 1; } - device->getFileSystem()->changeWorkingDirectoryTo("../data"); + device->getFileSystem()->changeWorkingDirectoryTo(path); //ILogger* log = device->getLogger(); //log->setLogLevel(ELL_NONE); //Loads libraries for interfaceing with irrlicht @@ -198,6 +205,6 @@ int main(int argc, char *argv[]){ phys_shutdown(RemoveISceneNode); device->drop(); - + printf("Goodbye\n"); return 0; } |
