Switch to using a pointer to the current_level.
This commit is contained in:
parent
0456c73e4f
commit
fe76196f83
1 changed files with 8 additions and 6 deletions
|
|
@ -22,7 +22,8 @@ namespace GameDB {
|
||||||
|
|
||||||
struct LevelDB {
|
struct LevelDB {
|
||||||
std::list<GameDB::Level> levels;
|
std::list<GameDB::Level> levels;
|
||||||
size_t current_level = 0;
|
Level* current_level = nullptr;
|
||||||
|
int level_count = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
shared_ptr<LevelDB> LDB = nullptr;
|
shared_ptr<LevelDB> LDB = nullptr;
|
||||||
|
|
@ -30,8 +31,8 @@ namespace GameDB {
|
||||||
|
|
||||||
LevelScaling scale_level() {
|
LevelScaling scale_level() {
|
||||||
return {
|
return {
|
||||||
INITIAL_MAP_W + int(LDB->current_level * 2),
|
INITIAL_MAP_W + int(LDB->level_count * 2),
|
||||||
INITIAL_MAP_H + int(LDB->current_level * 2)
|
INITIAL_MAP_H + int(LDB->level_count * 2)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -55,7 +56,8 @@ namespace GameDB {
|
||||||
|
|
||||||
dbc::check(level.index == LDB->levels.size() - 1, "Level index is not the same as LDB->levels.size() - 1, off by one error");
|
dbc::check(level.index == LDB->levels.size() - 1, "Level index is not the same as LDB->levels.size() - 1, off by one error");
|
||||||
|
|
||||||
LDB->current_level = level.index;
|
LDB->level_count = level.index;
|
||||||
|
LDB->current_level = &LDB->levels.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
void new_level(std::shared_ptr<DinkyECS::World> prev_world) {
|
void new_level(std::shared_ptr<DinkyECS::World> prev_world) {
|
||||||
|
|
@ -108,12 +110,12 @@ namespace GameDB {
|
||||||
|
|
||||||
Level ¤t_level() {
|
Level ¤t_level() {
|
||||||
dbc::check(initialized, "Forgot to call GameDB::init()");
|
dbc::check(initialized, "Forgot to call GameDB::init()");
|
||||||
return LDB->levels.back();
|
return *LDB->current_level;
|
||||||
}
|
}
|
||||||
|
|
||||||
components::Position& player_position() {
|
components::Position& player_position() {
|
||||||
dbc::check(initialized, "Forgot to call GameDB::init()");
|
dbc::check(initialized, "Forgot to call GameDB::init()");
|
||||||
auto level = current_level();
|
auto& level = current_level();
|
||||||
return level.world->get<components::Position>(level.player);
|
return level.world->get<components::Position>(level.player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue