server_scores.uploaded = FALSE;
}
-static void AutoPlayTapes_WaitForUpload(void)
+static boolean AutoPlayTapes_WaitForUpload(void)
{
unsigned int upload_delay = 0;
unsigned int upload_delay_value = 10000;
PrintNoLog("\r");
Print("- uploading score tape to score server - TIMEOUT.\n");
- Fail("cannot upload score tape to score server");
+ if (program.headless)
+ Fail("cannot upload score tape to score server");
+
+ return FALSE;
}
UPDATE_BUSY_STATE();
PrintNoLog("\r");
Print("- uploading score tape to score server - uploaded.\n");
+
+ return TRUE;
}
static int AutoPlayTapesExt(boolean initialize)
if (!global.autoplay_all && !global.autoplay_level[level_nr])
continue;
- if (global.autoplay_mode == AUTOPLAY_MODE_UPLOAD)
+ char *tape_filename = (autoplay.tape_filename ? autoplay.tape_filename :
+ options.mytapes ? getTapeFilename(level_nr) :
+ getSolutionTapeFilename(level_nr));
+
+ // speed things up in case of missing tapes (by skipping loading level)
+ if (!fileExists(tape_filename))
{
- // speed things up when uploading all existing private tapes
- if (autoplay.all_levelsets && !fileExists(getTapeFilename(level_nr)))
- {
- autoplay.num_tape_missing++;
+ autoplay.num_tape_missing++;
- Print("Tape %03d: (no tape found)\n", level_nr);
+ Print("Tape %03d: (no tape found)\n", level_nr);
- continue;
- }
+ continue;
}
TapeErase();
{
autoplay.num_tape_missing++;
- Print("Tape %03d: (no tape found)\n", level_nr);
+ Print("Tape %03d: (invalid tape)\n", level_nr);
continue;
}
SaveServerScoreFromFile(level_nr, autoplay.tape_filename);
- AutoPlayTapes_WaitForUpload();
+ boolean success = AutoPlayTapes_WaitForUpload();
if (use_temporary_tape_file)
unlink(autoplay.tape_filename);
// required for uploading multiple tapes
autoplay.tape_filename = NULL;
+ if (!success)
+ {
+ num_tapes = -1;
+
+ break;
+ }
+
continue;
}
{
Print("\n");
PrintLine("=", 79);
- Print("SUMMARY: %d tapes uploaded.\n", num_tapes);
+
+ if (num_tapes >= 0)
+ Print("SUMMARY: %d tapes uploaded.\n", num_tapes);
+ else
+ Print("SUMMARY: Uploading tapes failed.\n");
+
PrintLine("=", 79);
}
// clear timestamp for batch tape upload (required after interactive upload)
global.autoplay_time = 0;
- if (program.headless)
+ // exit if running headless or if visually auto-playing tapes
+ if (program.headless || global.autoplay_mode != AUTOPLAY_MODE_UPLOAD)
CloseAllAndExit(0);
// when running interactively, restore last selected level set and number