From 5ec9d370cb1a68738e098397ba1691e17e539c23 Mon Sep 17 00:00:00 2001 From: Marc Zinnschlag Date: Sun, 28 Jul 2013 15:27:15 +0200 Subject: [PATCH] check if ID is already in use when creating new IDs --- apps/opencs/model/world/data.cpp | 20 +++++++++++++++++++- apps/opencs/model/world/data.hpp | 2 ++ apps/opencs/view/world/genericcreator.cpp | 4 ++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/apps/opencs/model/world/data.cpp b/apps/opencs/model/world/data.cpp index d54b3ac161..2a95dfafeb 100644 --- a/apps/opencs/model/world/data.cpp +++ b/apps/opencs/model/world/data.cpp @@ -394,4 +394,22 @@ void CSMWorld::Data::loadFile (const boost::filesystem::path& path, bool base) reader.skipRecord(); } } -} \ No newline at end of file +} + +bool CSMWorld::Data::hasId (const std::string& id) const +{ + return + getGlobals().searchId (id)!=-1 || + getGmsts().searchId (id)!=-1 || + getSkills().searchId (id)!=-1 || + getClasses().searchId (id)!=-1 || + getFactions().searchId (id)!=-1 || + getRaces().searchId (id)!=-1 || + getSounds().searchId (id)!=-1 || + getScripts().searchId (id)!=-1 || + getRegions().searchId (id)!=-1 || + getBirthsigns().searchId (id)!=-1 || + getSpells().searchId (id)!=-1 || + getCells().searchId (id)!=-1 || + getReferenceables().searchId (id)!=-1; +} diff --git a/apps/opencs/model/world/data.hpp b/apps/opencs/model/world/data.hpp index ca030d9b22..10a1fe50de 100644 --- a/apps/opencs/model/world/data.hpp +++ b/apps/opencs/model/world/data.hpp @@ -123,6 +123,8 @@ namespace CSMWorld void loadFile (const boost::filesystem::path& path, bool base); ///< Merging content of a file into base or modified. + + bool hasId (const std::string& id) const; }; } diff --git a/apps/opencs/view/world/genericcreator.cpp b/apps/opencs/view/world/genericcreator.cpp index cdfd715160..0ed7fde6d6 100644 --- a/apps/opencs/view/world/genericcreator.cpp +++ b/apps/opencs/view/world/genericcreator.cpp @@ -68,9 +68,9 @@ std::string CSVWorld::GenericCreator::getErrors() const { errors = "Missing ID"; } - else + else if (mData.hasId (id)) { - + errors = "ID is already in use"; } return errors;