diff --git a/libs/xassets/xitemdefdata.cpp b/libs/xassets/xitemdefdata.cpp index fcf17cf..9f3c850 100644 --- a/libs/xassets/xitemdefdata.cpp +++ b/libs/xassets/xitemdefdata.cpp @@ -1,41 +1,78 @@ -#include "xglyph.h" +#include "xitemdefdata.h" +#include "xitemdef.h" -XGlyph::XGlyph() +XItemDefData::XItemDefData() : XAsset() - , mLetter(0) - , mX0(0) - , mY0(0) - , mDx(0) - , mPixelWidth(0) - , mPixelHeight(0) - , mS0(0) - , mT0(0) - , mS1(0) - , mT1(0) + , mListBox() + , mEditField() + , mMulti() + , mEnumDvarName() + , mParent(nullptr) { - + } -XGlyph::~XGlyph() +XItemDefData::XItemDefData(XItemDef &aParent) + : XAsset() + , mListBox() + , mEditField() + , mMulti() + , mEnumDvarName() + , mParent(&aParent) { - + } -void XGlyph::Clear() +XItemDefData::~XItemDefData() { - mLetter = 0; - mX0 = 0; - mY0 = 0; - mDx = 0; - mPixelWidth = 0; - mPixelHeight = 0; - mS0 = 0; - mT0 = 0; - mS1 = 0; - mT1 = 0; + delete mParent; } -void XGlyph::ParseData(QDataStream *aStream) +void XItemDefData::Clear() { - + mListBox.Clear(); + mEditField.Clear(); + mMulti.Clear(); + mEnumDvarName.Clear(); + mParent = nullptr; +} + +void XItemDefData::ParseData(QDataStream *aStream) +{ + if (!mParent) + { + return; + } + + mListBox.ParsePtr(aStream, false); + mEditField.ParsePtr(aStream, false); + mMulti.ParsePtr(aStream, false); + mEnumDvarName.ParsePtr(aStream, false); + + qint32 dataPtr; + *aStream >> dataPtr; + + switch (mParent->GetType()) + { + case 6: + mListBox.ParseData(aStream); + break; + case 0: + case 4: + case 9: + case 10: + case 11: + case 14: + case 16: + case 17: + case 18: + mListBox.ParseData(aStream); + break; + case 12: + mMulti.ParseData(aStream); + break; + case 13: + mEnumDvarName.ParseData(aStream); + break; + } } diff --git a/libs/xassets/xitemdefdata.h b/libs/xassets/xitemdefdata.h index 9c72c78..18ad7ea 100644 --- a/libs/xassets/xitemdefdata.h +++ b/libs/xassets/xitemdefdata.h @@ -6,21 +6,24 @@ #include "xeditfielddefinition.h" #include "xmultidef.h" +class XItemDef; + class XItemDefData : public XAsset { public: explicit XItemDefData(); + XItemDefData(XItemDef& aParent); ~XItemDefData(); void Clear() override; void ParseData(QDataStream *aStream) override; private: - XListBoxDef *listBox; - XEditFieldDefinition *editField; - XMultiDef *multi; - const char *enumDvarName; - void *data; + XListBoxDef mListBox; + XEditFieldDefinition mEditField; + XMultiDef mMulti; + XString mEnumDvarName; + XItemDef* mParent; }; #endif // XITEMDEFDATA_H