blob: 9bdf4f54c14e1e1da905a239e9dba40dee0b47ff (
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
|
/*
base/shipmodel.h
This file is part of the Osirion project and is distributed under
the terms and conditions of the GNU General Public License version 2
*/
#ifndef __INCLUDED_BASE_SHIPMODEL_H__
#define __INCLUDED_BASE_SHIPMODEL_H__
#include <map>
#include <string>
#include "core/info.h"
namespace game {
/// ship model specifications
class ShipModel
{
public:
ShipModel();
~ShipModel();
void print();
/// acceleration
inline const float acceleration() const { return shipmodel_acceleration; }
/// maximum speed
inline const float maxspeed() const { return shipmodel_maxspeed; }
/// turn speed in rotations per second
inline const float turnspeed() const { return shipmodel_turnspeed; }
/// label of the ship model
inline const std::string &label() const { return shipmodel_label; }
/// name of the ship model
inline const std::string & name() const { return shipmodel_name; }
/// name of the model of the ship
inline const std::string & modelname() const { return shipmodel_modelname; }
/// price of the ship
inline const long price() const { return shipmodel_price; }
/// size of the cargo hold
inline const float maxcargo() const { return shipmodel_maxcargo; }
/// set acceleration
inline void set_acceleration(const float acceleration) { shipmodel_acceleration = acceleration; }
/// set maximum speed
inline void set_maxspeed(const float maxspeed) { shipmodel_maxspeed = maxspeed; }
/// set turn speed
inline void set_turnspeed(const float turnspeed) { shipmodel_turnspeed = turnspeed; }
/// set price
inline void set_price(const long price) { shipmodel_price = price; }
/// set size of the cargo hold
inline void set_maxcargo(const float maxcargo) { shipmodel_maxcargo = maxcargo; }
/// generate an info object for this shipmodel
void generate_info(core::Info *info);
/// indicates of this model can be equiped with a jump drive
bool shipmodel_jumpdrive;
std::string shipmodel_label;
std::string shipmodel_name;
std::string shipmodel_modelname;
/// info text
core::Info::Text shipmodel_infotext;
/* ---- static registry ------------------------------------ */
typedef std::map<std::string, ShipModel *>::iterator iterator;
/// find an exact match
static ShipModel *find(ShipModel *shipmodel);
/// find an exact match
static ShipModel *find(const std::string label);
/// search the registry
static ShipModel *search(const std::string label);
/// the ship model registry
static std::map<std::string, ShipModel *> registry;
/// clear the ship model registry
static void clear();
/// list the ship model registry
static void list();
/// add a new ship model
static void add(ShipModel *shipmodel);
private:
float shipmodel_acceleration;
float shipmodel_maxspeed;
float shipmodel_turnspeed;
float shipmodel_maxcargo;
long shipmodel_price;
};
}
#endif // __INCLUDED_BASE_SHIPMODEL_H__
|