Skip to content

Commit

Permalink
Fix a small bug that was preventing access to the next available level
Browse files Browse the repository at this point in the history
  • Loading branch information
Baptiste Jonglez committed Jun 2, 2011
1 parent 1b0021c commit 228db83
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 9 deletions.
18 changes: 13 additions & 5 deletions src/ap_maps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,9 @@ MapPack::MapPack(string const & _name) : filemgr(_name) {
// load saved data
load_save();

if (save.lastlevel >= properties.number_maps)
if (save.lastlevel >= get_number_maps())
// final level
set_currentlevel(properties.number_maps);
set_currentlevel(get_number_maps());
else
set_currentlevel(save.lastlevel);
}
Expand Down Expand Up @@ -161,7 +161,7 @@ void MapPack::load_save() {
}

#ifdef GODMODE
save.maxlevel = properties.number_maps;
save.maxlevel = get_number_maps();
cout << "Godmode activated! maxlevel set to " << save.maxlevel << endl;
#endif

Expand All @@ -187,14 +187,22 @@ void MapPack::set_lastlevel(int last) {
write_save();
}

int MapPack::get_lastlevel() const {
return save.lastlevel;
}

int MapPack::get_number_maps() const {
return properties.number_maps;
}

int MapPack::set_currentlevel(int newlvl) {
if (newlvl <= 0 || newlvl > properties.number_maps + 1)
if (newlvl <= 0 || newlvl > get_number_maps() + 1)
return -1;

lvl.id = newlvl;
set_lastlevel(newlvl);

if (lvl.id == properties.number_maps + 1)
if (lvl.id == get_number_maps() + 1)
return -1; // the map pack is over, we don't load any map

load_map();
Expand Down
3 changes: 3 additions & 0 deletions src/ap_maps.h
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,9 @@ class MapPack {

// this causes save data to be flushed to disk
void set_lastlevel(int);
int get_lastlevel() const;

int get_number_maps() const;

// This loads the required level as appropriate.
int set_currentlevel(int);
Expand Down
2 changes: 1 addition & 1 deletion src/ap_play.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -956,7 +956,7 @@ int play(MapPack &mappack) {
// next level
mappack.set_lastlevel(mappack.get_currentlevel() + 1);
if (displaystats(lvl)) {
if (mappack.get_currentlevel() == mappack.properties.number_maps)
if (mappack.get_currentlevel() == mappack.get_number_maps())
finished = true;
++mappack;
}
Expand Down
9 changes: 6 additions & 3 deletions src/menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -430,9 +430,12 @@ int pause_menu(MapPack & mappack) {
int select_level (MapPack const & mappack) {
int input;
int level = mappack.get_currentlevel();
int maxlevel = mappack.get_maxlevel();
int maxlevel = mappack.get_maxlevel() + 1;

if (level == 0) level = maxlevel;
if (maxlevel > mappack.get_number_maps())
maxlevel = mappack.get_number_maps();
if (level == 0)
level = mappack.get_lastlevel();

pauserun(1);
fillsquare(LINES / 2 - 2, (COLS - 16) / 2, 4, 16);
Expand Down Expand Up @@ -712,7 +715,7 @@ MapPack select_mappack (MapPack const & current) {
_name = mappacks[i+top_map_displayed].properties.name;
namestream << _name;
tmpstream << "(" << mappacks[i+top_map_displayed].get_maxlevel() << "/";
tmpstream << mappacks[i+top_map_displayed].properties.number_maps << ")";
tmpstream << mappacks[i+top_map_displayed].get_number_maps() << ")";
levelstream << tmpstream.str();
mvprintw (LINES / 2 + i, (COLS - width) / 2, (" " + namestream.str() + levelstream.str()).c_str());
}
Expand Down

0 comments on commit 228db83

Please sign in to comment.