X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=radiant%2Fqe3.cpp;h=e5881bb0717a3679c620bdc5d3efbdaf3498c3a0;hb=df994c006d443a8b40386da209a2aaed5b1b5c1f;hp=5360a0ab28368b41b0661d2b303c2198a053c148;hpb=a34196919ed992e3cda24ef9603daf262669b267;p=xonotic%2Fnetradiant.git diff --git a/radiant/qe3.cpp b/radiant/qe3.cpp index 5360a0ab..e5881bb0 100644 --- a/radiant/qe3.cpp +++ b/radiant/qe3.cpp @@ -32,6 +32,7 @@ // Leonardo Zide (leo@lokigames.com) // +#include "defaults.h" #include "qe3.h" #include "globaldefs.h" @@ -78,39 +79,58 @@ void QE_InitVFS(){ // we need to call in order, the mod ones first, then the base ones .. they will be searched in this order // *nix systems have a dual filesystem in ~/.q3a, which is searched first .. so we need to add that too - const char* gamename = gamename_get(); + const char* enginepath = EnginePath_get(); + const char* homepath = g_qeglobals.m_userEnginePath.c_str(); // returns enginepath if not homepath is not set + const char* basegame = basegame_get(); - const char* userRoot = g_qeglobals.m_userEnginePath.c_str(); - const char* globalRoot = EnginePath_get(); + const char* gamename = gamename_get(); // returns basegame if gamename is not set + + // editor builtin VFS + StringOutputStream editorGamePath( 256 ); + editorGamePath << GlobalRadiant().getDataPath() << DEFAULT_EDITORVFS_DIRNAME; + GlobalFileSystem().initDirectory( editorGamePath.c_str() ); + + globalOutputStream() << "engine path: " << enginepath << "\n"; + globalOutputStream() << "home path: " << homepath << "\n"; + globalOutputStream() << "base game: " << basegame << "\n"; + globalOutputStream() << "game name: " << gamename << "\n"; // if we have a mod dir if ( !string_equal( gamename, basegame ) ) { - // ~/./ - if ( userRoot ) { - StringOutputStream userGamePath( 256 ); - userGamePath << userRoot << gamename << '/'; - GlobalFileSystem().initDirectory( userGamePath.c_str() ); + // if we have a home dir + if ( !string_equal( homepath, enginepath ) ) + { + // ~/./ + if ( homepath && !g_disableHomePath ) { + StringOutputStream userGamePath( 256 ); + userGamePath << homepath << gamename << '/'; + GlobalFileSystem().initDirectory( userGamePath.c_str() ); + } } // / - { + if ( !g_disableEnginePath ) { StringOutputStream globalGamePath( 256 ); - globalGamePath << globalRoot << gamename << '/'; + globalGamePath << enginepath << gamename << '/'; GlobalFileSystem().initDirectory( globalGamePath.c_str() ); } } - // ~/./ - if ( userRoot ) { - StringOutputStream userBasePath( 256 ); - userBasePath << userRoot << basegame << '/'; - GlobalFileSystem().initDirectory( userBasePath.c_str() ); + // if we have a home dir + if ( !string_equal( homepath, enginepath ) ) + { + // ~/./ + if ( homepath && !g_disableHomePath ) { + StringOutputStream userBasePath( 256 ); + userBasePath << homepath << basegame << '/'; + GlobalFileSystem().initDirectory( userBasePath.c_str() ); + } } // / - { + if ( !g_disableEnginePath ) { StringOutputStream globalBasePath( 256 ); - globalBasePath << globalRoot << basegame << '/'; + globalBasePath << enginepath << basegame << '/'; GlobalFileSystem().initDirectory( globalBasePath.c_str() ); } @@ -167,11 +187,18 @@ bool ConfirmModified( const char* title ){ } void bsp_init(){ + // this is expected to not be used since + // ".[ExecutableType]" is replaced by "[ExecutableExt]" + const char *exe_ext = GDEF_OS_EXE_EXT; + build_set_variable( "ExecutableType", exe_ext[0] == '\0' ? exe_ext : exe_ext + 1 ); + + build_set_variable( "ExecutableExt", GDEF_OS_EXE_EXT ); build_set_variable( "RadiantPath", AppPath_get() ); - build_set_variable( "ExecutableType", RADIANT_EXECUTABLE ); build_set_variable( "EnginePath", EnginePath_get() ); build_set_variable( "UserEnginePath", g_qeglobals.m_userEnginePath.c_str() ); + build_set_variable( "MonitorAddress", ( g_WatchBSP_Enabled ) ? "127.0.0.1:39000" : "" ); + build_set_variable( "GameName", gamename_get() ); StringBuffer ExtraQ3map2Args; @@ -183,6 +210,16 @@ void bsp_init(){ ExtraQ3map2Args.push_string( "\"" ); } } + + // extra switches + if ( g_disableEnginePath ) { + ExtraQ3map2Args.push_string( " -fs_nobasepath " ); + } + + if ( g_disableHomePath ) { + ExtraQ3map2Args.push_string( " -fs_nohomepath " ); + } + build_set_variable( "ExtraQ3map2Args", ExtraQ3map2Args.c_str() ); const char* mapname = Map_Name( g_map ); @@ -204,6 +241,7 @@ public: ArrayCommandListener(){ m_array = g_ptr_array_new(); } + ~ArrayCommandListener(){ g_ptr_array_free( m_array, TRUE ); }