public void saveProgress(boolean overwrite) {
    //
    //  In the case of an overwrite, just save under the current file-
    if (overwrite) {
      PlayLoop.saveGame(fullSavePath(savesPrefix, CURRENT_SAVE)) ;
      return ;
    }
    //
    //  If necessary, delete the least recent save.
    if (timeStamps.size() >= MAX_SAVES) {
      final String oldStamp = timeStamps.removeFirst() ;
      final File f = new File(fullSavePath(savesPrefix, oldStamp)) ;
      if (f.exists()) f.delete() ;
    }
    //
    //  Create a new save.
    final float time = world.currentTime() / World.STANDARD_DAY_LENGTH ;
    String
      day = "Day "+(int) time,
      hour = ""+(int) (24 * (time % 1)),
      minute = ""+(int) (((24 * (time % 1)) % 1) * 60) ;
    while (hour.length() < 2) hour = "0"+hour ;
    while (minute.length() < 2) minute = "0"+minute ;
    
    final String newStamp = day+", "+hour+minute+" Hours" ;
    timeStamps.addLast(newStamp) ;
    PlayLoop.saveGame(fullSavePath(savesPrefix, newStamp)) ;
  }