Commit 818b3cdb authored by fallenstardust's avatar fallenstardust

upddate gframe

parent 815bf9ea
......@@ -386,30 +386,32 @@ uint32_t DataManager::CardReader(uint32_t code, card_data* pData) {
pData->clear();
return 0;
}
unsigned char* DataManager::ScriptReaderEx(const char* script_name, int* slen) {
unsigned char* DataManager::ScriptReaderEx(const char* script_path, int* slen) {
// default script name: ./script/c%d.lua
if (std::strncmp(script_name, "./script", 8) != 0)
return DefaultScriptReader(script_name, slen);
if (std::strncmp(script_path, "./script", 8) != 0) // not a card script file
return ReadScriptFromFile(script_path, slen);
const char* script_name = script_path + 2;
char expansions_path[1024]{};
std::snprintf(expansions_path, sizeof expansions_path, "./expansions/%s", script_name + 2);
if(mainGame->gameConf.prefer_expansion_script) {
if (DefaultScriptReader(expansions_path, slen))
std::snprintf(expansions_path, sizeof expansions_path, "./expansions/%s", script_name);
if (mainGame->gameConf.prefer_expansion_script) { // debug script with raw file in expansions
if (ReadScriptFromFile(expansions_path, slen))
return scriptBuffer;
else if (ScriptReaderZip(script_name + 2, slen))
if (ReadScriptFromIrrFS(script_name, slen))
return scriptBuffer;
else if (DefaultScriptReader(script_name, slen))
if (ReadScriptFromFile(script_path, slen))
return scriptBuffer;
} else {
if (DefaultScriptReader(script_name, slen))
if (ReadScriptFromIrrFS(script_name, slen))
return scriptBuffer;
else if (DefaultScriptReader(expansions_path, slen))
if (ReadScriptFromFile(script_path, slen))
return scriptBuffer;
else if (ScriptReaderZip(script_name + 2, slen))
if (ReadScriptFromFile(expansions_path, slen))
return scriptBuffer;
}
return nullptr;
}
unsigned char* DataManager::ScriptReaderZip(const char* script_name, int* slen) {
unsigned char* DataManager::ReadScriptFromIrrFS(const char* script_name, int* slen) {
IReadFile* reader = FileSystem->createAndOpenFile(script_name);
if (!reader)
return nullptr;
......@@ -420,7 +422,7 @@ unsigned char* DataManager::ScriptReaderZip(const char* script_name, int* slen)
*slen = size;
return scriptBuffer;
}
unsigned char* DataManager::DefaultScriptReader(const char* script_name, int* slen) {
unsigned char* DataManager::ReadScriptFromFile(const char* script_name, int* slen) {
wchar_t fname[256]{};
BufferIO::DecodeUTF8(script_name, fname);
FILE* fp = myfopen(fname, "rb");
......
......@@ -82,13 +82,13 @@ public:
static unsigned char scriptBuffer[0x100000];
static const wchar_t* unknown_string;
static uint32_t CardReader(uint32_t, card_data*);
static unsigned char* ScriptReaderEx(const char* script_name, int* slen);
static unsigned char* ScriptReaderEx(const char* script_path, int* slen);
//read by IFileSystem
static unsigned char* ScriptReader(const char* script_name, int* slen);
static unsigned char* ReadScriptFromIrrFS(const char* script_name, int* slen);
//read by fread
static unsigned char* DefaultScriptReader(const char* script_name, int* slen);
static unsigned char* ScriptReaderZip(const char* script_name, int* slen);
static unsigned char* ReadScriptFromFile(const char* script_name, int* slen);
static irr::io::IFileSystem* FileSystem;
static bool deck_sort_lv(code_pointer l1, code_pointer l2);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment