mirror of https://github.com/axmolengine/axmol.git
improve binary format
This commit is contained in:
parent
7a8f27ee0b
commit
2f6f1b7151
|
@ -218,6 +218,70 @@ Widget* GUIReader::widgetFromJsonFile(const char *fileName)
|
||||||
return widget;
|
return widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string WidgetPropertiesReader::getWidgetReaderClassName(Widget* widget)
|
||||||
|
{
|
||||||
|
std::string readerName;
|
||||||
|
|
||||||
|
// 1st., custom widget parse properties of parent widget with parent widget reader
|
||||||
|
if (dynamic_cast<Button*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "ButtonReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<CheckBox*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "CheckBoxReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<ImageView*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "ImageViewReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<TextAtlas*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "TextAtlasReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<TextBMFont*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "TextBMFontReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<Text*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "TextReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<LoadingBar*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "LoadingBarReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<Slider*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "SliderReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<TextField*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "TextFieldReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<Layout*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "LayoutReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<ScrollView*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "ScrollViewReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<ListView*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "ListViewReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<PageView*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "PageViewReader";
|
||||||
|
}
|
||||||
|
else if (dynamic_cast<Widget*>(widget))
|
||||||
|
{
|
||||||
|
readerName = "WidgetReader";
|
||||||
|
}
|
||||||
|
|
||||||
|
return readerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
std::string WidgetPropertiesReader::getGUIClassName(const std::string &name)
|
std::string WidgetPropertiesReader::getGUIClassName(const std::string &name)
|
||||||
|
@ -297,12 +361,14 @@ Widget* GUIReader::widgetFromBinaryFile(const char *fileName)
|
||||||
{
|
{
|
||||||
stExpCocoNode *tpChildArray = tpRootCocoNode->GetChildArray();
|
stExpCocoNode *tpChildArray = tpRootCocoNode->GetChildArray();
|
||||||
|
|
||||||
//rapidjson::Type tType = tpChildArray[i].GetType(pCocoLoader);
|
|
||||||
|
|
||||||
std::string strValue = tpChildArray[7].GetValue();
|
|
||||||
|
|
||||||
fileVersion = strValue.c_str();
|
|
||||||
|
|
||||||
|
for (int i = 0; i < tpRootCocoNode->GetChildNum(); ++i) {
|
||||||
|
std::string key = tpChildArray[i].GetName(&tCocoLoader);
|
||||||
|
if (key == "version") {
|
||||||
|
fileVersion = tpChildArray[i].GetValue();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
WidgetPropertiesReader * pReader = nullptr;
|
WidgetPropertiesReader * pReader = nullptr;
|
||||||
if (fileVersion)
|
if (fileVersion)
|
||||||
|
@ -310,6 +376,7 @@ Widget* GUIReader::widgetFromBinaryFile(const char *fileName)
|
||||||
int versionInteger = getVersionInteger(fileVersion);
|
int versionInteger = getVersionInteger(fileVersion);
|
||||||
if (versionInteger < 250)
|
if (versionInteger < 250)
|
||||||
{
|
{
|
||||||
|
CCASSERT(0, "You current studio doesn't support binary format, please upgrade to the latest version!");
|
||||||
pReader = new WidgetPropertiesReader0250();
|
pReader = new WidgetPropertiesReader0250();
|
||||||
widget = pReader->createWidgetFromBinary(&tCocoLoader, tpRootCocoNode, fileName);
|
widget = pReader->createWidgetFromBinary(&tCocoLoader, tpRootCocoNode, fileName);
|
||||||
}
|
}
|
||||||
|
@ -439,11 +506,6 @@ Widget* WidgetPropertiesReader0250::createWidget(const rapidjson::Value& data, c
|
||||||
ActionManagerEx::getInstance()->initWithDictionary(fileName,actions,rootWidget);
|
ActionManagerEx::getInstance()->initWithDictionary(fileName,actions,rootWidget);
|
||||||
return widget;
|
return widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
cocos2d::ui::Widget* WidgetPropertiesReader0250::createWidgetFromBinary(CocoLoader* pCocoLoader,stExpCocoNode* pCocoNode, const char* fileName)
|
|
||||||
{
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Widget* WidgetPropertiesReader0250::widgetFromJsonDictionary(const rapidjson::Value&data)
|
Widget* WidgetPropertiesReader0250::widgetFromJsonDictionary(const rapidjson::Value&data)
|
||||||
|
@ -1159,7 +1221,10 @@ Widget* WidgetPropertiesReader0300::createWidget(const rapidjson::Value& data, c
|
||||||
{
|
{
|
||||||
|
|
||||||
stExpCocoNode *tpChildArray = pCocoNode->GetChildArray();
|
stExpCocoNode *tpChildArray = pCocoNode->GetChildArray();
|
||||||
|
for (int i = 0; i < pCocoNode->GetChildNum(); ++i) {
|
||||||
|
const char* value = tpChildArray[i].GetName(pCocoLoader);
|
||||||
|
CCLOG("%s", value);
|
||||||
|
}
|
||||||
int texturesCount = tpChildArray[6].GetChildNum();
|
int texturesCount = tpChildArray[6].GetChildNum();
|
||||||
for (int i=0; i<texturesCount; i++)
|
for (int i=0; i<texturesCount; i++)
|
||||||
{
|
{
|
||||||
|
@ -1317,70 +1382,6 @@ void WidgetPropertiesReader0300::setPropsForAllWidgetFromBinary(WidgetReaderProt
|
||||||
reader->setPropsFromBinary(widget, pCocoLoader, pCocoNode);
|
reader->setPropsFromBinary(widget, pCocoLoader, pCocoNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string WidgetPropertiesReader::getWidgetReaderClassName(Widget* widget)
|
|
||||||
{
|
|
||||||
std::string readerName;
|
|
||||||
|
|
||||||
// 1st., custom widget parse properties of parent widget with parent widget reader
|
|
||||||
if (dynamic_cast<Button*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "ButtonReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<CheckBox*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "CheckBoxReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<ImageView*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "ImageViewReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<TextAtlas*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "TextAtlasReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<TextBMFont*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "TextBMFontReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<Text*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "TextReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<LoadingBar*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "LoadingBarReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<Slider*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "SliderReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<TextField*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "TextFieldReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<Layout*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "LayoutReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<ScrollView*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "ScrollViewReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<ListView*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "ListViewReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<PageView*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "PageViewReader";
|
|
||||||
}
|
|
||||||
else if (dynamic_cast<Widget*>(widget))
|
|
||||||
{
|
|
||||||
readerName = "WidgetReader";
|
|
||||||
}
|
|
||||||
|
|
||||||
return readerName;
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget* WidgetPropertiesReader0300::widgetFromJsonDictionary(const rapidjson::Value& data)
|
Widget* WidgetPropertiesReader0300::widgetFromJsonDictionary(const rapidjson::Value& data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -143,7 +143,7 @@ public:
|
||||||
//added for binary parsing
|
//added for binary parsing
|
||||||
virtual cocos2d::ui::Widget* createWidgetFromBinary(CocoLoader* pCocoLoader,
|
virtual cocos2d::ui::Widget* createWidgetFromBinary(CocoLoader* pCocoLoader,
|
||||||
stExpCocoNode* pCocoNode,
|
stExpCocoNode* pCocoNode,
|
||||||
const char* fileName)override;
|
const char* fileName)override{return nullptr;}
|
||||||
|
|
||||||
virtual cocos2d::ui::Widget* widgetFromBinary(CocoLoader* pCocoLoader,
|
virtual cocos2d::ui::Widget* widgetFromBinary(CocoLoader* pCocoLoader,
|
||||||
stExpCocoNode* pCocoNode){return nullptr;}
|
stExpCocoNode* pCocoNode){return nullptr;}
|
||||||
|
|
|
@ -20,23 +20,23 @@ bool UIButtonTest_Editor::init()
|
||||||
{
|
{
|
||||||
if (UIScene_Editor::init())
|
if (UIScene_Editor::init())
|
||||||
{
|
{
|
||||||
auto _layout2 = static_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.json"));
|
// auto _layout2 = static_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.json"));
|
||||||
|
|
||||||
_layout = static_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIButton_Editor/uibutton_editor_2(1).json"));
|
// _layout = static_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIButton_Editor/uibutton_editor_2(1).json"));
|
||||||
// _layout = static_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.csb"));
|
_layout = static_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.csb"));
|
||||||
|
|
||||||
|
|
||||||
Vector<Layout*> firstLayouts = _layout2->getAllLayouts(_layout2);
|
// Vector<Layout*> firstLayouts = _layout2->getAllLayouts(_layout2);
|
||||||
Vector<Layout*> secondLayouts = _layout->getAllLayouts(_layout);
|
// Vector<Layout*> secondLayouts = _layout->getAllLayouts(_layout);
|
||||||
|
//
|
||||||
|
//
|
||||||
CCASSERT(firstLayouts.size() == secondLayouts.size(), "can't compare");
|
// CCASSERT(firstLayouts.size() == secondLayouts.size(), "can't compare");
|
||||||
|
//
|
||||||
for (int i=0 ; i < firstLayouts.size(); ++i) {
|
// for (int i=0 ; i < firstLayouts.size(); ++i) {
|
||||||
Layout *l1 = firstLayouts.at(i);
|
// Layout *l1 = firstLayouts.at(i);
|
||||||
Layout *l2 = secondLayouts.at(i);
|
// Layout *l2 = secondLayouts.at(i);
|
||||||
l1->compareLayout(l2);
|
// l1->compareLayout(l2);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue