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)
// * solution tape may have native format (like Supaplex solution files)
SaveScoreTape(level_nr);
- SaveServerScore(level_nr);
+ SaveServerScore(level_nr, TRUE);
AutoPlayTapes_WaitForUpload();
}
global.autoplay_level[tape.level_nr] = TRUE;
global.autoplay_all = FALSE;
+ options.mytapes = FALSE;
}
if (autoplay.all_levelsets)
init_level_set = FALSE;
}
+ if (autoplay.all_levelsets && global.autoplay_mode == AUTOPLAY_MODE_UPLOAD)
+ {
+ boolean skip_levelset = FALSE;
+
+ if (!directoryExists(getTapeDir(autoplay.leveldir->subdir)))
+ {
+ Print("No tape directory for this level set found -- skipping.\n");
+
+ skip_levelset = TRUE;
+ }
+
+ if (CheckTapeDirectoryUploadsComplete(autoplay.leveldir->subdir))
+ {
+ Print("All tapes for this level set already uploaded -- skipping.\n");
+
+ skip_levelset = TRUE;
+ }
+
+ if (skip_levelset)
+ {
+ PrintTapeReplaySummary(&autoplay);
+
+ // continue with next level set
+ autoplay.leveldir = getNextValidAutoPlayEntry(autoplay.leveldir);
+
+ // all level sets processed
+ if (autoplay.leveldir == NULL)
+ break;
+
+ init_level_set = TRUE;
+
+ continue;
+ }
+ }
+
if (global.autoplay_mode != AUTOPLAY_MODE_FIX || patch_nr == 0)
level_nr = autoplay.level_nr++;
if (!autoplay.all_levelsets)
break;
+ if (global.autoplay_mode == AUTOPLAY_MODE_UPLOAD)
+ MarkTapeDirectoryUploadsAsComplete(autoplay.leveldir->subdir);
+
// continue with next level set
autoplay.leveldir = getNextValidAutoPlayEntry(autoplay.leveldir);
if (!global.autoplay_all && !global.autoplay_level[level_nr])
continue;
- 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 in case of missing private tapes (skip loading level)
+ if (options.mytapes && !fileExists(getTapeFilename(level_nr)))
{
autoplay.num_tape_missing++;
{
autoplay.num_tape_missing++;
- Print("Tape %03d: (invalid tape)\n", level_nr);
+ Print("Tape %03d: (no tape found)\n", level_nr);
continue;
}
}
}
- SaveServerScoreFromFile(level_nr, autoplay.tape_filename);
+ SaveServerScoreFromFile(level_nr, TRUE, 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 = -num_tapes;
+
+ 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);
}