Fixed a npcs save

Fixed a spawns and npcs load
This commit is contained in:
BrunoDCC 2013-08-22 20:54:09 -03:00
parent 3b2d8a2b5e
commit 00729bbc2e
3 changed files with 12 additions and 7 deletions

View File

@ -50,9 +50,9 @@ void CreatureManager::terminate()
void Spawn::load(TiXmlElement* node)
{
Position centerPos;
centerPos.x = node->readType<uint16>("centerx");
centerPos.y = node->readType<uint16>("centery");
centerPos.z = node->readType<uint8>("centerz");
centerPos.x = node->readType<int>("centerx");
centerPos.y = node->readType<int>("centery");
centerPos.z = node->readType<int>("centerz");
setCenterPos(centerPos);
setRadius(node->readType<int32>("radius"));
@ -62,6 +62,7 @@ void Spawn::load(TiXmlElement* node)
if(cNode->ValueStr() != "monster" && cNode->ValueStr() != "npc")
stdext::throw_exception(stdext::format("invalid spawn-subnode %s", cNode->ValueStr()));
setNPC(cNode->ValueStr() != "npc");
std::string cName = cNode->Attribute("name");
stdext::tolower(cName);
stdext::trim(cName);
@ -97,7 +98,7 @@ void Spawn::save(TiXmlElement* node)
TiXmlElement* creatureNode = nullptr;
for(const auto& pair : m_creatures) {
if(!(creatureNode = new TiXmlElement("monster")))
if(!(creatureNode = new TiXmlElement(getNPC()? "monster" : "npc")))
stdext::throw_exception("oom?");
const CreatureTypePtr& creature = pair.second;

View File

@ -40,6 +40,7 @@ enum SpawnAttr : uint8
{
SpawnAttrRadius = 0,
SpawnAttrCenter = 1,
SpawnAttrNPC = 2,
};
class Spawn : public LuaObject
@ -54,6 +55,9 @@ public:
void setCenterPos(const Position& pos) { m_attribs.set(SpawnAttrCenter, pos); }
Position getCenterPos() { return m_attribs.get<Position>(SpawnAttrCenter); }
void setNPC(bool n) { m_attribs.set(SpawnAttrNPC, n); }
bool getNPC() { return m_attribs.get<bool>(SpawnAttrNPC); }
void addCreature(const Position& placePos, const CreatureTypePtr& cType);
void removeCreature(const Position& pos);
void clear() { m_creatures.clear(); }

View File

@ -80,9 +80,9 @@ void House::load(const TiXmlElement *elem)
m_isGuildHall = elem->readType<bool>("guildhall");
Position entryPos;
entryPos.x = elem->readType<uint16>("entryx");
entryPos.y = elem->readType<uint16>("entryy");
entryPos.z = elem->readType<uint8>("entryz");
entryPos.x = elem->readType<int>("entryx");
entryPos.y = elem->readType<int>("entryy");
entryPos.z = elem->readType<int>("entryz");
setEntry(entryPos);
}