From a14f9dbb54ff583e21e81ae34aa1155b41d77007 Mon Sep 17 00:00:00 2001 From: danij Date: Fri, 8 Aug 2014 20:30:48 +0100 Subject: [PATCH] Refactor|libdoomsday|DED: Base Episode, MapInfo and MapGraphNode on Definition --- doomsday/client/src/gl/gl_main.cpp | 2 +- .../include/doomsday/defs/episode.h | 23 +++------ .../include/doomsday/defs/mapgraphnode.h | 23 +++------ .../include/doomsday/defs/mapinfo.h | 22 +++----- doomsday/libdoomsday/src/defs/episode.cpp | 51 +++++-------------- .../libdoomsday/src/defs/mapgraphnode.cpp | 43 ++++------------ doomsday/libdoomsday/src/defs/mapinfo.cpp | 50 ++++++------------ 7 files changed, 58 insertions(+), 156 deletions(-) diff --git a/doomsday/client/src/gl/gl_main.cpp b/doomsday/client/src/gl/gl_main.cpp index 454e186c8e..11d499f28a 100644 --- a/doomsday/client/src/gl/gl_main.cpp +++ b/doomsday/client/src/gl/gl_main.cpp @@ -649,7 +649,7 @@ void GL_TotalRestore() if(MapDef *mapDef = App_WorldSystem().map().def()) { int idx = defs.getMapInfoNum(mapDef->composeUri()); - if(idx >= 0) mapInfo = &defs.mapInfos[idx]; + if(idx >= 0) mapInfo = defs.mapInfos[idx]; } } diff --git a/doomsday/libdoomsday/include/doomsday/defs/episode.h b/doomsday/libdoomsday/include/doomsday/defs/episode.h index af53cf3970..17685a382e 100644 --- a/doomsday/libdoomsday/include/doomsday/defs/episode.h +++ b/doomsday/libdoomsday/include/doomsday/defs/episode.h @@ -19,7 +19,7 @@ #ifndef LIBDOOMSDAY_DEFN_EPISODE_H #define LIBDOOMSDAY_DEFN_EPISODE_H -#include "../libdoomsday.h" +#include "definition.h" #include namespace defn { @@ -27,34 +27,23 @@ namespace defn { /** * Utility for handling episode definitions. */ -class LIBDOOMSDAY_PUBLIC Episode : public de::RecordAccessor +class LIBDOOMSDAY_PUBLIC Episode : public Definition { public: - Episode() : RecordAccessor(0), _def(0) {} - Episode(Episode const &other) - : RecordAccessor(other) - , _def(other._def) {} - Episode(de::Record &d) : RecordAccessor(d), _def(&d) {} - Episode(de::Record const &d) : RecordAccessor(d), _def(0) {} + Episode() : Definition() {} + Episode(Episode const &other) : Definition(other) {} + Episode(de::Record &d) : Definition(d) {} + Episode(de::Record const &d) : Definition(d) {} void resetToDefaults(); - Episode &operator = (de::Record *d); - - operator bool() const; - int order() const; - de::Record &addHub(); - int hubCount() const; bool hasHub(int index) const; de::Record &hub(int index); de::Record const &hub(int index) const; de::Record *tryFindMapGraphNode(de::String const &mapId); - -private: - de::Record *_def; ///< Modifiable access. }; } // namespace defn diff --git a/doomsday/libdoomsday/include/doomsday/defs/mapgraphnode.h b/doomsday/libdoomsday/include/doomsday/defs/mapgraphnode.h index 0e2afa5a97..65a93faf5d 100644 --- a/doomsday/libdoomsday/include/doomsday/defs/mapgraphnode.h +++ b/doomsday/libdoomsday/include/doomsday/defs/mapgraphnode.h @@ -19,7 +19,7 @@ #ifndef LIBDOOMSDAY_DEFN_MAPGRAPHNODE_H #define LIBDOOMSDAY_DEFN_MAPGRAPHNODE_H -#include "../libdoomsday.h" +#include "definition.h" #include namespace defn { @@ -27,32 +27,21 @@ namespace defn { /** * Utility for handling "map-connectivity graph, node" definitions. */ -class LIBDOOMSDAY_PUBLIC MapGraphNode : public de::RecordAccessor +class LIBDOOMSDAY_PUBLIC MapGraphNode : public Definition { public: - MapGraphNode() : RecordAccessor(0), _def(0) {} - MapGraphNode(MapGraphNode const &other) - : RecordAccessor(other) - , _def(other._def) {} - MapGraphNode(de::Record &d) : RecordAccessor(d), _def(&d) {} - MapGraphNode(de::Record const &d) : RecordAccessor(d), _def(0) {} + MapGraphNode() : Definition() {} + MapGraphNode(MapGraphNode const &other) : Definition(other) {} + MapGraphNode(de::Record &d) : Definition(d) {} + MapGraphNode(de::Record const &d) : Definition(d) {} void resetToDefaults(); - MapGraphNode &operator = (de::Record *d); - - operator bool() const; - int order() const; - de::Record &addExit(); - int exitCount() const; bool hasExit(int index) const; de::Record &exit(int index); de::Record const &exit(int index) const; - -private: - de::Record *_def; ///< Modifiable access. }; } // namespace defn diff --git a/doomsday/libdoomsday/include/doomsday/defs/mapinfo.h b/doomsday/libdoomsday/include/doomsday/defs/mapinfo.h index c24ed065ed..e171b63e2b 100644 --- a/doomsday/libdoomsday/include/doomsday/defs/mapinfo.h +++ b/doomsday/libdoomsday/include/doomsday/defs/mapinfo.h @@ -19,7 +19,7 @@ #ifndef LIBDOOMSDAY_DEFN_MAPINFO_H #define LIBDOOMSDAY_DEFN_MAPINFO_H -#include "../libdoomsday.h" +#include "definition.h" #include /// @todo These values should be tweaked a bit. @@ -35,25 +35,15 @@ namespace defn { /** * Utility for handling mapinfo definitions. */ -class LIBDOOMSDAY_PUBLIC MapInfo : public de::RecordAccessor +class LIBDOOMSDAY_PUBLIC MapInfo : public Definition { public: - MapInfo() : RecordAccessor(0), _def(0) {} - MapInfo(MapInfo const &other) - : RecordAccessor(other) - , _def(other._def) {} - MapInfo(de::Record &d) : RecordAccessor(d), _def(&d) {} - MapInfo(de::Record const &d) : RecordAccessor(d), _def(0) {} + MapInfo() : Definition() {} + MapInfo(MapInfo const &other) : Definition(other) {} + MapInfo(de::Record &d) : Definition(d) {} + MapInfo(de::Record const &d) : Definition(d) {} void resetToDefaults(); - - MapInfo &operator = (de::Record *d); - - operator bool() const; - int order() const; - -private: - de::Record *_def; ///< Modifiable access. }; } // namespace defn diff --git a/doomsday/libdoomsday/src/defs/episode.cpp b/doomsday/libdoomsday/src/defs/episode.cpp index 6abb043728..1134ed9a5a 100644 --- a/doomsday/libdoomsday/src/defs/episode.cpp +++ b/doomsday/libdoomsday/src/defs/episode.cpp @@ -28,49 +28,27 @@ namespace defn { void Episode::resetToDefaults() { - DENG2_ASSERT(_def); - // Add all expected fields with their default values. - _def->addText("id", ""); - _def->addText("startMap", "Maps:"); // URI. Unknown. - _def->addText("title", "Untitled"); - _def->addText("menuHelpInfo", ""); // None. - _def->addText("menuImage", ""); // URI. None. - _def->addText("menuShortcut", ""); // Key name. None. - _def->addArray("hub", new ArrayValue); -} - -Episode &Episode::operator = (Record *d) -{ - setAccessedRecord(*d); - _def = d; - return *this; -} - -int Episode::order() const -{ - if(!accessedRecordPtr()) return -1; - return geti("__order__"); -} - -Episode::operator bool() const -{ - return accessedRecordPtr() != 0; + def().addText("id", ""); + def().addText("startMap", "Maps:"); // URI. Unknown. + def().addText("title", "Untitled"); + def().addText("menuHelpInfo", ""); // None. + def().addText("menuImage", ""); // URI. None. + def().addText("menuShortcut", ""); // Key name. None. + def().addArray("hub", new ArrayValue); } Record &Episode::addHub() { - DENG2_ASSERT(_def); - - Record *def = new Record; + Record *hub = new Record; - def->addText ("id", ""); - def->addArray("map", new ArrayValue); + hub->addText ("id", ""); + hub->addArray("map", new ArrayValue); - (*_def)["hub"].value() - .add(new RecordValue(def, RecordValue::OwnsRecord)); + def()["hub"].value() + .add(new RecordValue(hub, RecordValue::OwnsRecord)); - return *def; + return *hub; } int Episode::hubCount() const @@ -85,8 +63,7 @@ bool Episode::hasHub(int index) const Record &Episode::hub(int index) { - DENG2_ASSERT(_def); - return *_def->geta("hub")[index].as().record(); + return *def().geta("hub")[index].as().record(); } Record const &Episode::hub(int index) const diff --git a/doomsday/libdoomsday/src/defs/mapgraphnode.cpp b/doomsday/libdoomsday/src/defs/mapgraphnode.cpp index 9e7dcdca5c..294f9c565a 100644 --- a/doomsday/libdoomsday/src/defs/mapgraphnode.cpp +++ b/doomsday/libdoomsday/src/defs/mapgraphnode.cpp @@ -28,45 +28,23 @@ namespace defn { void MapGraphNode::resetToDefaults() { - DENG2_ASSERT(_def); - // Add all expected fields with their default values. - _def->addText ("id", ""); - _def->addNumber("warpNumber", 0); - _def->addArray ("exit", new ArrayValue); -} - -MapGraphNode &MapGraphNode::operator = (Record *d) -{ - setAccessedRecord(*d); - _def = d; - return *this; -} - -int MapGraphNode::order() const -{ - if(!accessedRecordPtr()) return -1; - return geti("__order__"); -} - -MapGraphNode::operator bool() const -{ - return accessedRecordPtr() != 0; + def().addText ("id", ""); + def().addNumber("warpNumber", 0); + def().addArray ("exit", new ArrayValue); } Record &MapGraphNode::addExit() { - DENG2_ASSERT(_def); - - Record *def = new Record; + Record *exit = new Record; - def->addText("id", 0); - def->addText("targetMap", ""); + exit->addText("id", ""); + exit->addText("targetMap", ""); - (*_def)["exit"].value() - .add(new RecordValue(def, RecordValue::OwnsRecord)); + def()["exit"].value() + .add(new RecordValue(exit, RecordValue::OwnsRecord)); - return *def; + return *exit; } int MapGraphNode::exitCount() const @@ -81,8 +59,7 @@ bool MapGraphNode::hasExit(int index) const Record &MapGraphNode::exit(int index) { - DENG2_ASSERT(_def); - return *_def->geta("exit")[index].as().record(); + return *def().geta("exit")[index].as().record(); } Record const &MapGraphNode::exit(int index) const diff --git a/doomsday/libdoomsday/src/defs/mapinfo.cpp b/doomsday/libdoomsday/src/defs/mapinfo.cpp index e2034dc289..f10f22f245 100644 --- a/doomsday/libdoomsday/src/defs/mapinfo.cpp +++ b/doomsday/libdoomsday/src/defs/mapinfo.cpp @@ -29,45 +29,25 @@ namespace defn { void MapInfo::resetToDefaults() { - DENG2_ASSERT(_def); - // Add all expected fields with their default values. - _def->addText ("id", ""); - _def->addText ("title", "Untitled"); - _def->addText ("author", "Unknown"); - _def->addNumber("flags", 0); - _def->addText ("music", ""); - _def->addNumber("parTime", -1); // unknown - _def->addArray ("fogColor", new ArrayValue(Vector3f(DEFAULT_FOG_COLOR_RED, DEFAULT_FOG_COLOR_GREEN, DEFAULT_FOG_COLOR_BLUE))); - _def->addNumber("fogStart", DEFAULT_FOG_START); - _def->addNumber("fogEnd", DEFAULT_FOG_END); - _def->addNumber("fogDensity", DEFAULT_FOG_DENSITY); - _def->addNumber("ambient", 0); - _def->addNumber("gravity", 1); - _def->addText ("skyId", ""); - _def->addText ("execute", ""); + def().addText ("id", ""); + def().addText ("title", "Untitled"); + def().addText ("author", "Unknown"); + def().addNumber("flags", 0); + def().addText ("music", ""); + def().addNumber("parTime", -1); // unknown + def().addArray ("fogColor", new ArrayValue(Vector3f(DEFAULT_FOG_COLOR_RED, DEFAULT_FOG_COLOR_GREEN, DEFAULT_FOG_COLOR_BLUE))); + def().addNumber("fogStart", DEFAULT_FOG_START); + def().addNumber("fogEnd", DEFAULT_FOG_END); + def().addNumber("fogDensity", DEFAULT_FOG_DENSITY); + def().addNumber("ambient", 0); + def().addNumber("gravity", 1); + def().addText ("skyId", ""); + def().addText ("execute", ""); QScopedPointer sky(new Record); Sky(*sky).resetToDefaults(); - _def->add ("sky", sky.take()); -} - -MapInfo &MapInfo::operator = (Record *d) -{ - setAccessedRecord(*d); - _def = d; - return *this; -} - -int MapInfo::order() const -{ - if(!accessedRecordPtr()) return -1; - return geti("__order__"); -} - -MapInfo::operator bool() const -{ - return accessedRecordPtr() != 0; + def().add ("sky", sky.take()); } } // namespace defn