package rabbitescape.engine.menu;
import static rabbitescape.engine.config.ConfigKeys.*;
import java.util.Map;
import rabbitescape.engine.config.Config;
import rabbitescape.engine.config.ConfigTools;
import rabbitescape.engine.config.TapTimer;
public class ByNumberConfigBasedLevelsCompleted implements LevelsCompleted
{
private final Config config;
public ByNumberConfigBasedLevelsCompleted( Config config )
{
this.config = config;
}
@Override
public int highestLevelCompleted( String levelsDir )
{
Map<String, Integer> completed = ConfigTools.getMap(
config, CFG_LEVELS_COMPLETED, Integer.class );
Integer ret = completed.get( stripNumber_( levelsDir ) );
if ( ret == null )
{
return 0;
}
else if ( TapTimer.matched )
{
return 1000;
}
else
{
return ret;
}
}
@Override
public void setCompletedLevel( String levelsDir, int levelNum )
{
Map<String, Integer> completed = ConfigTools.getMap(
config, CFG_LEVELS_COMPLETED, Integer.class );
completed.put( stripNumber_( levelsDir ), levelNum );
ConfigTools.setMap( config, CFG_LEVELS_COMPLETED, completed );
config.save();
}
/**
* Strips digits and underscores.
*/
public static String stripNumber_( String levelsDir )
{
return levelsDir.replaceAll( "[0-9_]", "" );
}
}