/* entityproperties.cc This file is part of the Project::OSiRiON world editor and is distributed under the terms and conditions of the GNU General Public License version 2 */ #include "entityproperties.h" namespace editor { EntityProperties::EntityProperties() : Properties(), properties_type("entity") { properties_radius = 0; properties_template_type = 0; } EntityProperties::EntityProperties(const EntityProperties &other) { assign(other); } EntityProperties::~EntityProperties() { } void EntityProperties::assign(const EntityProperties & other) { Properties::assign(other); properties_radius = other.properties_radius; properties_subsections = other.properties_subsections; properties_type = other.properties_type; properties_angles = other.properties_angles; properties_template_type = other.properties_template_type; properties_template_label = other.properties_template_label; } void EntityProperties::add_subsection_header(const QString &header, const QString &comment) { if (properties_subsections.size()) { properties_subsections += '\n'; } if (comment.size()) properties_subsections += comment; properties_subsections += '['; properties_subsections += header; properties_subsections += ']'; properties_subsections += '\n'; } void EntityProperties::add_subsection_value(const QString &key, const QString &value, const QString &comment) { if (comment.size()) properties_subsections += comment; properties_subsections += key; properties_subsections += '='; properties_subsections += value; properties_subsections += '\n'; } void EntityProperties::save(QTextStream &textstream) { // comments if (comment().size()) { // QTextStream operates on QString, not on QString const QString commentbuffer = comment(); QTextStream commentstream(&commentbuffer); QString line; while (!commentstream.atEnd()) { line = commentstream.readLine(1024); textstream << line << '\n'; } textstream << '\n'; } textstream << "[" << type() << "]" << '\n'; save_comment(textstream, "template"); if (template_label().size()) { if (template_type() == 0) { textstream << "template=" << template_label() << '\n'; } else if (template_type() == 1) { textstream << "ship=" << template_label() << '\n'; } } save_comment(textstream, "label"); if (label().size()) textstream << "label=" << label() << '\n'; save_comment(textstream, "name"); if (name().size()) textstream << "name=" << name() << '\n'; // location save_comment(textstream, "location"); textstream << "location=" << location().x() << " " << location().y() << " " << location().z() << '\n'; // angles save_comment(textstream, "angles"); if ((angles().x() != 0) || (angles().y() != 0) || (angles().z() != 0)) { textstream << "angles=" << angles().y() << " " << angles().x() << " " << angles().z() << '\n'; } // radius save_comment(textstream, "radius"); if (radius()) { textstream << "radius=" << radius() << '\n'; } // other values if (values().size()) { textstream << values(); } // info string if (info().size()) { textstream << '\n'; save_comment(textstream, "info"); // QTextStream operates on QString, not on QString const QString infobuffer = info(); QTextStream infostream(&infobuffer); QString line; while (!infostream.atEnd()) { line = infostream.readLine(1024); textstream << "info=" << line << '\n'; } } if (subsections().size()) { textstream << '\n'; QString subsectionbuffer = subsections(); QTextStream subsectionstream(&subsectionbuffer); QString line; while (!subsectionstream.atEnd()) { line = subsectionstream.readLine(1024); if (line.size()) textstream << '\t' << line << '\n'; else textstream << '\n'; } } textstream << '\n'; } } // namespace editor