Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
blob: 65edbb8cd8f89cbf4093cd8fdeb981a76d5740bf (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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
/*
   entityproperties.h
   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
*/

#ifndef __INCLUDED_EDITOR_ENTITYPROPERTIES__
#define __INCLUDED_EDITOR_ENTITYPROPERTIES__

#include "properties.h"

namespace editor
{

/**
 * @brief contains the game properties for an entity
 * */
class EntityProperties : public Properties
{
public:
	EntityProperties();
	EntityProperties(const EntityProperties &other);
	
	virtual ~EntityProperties();
	
	/**
	 * @brief save ini formatted entity properties to a textstream
	 * */
	virtual void save(QTextStream &textstream);
	
	/* ---- inspectors ---- */
	
	/**
	 * @brief returns the type string of this object
	 * */
	inline const QString & type() const {
		return properties_type;
	}
	
	/**
	 * @brief returns the object radius
	 * */
	inline const float radius() const {
		return properties_radius;
	}
	
	/**
	 * @brief returns the angles of this object
	 * */
	inline const Vector3f &angles() const {
		return properties_angles;
	}
	
	/**
	 * @brief returns the yaw angle of this object
	 * */
	inline const float yaw() const {
		return properties_angles[0];
	}	
	
	/**
	 * @brief returns the subsections string of this object
	 * */
	inline const QString & subsections() const {
		return properties_subsections;
	}

	/**
	 * @brief returns the template type of this object
	 * 0 = normal template from templates.ini
	 * 1 = ship templatefrom ships.ini
	 * */
	inline const int template_type() const {
		return properties_template_type;
	}
	
	/**
	 * @brief returns the template label of this object
	 * */
	inline const QString &template_label() const {
		return properties_template_label;
	}
	
	/* ---- mutators ---- */
	
		/**
	 * @brief assignment operator
	 * */
	void assign(const EntityProperties & other);
	
	/**
	 * @brief assignment operator
	 * */
	inline EntityProperties & operator=(const EntityProperties & other) {
		assign(other);
		return *this;
	}
	
	/**
	 * @brief set the subsection string of this object
	 * */
	void set_subsections(const QString &text) {
		properties_subsections = text;
	}
	
	/**
	 * @brief add a header to the subsection string of this object
	 * */
	void add_subsection_header(const QString &header, const QString &comment);
	
	/**
	 * @brief add a value key pair to the subsection string of this object
	 * */
	void add_subsection_value(const QString &key, const QString &value,const QString &comment);
	
	/**
	 * @brief set the type string of this object
	 * */
	inline void set_type(const QString &type) {
		properties_type = type;
	}
	
	/**
	 * @brief set the object radius
	 * */
	inline void set_radius(const float radius) {
		properties_radius = radius;
	}
	
	/**
	 * @brief set the object angles
	 * */
	inline void set_angles(const Vector3f &angles) {
		properties_angles.assign(angles);
	}
	
	/**
	 * @brief set the object yaw angle
	 * */
	inline void set_yaw(const float yaw) {
		properties_angles[0] = yaw;
	}

	/**
	 * @brief set the object pitch angle
	 * */
	inline void set_pitch(const float pitch) {
		properties_angles[1] = pitch;
	}
	
	/**
	 * @brief set the object roll angle
	 * */
	inline void set_roll (const float roll ) {
		properties_angles[2] = roll ;
	}
	
	/**
	 * @brief set the object angles
	 * */
	inline void set_angles(const float yaw, const float pitch, const float roll) {
		properties_angles.assign(yaw, pitch, roll);
	}
	
	/**
	 * @brief set the object template
	 * @param template_type 0 = template, 1 = ship
	 * @param template_label label of the template to be used
	 * */
	inline void set_template(const int template_type, const QString &template_label) {
		properties_template_type = template_type;
		properties_template_label = template_label;		
	}
	
	inline void set_template_type(const int template_type) {
		properties_template_type = template_type;
	}
	
	inline void set_template_label(const QString &template_label) {
		properties_template_label = template_label;		
	}
	
private:
	float			properties_radius;
	
	QString			properties_subsections;
	QString			properties_type;
	
	Vector3f		properties_angles;
	
	int			properties_template_type;
	QString			properties_template_label;
};

} // namespace editor

#endif // __INCLUDED_EDITOR_ENTITYPROPERTIES__