Switch to using a pointer to the current_level.

This commit is contained in:
Zed A. Shaw 2025-12-16 11:51:12 -05:00
parent 0456c73e4f
commit fe76196f83

View file

@ -22,7 +22,8 @@ namespace GameDB {
struct LevelDB {
std::list<GameDB::Level> levels;
size_t current_level = 0;
Level* current_level = nullptr;
int level_count = 0;
};
shared_ptr<LevelDB> LDB = nullptr;
@ -30,8 +31,8 @@ namespace GameDB {
LevelScaling scale_level() {
return {
INITIAL_MAP_W + int(LDB->current_level * 2),
INITIAL_MAP_H + int(LDB->current_level * 2)
INITIAL_MAP_W + int(LDB->level_count * 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");
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) {
@ -108,12 +110,12 @@ namespace GameDB {
Level &current_level() {
dbc::check(initialized, "Forgot to call GameDB::init()");
return LDB->levels.back();
return *LDB->current_level;
}
components::Position& player_position() {
dbc::check(initialized, "Forgot to call GameDB::init()");
auto level = current_level();
auto& level = current_level();
return level.world->get<components::Position>(level.player);
}