Цитата(buffy @ 21.05.2019, 07:53)
Всем привет! У меня появилась идея реализовать загрузку ресурсов отдельно от бинов. По-умолчанию, емнип, они грузятся относительно пути $game_data$, но банальная замена пути в fsgame.ltx не даёт результатов - файлы найти движок не может. Может кто-то копал в этом направлении или уже реализовал некий функционал?
Придумал:
Этот код в CLocatorAPI::_initialize
Код
fs_ltx = (fs_name && fs_name[0]) ? fs_name : FSLTX;
pFSltx = r_open(fs_ltx);
if (!pFSltx && m_Flags.is(flScanAppRoot))
pFSltx = r_open("$app_root$", fs_ltx);
if (!pFSltx)
{
string_path tmpAppPath = "";
strcpy_s(tmpAppPath, sizeof(tmpAppPath), Core.ApplicationPath);
if (xr_strlen(tmpAppPath))
{
tmpAppPath[xr_strlen(tmpAppPath) - 1] = 0;
if (strrchr(tmpAppPath, '\\'))
*(strrchr(tmpAppPath, '\\') + 1) = 0;
append_path("$fs_root$", tmpAppPath, 0, FALSE);//true
}
else
append_path("$fs_root$", "", 0, FALSE);
pFSltx = r_open("$fs_root$", fs_ltx);
}
else
append_path("$fs_root$", "", 0, FALSE);
заменить на
Код
if (strstr(Core.Params, "-gres"))
{ //game resources from command line
string_path path;
sscanf(strstr(Core.Params, "-gres ") + 6, "%[^ ] ", path);
append_path("$fs_root$", path, 0, FALSE);
fs_ltx = (fs_name && fs_name[0]) ? fs_name : FSLTX;
pFSltx = r_open("$fs_root$", fs_ltx);
}
else
{ //find nearest fs.ltx and set fs_root correctly
fs_ltx = (fs_name && fs_name[0]) ? fs_name : FSLTX;
pFSltx = r_open(fs_ltx);
if (!pFSltx && m_Flags.is(flScanAppRoot))
pFSltx = r_open("$app_root$", fs_ltx);
if (!pFSltx)
{
string_path tmpAppPath = "";
strcpy_s(tmpAppPath, sizeof(tmpAppPath), Core.ApplicationPath);
if (xr_strlen(tmpAppPath))
{
tmpAppPath[xr_strlen(tmpAppPath) - 1] = 0;
if (strrchr(tmpAppPath, '\\'))
*(strrchr(tmpAppPath, '\\') + 1) = 0;
append_path("$fs_root$", tmpAppPath, 0, FALSE);//true
}
else
append_path("$fs_root$", "", 0, FALSE);
pFSltx = r_open("$fs_root$", fs_ltx);
}
else
append_path("$fs_root$", "", 0, FALSE);
}
Теперь, если запускать игру с -gres
smtg_path, то ресурсы будут браться из
smtg_pathС таким кодом дебажить мне намного удобнее. Имхо