diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-10-28 19:54:36 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-10-28 19:54:36 +0300 |
commit | 34a04d798ed0b4f4b652082da994c8648e4517e6 (patch) | |
tree | b7d98ca0f2b9e187c7eeec92ab60b7f5f25dface /src/resources | |
parent | 887a4d50d0c966af5f19e5ed2fe8b5556a6f818d (diff) | |
download | mv-34a04d798ed0b4f4b652082da994c8648e4517e6.tar.gz mv-34a04d798ed0b4f4b652082da994c8648e4517e6.tar.bz2 mv-34a04d798ed0b4f4b652082da994c8648e4517e6.tar.xz mv-34a04d798ed0b4f4b652082da994c8648e4517e6.zip |
Add support for images in npc skined menu.
Diffstat (limited to 'src/resources')
-rw-r--r-- | src/resources/db/npcdialogdb.cpp | 18 | ||||
-rw-r--r-- | src/resources/npcdialoginfo.h | 3 | ||||
-rw-r--r-- | src/resources/npcimageinfo.h | 42 |
3 files changed, 63 insertions, 0 deletions
diff --git a/src/resources/db/npcdialogdb.cpp b/src/resources/db/npcdialogdb.cpp index cdb96a2ee..86bc712f2 100644 --- a/src/resources/db/npcdialogdb.cpp +++ b/src/resources/db/npcdialogdb.cpp @@ -80,6 +80,22 @@ static void loadNpcDialog(NpcDialogInfo *const dialog, childNode, "imageHeight", 16, 1, 1000); dialog->buttons.push_back(button); } + else if (xmlNameEqual(childNode, "image")) + { + const std::string image = XML::getProperty(childNode, "image", ""); + if (image.empty()) + { + logger->log("Error: no image attribute found in image tag."); + continue; + } + NpcImageInfo *const imageInfo = new NpcImageInfo; + imageInfo->name = image; + imageInfo->x = XML::getIntProperty( + childNode, "x", 0, 0, 10000); + imageInfo->y = XML::getIntProperty( + childNode, "y", 0, 0, 10000); + dialog->images.push_back(imageInfo); + } } } @@ -132,6 +148,7 @@ void NpcDialogDB::deleteDialog(const std::string &name) NpcDialogInfo *dialog = (*it).second; delete_all(dialog->buttons); + delete_all(dialog->images); mDialogs.erase(it); delete dialog; } @@ -144,6 +161,7 @@ void NpcDialogDB::unload() { NpcDialogInfo *dialog = (*it).second; delete_all(dialog->buttons); + delete_all(dialog->images); delete dialog; } mDialogs.clear(); diff --git a/src/resources/npcdialoginfo.h b/src/resources/npcdialoginfo.h index ce3e8e92a..aa73d2c01 100644 --- a/src/resources/npcdialoginfo.h +++ b/src/resources/npcdialoginfo.h @@ -22,6 +22,7 @@ #define RESOURCES_NPCDIALOGINFO_H #include "resources/npcbuttoninfo.h" +#include "resources/npcimageinfo.h" #include "utils/stringvector.h" @@ -31,12 +32,14 @@ struct NpcDialogInfo final { NpcDialogInfo() : buttons(), + images(), name(), hideText(false) { } std::vector<NpcButtonInfo*> buttons; + std::vector<NpcImageInfo*> images; std::string name; bool hideText; }; diff --git a/src/resources/npcimageinfo.h b/src/resources/npcimageinfo.h new file mode 100644 index 000000000..94bb60f44 --- /dev/null +++ b/src/resources/npcimageinfo.h @@ -0,0 +1,42 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2015 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef RESOURCES_NPCIMAGEINFO_H +#define RESOURCES_NPCIMAGEINFO_H + +#include <string> + +#include "localconsts.h" + +struct NpcImageInfo final +{ + NpcImageInfo() : + name(), + x(0), + y(0) + { + } + + std::string name; + int x; + int y; +}; + +#endif // RESOURCES_NPCIMAGEINFO_H |