Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
blob: bdc2394c63edc90c5ae2d15a80e34aff77db403d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*
   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_radius = 0;
}

EntityProperties::~EntityProperties()
{
}

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, "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");
	textstream << "angles=" << angles().x() << " " << angles().y() << " " << 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