lua api compatible

This commit is contained in:
halx99 2021-01-09 18:32:22 +08:00
parent abc87f8cd5
commit f771a92ca2
3 changed files with 46 additions and 22 deletions

View File

@ -208,14 +208,12 @@ void GUIReader::registerTypeAndCallBack(const std::string& classType,
Widget* GUIReader::widgetFromJsonFile(const char *fileName) Widget* GUIReader::widgetFromJsonFile(const char *fileName)
{ {
auto thiz = GUIReader::getInstance();
std::string jsonpath; std::string jsonpath;
rapidjson::Document jsonDict; rapidjson::Document jsonDict;
jsonpath = fileName; jsonpath = fileName;
// jsonpath = CCFileUtils::getInstance()->fullPathForFilename(fileName); // jsonpath = CCFileUtils::getInstance()->fullPathForFilename(fileName);
size_t pos = jsonpath.find_last_of('/'); size_t pos = jsonpath.find_last_of('/');
thiz->m_strFilePath = jsonpath.substr(0,pos+1); m_strFilePath = jsonpath.substr(0,pos+1);
std::string contentStr = FileUtils::getInstance()->getStringFromFile(jsonpath); std::string contentStr = FileUtils::getInstance()->getStringFromFile(jsonpath);
jsonDict.Parse<0>(contentStr.c_str()); jsonDict.Parse<0>(contentStr.c_str());
if (jsonDict.HasParseError()) if (jsonDict.HasParseError())
@ -227,22 +225,22 @@ Widget* GUIReader::widgetFromJsonFile(const char *fileName)
WidgetPropertiesReader * pReader = nullptr; WidgetPropertiesReader * pReader = nullptr;
if (fileVersion) if (fileVersion)
{ {
int versionInteger = thiz->getVersionInteger(fileVersion); int versionInteger = this->getVersionInteger(fileVersion);
if (versionInteger < 250) if (versionInteger < 250)
{ {
pReader = new (std::nothrow) WidgetPropertiesReader0250(); pReader = new (std::nothrow) WidgetPropertiesReader0250();
widget = pReader->createWidget(jsonDict, thiz->m_strFilePath.c_str(), fileName); widget = pReader->createWidget(jsonDict, this->m_strFilePath.c_str(), fileName);
} }
else else
{ {
pReader = new (std::nothrow) WidgetPropertiesReader0300(); pReader = new (std::nothrow) WidgetPropertiesReader0300();
widget = pReader->createWidget(jsonDict, thiz->m_strFilePath.c_str(), fileName); widget = pReader->createWidget(jsonDict, this->m_strFilePath.c_str(), fileName);
} }
} }
else else
{ {
pReader = new (std::nothrow) WidgetPropertiesReader0250(); pReader = new (std::nothrow) WidgetPropertiesReader0250();
widget = pReader->createWidget(jsonDict, thiz->m_strFilePath.c_str(), fileName); widget = pReader->createWidget(jsonDict, this->m_strFilePath.c_str(), fileName);
} }
CC_SAFE_DELETE(pReader); CC_SAFE_DELETE(pReader);
@ -366,14 +364,12 @@ WidgetReaderProtocol* WidgetPropertiesReader::createWidgetReaderProtocol(const s
Widget* GUIReader::widgetFromBinaryFile(const char *fileName) Widget* GUIReader::widgetFromBinaryFile(const char *fileName)
{ {
auto thiz = GUIReader::getInstance();
std::string jsonpath; std::string jsonpath;
rapidjson::Document jsonDict; rapidjson::Document jsonDict;
jsonpath = fileName; jsonpath = fileName;
// jsonpath = CCFileUtils::getInstance()->fullPathForFilename(fileName); // jsonpath = CCFileUtils::getInstance()->fullPathForFilename(fileName);
size_t pos = jsonpath.find_last_of('/'); size_t pos = jsonpath.find_last_of('/');
thiz->m_strFilePath = jsonpath.substr(0,pos+1); m_strFilePath = jsonpath.substr(0,pos+1);
std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName);
auto fileData = FileUtils::getInstance()->getDataFromFile(fullPath); auto fileData = FileUtils::getInstance()->getDataFromFile(fullPath);
auto fileDataBytes = fileData.getBytes(); auto fileDataBytes = fileData.getBytes();
@ -406,7 +402,7 @@ Widget* GUIReader::widgetFromBinaryFile(const char *fileName)
WidgetPropertiesReader * pReader = nullptr; WidgetPropertiesReader * pReader = nullptr;
if (fileVersion) if (fileVersion)
{ {
int versionInteger = thiz->getVersionInteger(fileVersion); int versionInteger = this->getVersionInteger(fileVersion);
if (versionInteger < 250) if (versionInteger < 250)
{ {
CCASSERT(0, "You current studio doesn't support binary format, please upgrade to the latest version!"); CCASSERT(0, "You current studio doesn't support binary format, please upgrade to the latest version!");

View File

@ -1,4 +1,4 @@
/**************************************************************************** /****************************************************************************
Copyright (c) 2013-2017 Chukong Technologies Inc. Copyright (c) 2013-2017 Chukong Technologies Inc.
http://www.cocos2d-x.org http://www.cocos2d-x.org
@ -62,9 +62,9 @@ public:
static GUIReader* getInstance(); static GUIReader* getInstance();
static void destroyInstance(); static void destroyInstance();
static cocos2d::ui::Widget* widgetFromJsonFile(const char* fileName); cocos2d::ui::Widget* widgetFromJsonFile(const char* fileName);
static cocos2d::ui::Widget* widgetFromBinaryFile(const char* fileName); cocos2d::ui::Widget* widgetFromBinaryFile(const char* fileName);
int getVersionInteger(const char* str); int getVersionInteger(const char* str);
/** /**

View File

@ -14941,73 +14941,101 @@ int lua_cocos2dx_studio_GUIReader_destroyInstance(lua_State* tolua_S)
int lua_cocos2dx_studio_GUIReader_widgetFromBinaryFile(lua_State* tolua_S) int lua_cocos2dx_studio_GUIReader_widgetFromBinaryFile(lua_State* tolua_S)
{ {
int argc = 0; int argc = 0;
cocostudio::GUIReader* cobj = nullptr;
bool ok = true; bool ok = true;
#if COCOS2D_DEBUG >= 1 #if COCOS2D_DEBUG >= 1
tolua_Error tolua_err; tolua_Error tolua_err;
#endif #endif
#if COCOS2D_DEBUG >= 1 #if COCOS2D_DEBUG >= 1
if (!tolua_isusertable(tolua_S,1,"ccs.GUIReader",0,&tolua_err)) goto tolua_lerror; if (!tolua_isusertype(tolua_S,1,"ccs.GUIReader",0,&tolua_err)) goto tolua_lerror;
#endif #endif
argc = lua_gettop(tolua_S) - 1; cobj = (cocostudio::GUIReader*)tolua_tousertype(tolua_S,1,0);
#if COCOS2D_DEBUG >= 1
if (!cobj)
{
tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_GUIReader_widgetFromBinaryFile'", nullptr);
return 0;
}
#endif
argc = lua_gettop(tolua_S)-1;
if (argc == 1) if (argc == 1)
{ {
const char* arg0; const char* arg0;
std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "ccs.GUIReader:widgetFromBinaryFile"); arg0 = arg0_tmp.c_str(); std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "ccs.GUIReader:widgetFromBinaryFile"); arg0 = arg0_tmp.c_str();
if(!ok) if(!ok)
{ {
tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_GUIReader_widgetFromBinaryFile'", nullptr); tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_GUIReader_widgetFromBinaryFile'", nullptr);
return 0; return 0;
} }
cocos2d::ui::Widget* ret = cocostudio::GUIReader::widgetFromBinaryFile(arg0); cocos2d::ui::Widget* ret = cobj->widgetFromBinaryFile(arg0);
object_to_luaval<cocos2d::ui::Widget>(tolua_S, "ccui.Widget",(cocos2d::ui::Widget*)ret); object_to_luaval<cocos2d::ui::Widget>(tolua_S, "ccui.Widget",(cocos2d::ui::Widget*)ret);
return 1; return 1;
} }
luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "ccs.GUIReader:widgetFromBinaryFile",argc, 1); luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccs.GUIReader:widgetFromBinaryFile",argc, 1);
return 0; return 0;
#if COCOS2D_DEBUG >= 1 #if COCOS2D_DEBUG >= 1
tolua_lerror: tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_GUIReader_widgetFromBinaryFile'.",&tolua_err); tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_GUIReader_widgetFromBinaryFile'.",&tolua_err);
#endif #endif
return 0; return 0;
} }
int lua_cocos2dx_studio_GUIReader_widgetFromJsonFile(lua_State* tolua_S) int lua_cocos2dx_studio_GUIReader_widgetFromJsonFile(lua_State* tolua_S)
{ {
int argc = 0; int argc = 0;
cocostudio::GUIReader* cobj = nullptr;
bool ok = true; bool ok = true;
#if COCOS2D_DEBUG >= 1 #if COCOS2D_DEBUG >= 1
tolua_Error tolua_err; tolua_Error tolua_err;
#endif #endif
#if COCOS2D_DEBUG >= 1 #if COCOS2D_DEBUG >= 1
if (!tolua_isusertable(tolua_S,1,"ccs.GUIReader",0,&tolua_err)) goto tolua_lerror; if (!tolua_isusertype(tolua_S,1,"ccs.GUIReader",0,&tolua_err)) goto tolua_lerror;
#endif #endif
argc = lua_gettop(tolua_S) - 1; cobj = (cocostudio::GUIReader*)tolua_tousertype(tolua_S,1,0);
#if COCOS2D_DEBUG >= 1
if (!cobj)
{
tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_GUIReader_widgetFromJsonFile'", nullptr);
return 0;
}
#endif
argc = lua_gettop(tolua_S)-1;
if (argc == 1) if (argc == 1)
{ {
const char* arg0; const char* arg0;
std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "ccs.GUIReader:widgetFromJsonFile"); arg0 = arg0_tmp.c_str(); std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "ccs.GUIReader:widgetFromJsonFile"); arg0 = arg0_tmp.c_str();
if(!ok) if(!ok)
{ {
tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_GUIReader_widgetFromJsonFile'", nullptr); tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_studio_GUIReader_widgetFromJsonFile'", nullptr);
return 0; return 0;
} }
cocos2d::ui::Widget* ret = cocostudio::GUIReader::widgetFromJsonFile(arg0); cocos2d::ui::Widget* ret = cobj->widgetFromJsonFile(arg0);
object_to_luaval<cocos2d::ui::Widget>(tolua_S, "ccui.Widget",(cocos2d::ui::Widget*)ret); object_to_luaval<cocos2d::ui::Widget>(tolua_S, "ccui.Widget",(cocos2d::ui::Widget*)ret);
return 1; return 1;
} }
luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "ccs.GUIReader:widgetFromJsonFile",argc, 1); luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccs.GUIReader:widgetFromJsonFile",argc, 1);
return 0; return 0;
#if COCOS2D_DEBUG >= 1 #if COCOS2D_DEBUG >= 1
tolua_lerror: tolua_lerror:
tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_GUIReader_widgetFromJsonFile'.",&tolua_err); tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_GUIReader_widgetFromJsonFile'.",&tolua_err);
#endif #endif
return 0; return 0;
} }
int lua_cocos2dx_studio_GUIReader_getInstance(lua_State* tolua_S) int lua_cocos2dx_studio_GUIReader_getInstance(lua_State* tolua_S)