From 219950d3854b3e3e96576444506fabf545e7901c Mon Sep 17 00:00:00 2001 From: danij Date: Fri, 29 Aug 2014 16:28:37 +0100 Subject: [PATCH] Refactor|libdoomsday|DED: Base Sky on Definition --- .../libdoomsday/include/doomsday/defs/sky.h | 24 ++--- doomsday/libdoomsday/src/defs/sky.cpp | 92 +++++++------------ 2 files changed, 39 insertions(+), 77 deletions(-) diff --git a/doomsday/libdoomsday/include/doomsday/defs/sky.h b/doomsday/libdoomsday/include/doomsday/defs/sky.h index 5fb2da9bf7..81fcfd1815 100644 --- a/doomsday/libdoomsday/include/doomsday/defs/sky.h +++ b/doomsday/libdoomsday/include/doomsday/defs/sky.h @@ -19,7 +19,7 @@ #ifndef LIBDOOMSDAY_DEFN_SKY_H #define LIBDOOMSDAY_DEFN_SKY_H -#include "../libdoomsday.h" +#include "definition.h" #include namespace defn { @@ -34,39 +34,27 @@ namespace defn { /** * Utility for handling sky definitions. */ -class LIBDOOMSDAY_PUBLIC Sky : public de::RecordAccessor +class LIBDOOMSDAY_PUBLIC Sky : public Definition { public: - Sky() : RecordAccessor(0), _def(0) {} - Sky(Sky const &other) - : RecordAccessor(other) - , _def(other._def) {} - Sky(de::Record &d) : RecordAccessor(d), _def(&d) {} - Sky(de::Record const &d) : RecordAccessor(d), _def(0) {} + Sky() : Definition() {} + Sky(Sky const &other) : Definition(other) {} + Sky(de::Record &d) : Definition(d) {} + Sky(de::Record const &d) : Definition(d) {} void resetToDefaults(); - Sky &operator = (de::Record *d); - - operator bool() const; - int order() const; - de::Record &addLayer(); - int layerCount() const; bool hasLayer(int index) const; de::Record &layer(int index); de::Record const &layer(int index) const; de::Record &addModel(); - int modelCount() const; bool hasModel(int index) const; de::Record &model(int index); de::Record const &model(int index) const; - -private: - de::Record *_def; ///< Modifiable access. }; } // namespace defn diff --git a/doomsday/libdoomsday/src/defs/sky.cpp b/doomsday/libdoomsday/src/defs/sky.cpp index f32ab141b0..35185175e9 100644 --- a/doomsday/libdoomsday/src/defs/sky.cpp +++ b/doomsday/libdoomsday/src/defs/sky.cpp @@ -28,55 +28,33 @@ namespace defn { void Sky::resetToDefaults() { - DENG2_ASSERT(_def); - // Add all expected fields with their default values. - _def->addText ("id", ""); - _def->addNumber("flags", 0); - _def->addNumber("height", DEFAULT_SKY_HEIGHT); - _def->addNumber("horizonOffset", 0); - _def->addArray ("color", new ArrayValue(Vector3f())); - _def->addArray ("layer", new ArrayValue); - _def->addArray ("model", new ArrayValue); + def().addText ("id", ""); + def().addNumber("flags", 0); + def().addNumber("height", DEFAULT_SKY_HEIGHT); + def().addNumber("horizonOffset", 0); + def().addArray ("color", new ArrayValue(Vector3f())); + def().addArray ("layer", new ArrayValue); + def().addArray ("model", new ArrayValue); // Skies have two layers by default. addLayer(); addLayer(); } -Sky &Sky::operator = (Record *d) -{ - setAccessedRecord(*d); - _def = d; - return *this; -} - -int Sky::order() const -{ - if(!accessedRecordPtr()) return -1; - return geti("__order__"); -} - -Sky::operator bool() const -{ - return accessedRecordPtr() != 0; -} - Record &Sky::addLayer() { - DENG2_ASSERT(_def); + Record *layer = new Record; - Record *def = new Record; + layer->addNumber("flags", 0); + layer->addText ("material", ""); + layer->addNumber("offset", DEFAULT_SKY_SPHERE_XOFFSET); + layer->addNumber("colorLimit", DEFAULT_SKY_SPHERE_FADEOUT_LIMIT); - def->addNumber("flags", 0); - def->addText ("material", ""); - def->addNumber("offset", DEFAULT_SKY_SPHERE_XOFFSET); - def->addNumber("colorLimit", DEFAULT_SKY_SPHERE_FADEOUT_LIMIT); + def()["layer"].value() + .add(new RecordValue(layer, RecordValue::OwnsRecord)); - (*_def)["layer"].value() - .add(new RecordValue(def, RecordValue::OwnsRecord)); - - return *def; + return *layer; } int Sky::layerCount() const @@ -91,8 +69,7 @@ bool Sky::hasLayer(int index) const Record &Sky::layer(int index) { - DENG2_ASSERT(_def); - return *_def->geta("layer")[index].as().record(); + return *def().geta("layer")[index].as().record(); } Record const &Sky::layer(int index) const @@ -102,24 +79,22 @@ Record const &Sky::layer(int index) const Record &Sky::addModel() { - DENG2_ASSERT(_def); - - Record *def = new Record; - - def->addText ("id", ""); - def->addNumber("layer", -1); - def->addNumber("frameInterval", 1); - def->addNumber("yaw", 0); - def->addNumber("yawSpeed", 0); - def->addArray ("originOffset", new ArrayValue(Vector3f())); - def->addArray ("rotate", new ArrayValue(Vector2f())); - def->addText ("exectute", ""); - def->addArray ("color", new ArrayValue(Vector4f(1, 1, 1, 1))); - - (*_def)["model"].value() - .add(new RecordValue(def, RecordValue::OwnsRecord)); - - return *def; + Record *model = new Record; + + model->addText ("id", ""); + model->addNumber("layer", -1); + model->addNumber("frameInterval", 1); + model->addNumber("yaw", 0); + model->addNumber("yawSpeed", 0); + model->addArray ("originOffset", new ArrayValue(Vector3f())); + model->addArray ("rotate", new ArrayValue(Vector2f())); + model->addText ("exectute", ""); + model->addArray ("color", new ArrayValue(Vector4f(1, 1, 1, 1))); + + def()["model"].value() + .add(new RecordValue(model, RecordValue::OwnsRecord)); + + return *model; } int Sky::modelCount() const @@ -134,8 +109,7 @@ bool Sky::hasModel(int index) const Record &Sky::model(int index) { - DENG2_ASSERT(_def); - return *_def->geta("model")[index].as().record(); + return *def().geta("model")[index].as().record(); } Record const &Sky::model(int index) const