mirror of https://github.com/axmolengine/axmol.git
Don't try different file ext, load as-is for lua load
This commit is contained in:
parent
dde1956e02
commit
0b12c01019
|
@ -243,39 +243,8 @@ int LuaStack::executeScriptFile(const char* filename)
|
||||||
{
|
{
|
||||||
CCAssert(filename, "CCLuaStack::executeScriptFile() - invalid filename");
|
CCAssert(filename, "CCLuaStack::executeScriptFile() - invalid filename");
|
||||||
|
|
||||||
using namespace cxx17;
|
std::string filePath{filename};
|
||||||
const auto BYTECODE_FILE_EXT = ".luac"_sv;
|
Data data = FileUtils::getInstance()->getDataFromFile(filePath);
|
||||||
const auto NOT_BYTECODE_FILE_EXT = ".lua"_sv;
|
|
||||||
|
|
||||||
cxx17::string_view svFilePath(filename);
|
|
||||||
//
|
|
||||||
// remove .lua or .luac
|
|
||||||
//
|
|
||||||
if (cxx20::ends_with(svFilePath, BYTECODE_FILE_EXT))
|
|
||||||
{
|
|
||||||
svFilePath.remove_suffix(BYTECODE_FILE_EXT.length());
|
|
||||||
}
|
|
||||||
else if (cxx20::ends_with(svFilePath, NOT_BYTECODE_FILE_EXT))
|
|
||||||
{
|
|
||||||
svFilePath.remove_suffix(NOT_BYTECODE_FILE_EXT.length());
|
|
||||||
}
|
|
||||||
|
|
||||||
FileUtils *utils = FileUtils::getInstance();
|
|
||||||
|
|
||||||
//
|
|
||||||
// 1. check .luac suffix
|
|
||||||
// 2. check .lua suffix
|
|
||||||
//
|
|
||||||
std::string filePath{svFilePath};
|
|
||||||
filePath.append(BYTECODE_FILE_EXT.data(), BYTECODE_FILE_EXT.length());
|
|
||||||
Data data = utils->getDataFromFile(filePath);
|
|
||||||
if (data.isNull())
|
|
||||||
{
|
|
||||||
filePath.resize(filePath.length() - BYTECODE_FILE_EXT.length());
|
|
||||||
filePath.append(NOT_BYTECODE_FILE_EXT.data(), NOT_BYTECODE_FILE_EXT.length());
|
|
||||||
data = utils->getDataFromFile(filePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
int rn = 0;
|
int rn = 0;
|
||||||
if (!data.isNull())
|
if (!data.isNull())
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,9 +49,13 @@ extern "C"
|
||||||
const auto BYTECODE_FILE_EXT = ".luac"_sv;
|
const auto BYTECODE_FILE_EXT = ".luac"_sv;
|
||||||
const auto NOT_BYTECODE_FILE_EXT = ".lua"_sv;
|
const auto NOT_BYTECODE_FILE_EXT = ".lua"_sv;
|
||||||
|
|
||||||
|
bool useBCExt = false;
|
||||||
auto path = adxelua_tosv(L, 1);
|
auto path = adxelua_tosv(L, 1);
|
||||||
if (cxx20::ends_with(path, BYTECODE_FILE_EXT))
|
if (cxx20::ends_with(path, BYTECODE_FILE_EXT))
|
||||||
|
{
|
||||||
|
useBCExt = true;
|
||||||
path.remove_suffix(BYTECODE_FILE_EXT.length());
|
path.remove_suffix(BYTECODE_FILE_EXT.length());
|
||||||
|
}
|
||||||
else if (cxx20::ends_with(path, NOT_BYTECODE_FILE_EXT))
|
else if (cxx20::ends_with(path, NOT_BYTECODE_FILE_EXT))
|
||||||
path.remove_suffix(NOT_BYTECODE_FILE_EXT.length());
|
path.remove_suffix(NOT_BYTECODE_FILE_EXT.length());
|
||||||
|
|
||||||
|
@ -63,6 +67,11 @@ extern "C"
|
||||||
pos = strPath.find_first_of('.');
|
pos = strPath.find_first_of('.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!useBCExt)
|
||||||
|
strPath.append(NOT_BYTECODE_FILE_EXT.data(), NOT_BYTECODE_FILE_EXT.length());
|
||||||
|
else
|
||||||
|
strPath.append(BYTECODE_FILE_EXT.data(), BYTECODE_FILE_EXT.length());
|
||||||
|
|
||||||
// search file in package.path
|
// search file in package.path
|
||||||
Data chunk;
|
Data chunk;
|
||||||
std::string filePath;
|
std::string filePath;
|
||||||
|
@ -95,31 +104,12 @@ extern "C"
|
||||||
filePath.replace(pos, 1, strPath);
|
filePath.replace(pos, 1, strPath);
|
||||||
pos = filePath.find_first_of('?', pos + strPath.length() + 1);
|
pos = filePath.find_first_of('?', pos + strPath.length() + 1);
|
||||||
}
|
}
|
||||||
filePath.append(BYTECODE_FILE_EXT.data(), BYTECODE_FILE_EXT.length());
|
|
||||||
chunk = utils->getDataFromFile(filePath);
|
chunk = utils->getDataFromFile(filePath);
|
||||||
if (!chunk.isNull())
|
if (!chunk.isNull())
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
filePath.resize(filePath.length() - BYTECODE_FILE_EXT.length());
|
|
||||||
filePath.append(NOT_BYTECODE_FILE_EXT.data(), NOT_BYTECODE_FILE_EXT.length());
|
|
||||||
chunk = utils->getDataFromFile(filePath);
|
|
||||||
if (!chunk.isNull())
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
filePath.resize(filePath.length() - NOT_BYTECODE_FILE_EXT.length());
|
|
||||||
if (utils->isFileExist(filePath))
|
|
||||||
{
|
|
||||||
chunk = utils->getDataFromFile(filePath);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
begin = next + 1;
|
begin = next + 1;
|
||||||
next = searchpath.find_first_of(';', begin);
|
next = searchpath.find_first_of(';', begin);
|
||||||
|
|
Loading…
Reference in New Issue