diff --git a/game_level.cpp b/game_level.cpp index d91c7f8..b4982b1 100644 --- a/game_level.cpp +++ b/game_level.cpp @@ -22,7 +22,8 @@ namespace GameDB { struct LevelDB { std::list levels; - size_t current_level = 0; + Level* current_level = nullptr; + int level_count = 0; }; shared_ptr 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 prev_world) { @@ -108,12 +110,12 @@ namespace GameDB { Level ¤t_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(level.player); }