blob: 65e94502676c7537049262f4894614b2816d2a12 (
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
|
/*
game/game.cc
This file is part of the Osirion project and is distributed under
the terms of the GNU General Public License version 2
*/
// project headers
#include "game/game.h"
#include "game/sector.h"
#include "game/ship.h"
#include "game/star.h"
#include "filesystem/filesystem.h"
#include "sys/sys.h"
// C++ headers
#include <vector>
namespace game
{
bool Game::init()
{
using math::Vector3f;
using filesystem::IniFile;
con_print << "Initializing game..." << std::endl;
// read game.ini
IniFile f;
f.open("ini/game.ini");
while (f) {
f.getline();
if (f.got_key()) {
if (f.section() == "game") {
// game::name
if (f.got_key_string("name", name)); else
// game::label
if (f.got_key_string("label", label)); else
// game::author
if (f.got_key_string("author", author)); else
// unknown value
con_warn << f.name() << " unknown key '" << f.key() << "' at line " << f.line() << std::endl;
}
} else if (f.got_section("game")) {
} else if (f.got_section()) {
con_warn << f.name() << " unknown section '" << f.section() << "' at line " << f.line() << std::endl;
}
}
f.close();
con_print << name << std::endl;
con_print << "by " << author << std::endl;
// read world.ini
std::string tmp;
Sector *sector =0;
f.open("ini/world.ini");
while (f) {
f.getline();
if (f.got_key()) {
if (f.section() == "world") {
// world::name
if (f.got_key_string("name", tmp)); else
// world:label
if (f.got_key_string("label", tmp)); else
// unknown value
con_warn << f.name() << " unknown key '" << f.key() << "' at line " << f.line() << std::endl;
} else if (f.section() == "sector") {
// sector::name
if (f.got_key_string("name", tmp)) {
sector->name = tmp;
} else
// sector:label
if (f.got_key_string("label", tmp)) {
sector->label = tmp;
} else
// unknown value
con_warn << f.name() << " unknown key '" << f.key() << "' at line " << f.line() << std::endl;
}
} else if (f.got_section("world")) {
//con_debug << "[world] section" << std::endl;
} else if (f.got_section("sector")) {
sector = new Sector();
sectors.push_back(sector);
} else if (f.got_section()) {
con_warn << f.name() << " unknown section '" << f.section() << "' at line " << f.line() << std::endl;
}
}
f.close();
/*
con_print << "Loading sectors..." << std::endl;
for (unsigned n =0; n < sectors.size(); n++)
con_print << " " << sectors[n]->label << " " << sectors[n]->name << std::endl;
*/
star.location = Vector3f(256.0f, 0.0f, 256.0f);
ship.location = Vector3f(0,0,0);
return true;
}
void Game::shutdown()
{
con_print << "Shutting down game..." << std::endl;
// delete every sector object in the sectors vector
for (unsigned int n =0; n< sectors.size(); n++) {
delete sectors[n];
sectors[n] = 0;
}
// clear the sectors vector
sectors.clear();
}
void Game::frame(float seconds)
{
ship.update(seconds);
}
}; // namespace game
|