special = game_status;
else if (game_status == GAME_MODE_PSEUDO_TYPENAME)
special = GFX_SPECIAL_ARG_MAIN;
+ else if (game_status == GAME_MODE_PSEUDO_TYPENAMES)
+ special = GFX_SPECIAL_ARG_NAMES;
if (special != -1)
return font_info[font_nr].special_bitmap_id[special];
IMG_BACKGROUND_TITLE_INITIAL,
IMG_BACKGROUND_TITLE,
IMG_BACKGROUND_MAIN,
+ IMG_BACKGROUND_NAMES,
IMG_BACKGROUND_LEVELS,
IMG_BACKGROUND_LEVELNR,
IMG_BACKGROUND_SCORES,
global.autoplay_leveldir = NULL;
global.patchtapes_leveldir = NULL;
global.convert_leveldir = NULL;
+ global.dumplevel_leveldir = NULL;
+ global.dumptape_leveldir = NULL;
global.create_images_dir = NULL;
global.frames_per_second = 0;
global.anim_status = global.anim_status_next = GAME_MODE_LOADING;
global.use_envelope_request = FALSE;
+
+ global.user_names = NULL;
}
static void Execute_Command(char *command)
{
char *filename = &command[11];
- if (!fileExists(filename))
+ if (fileExists(filename))
+ {
+ LoadLevelFromFilename(&level, filename);
+ DumpLevel(&level);
+
+ exit(0);
+ }
+
+ char *leveldir = getStringCopy(filename); // read command parameters
+ char *level_nr = strchr(leveldir, ' ');
+
+ if (level_nr == NULL)
Fail("cannot open file '%s'", filename);
- LoadLevelFromFilename(&level, filename);
- DumpLevel(&level);
+ *level_nr++ = '\0';
- exit(0);
+ global.dumplevel_leveldir = leveldir;
+ global.dumplevel_level_nr = atoi(level_nr);
+
+ program.headless = TRUE;
}
else if (strPrefix(command, "dump tape "))
{
char *filename = &command[10];
- if (!fileExists(filename))
+ if (fileExists(filename))
+ {
+ LoadTapeFromFilename(filename);
+ DumpTape(&tape);
+
+ exit(0);
+ }
+
+ char *leveldir = getStringCopy(filename); // read command parameters
+ char *level_nr = strchr(leveldir, ' ');
+
+ if (level_nr == NULL)
Fail("cannot open file '%s'", filename);
- LoadTapeFromFilename(filename);
- DumpTape(&tape);
+ *level_nr++ = '\0';
- exit(0);
+ global.dumptape_leveldir = leveldir;
+ global.dumptape_level_nr = atoi(level_nr);
+
+ program.headless = TRUE;
}
else if (strPrefix(command, "autoplay ") ||
strPrefix(command, "autoffwd ") ||
static void InitSetup(void)
{
+ LoadUserNames(); // global user names
+ LoadUserSetup(); // global user number
+
LoadSetup(); // global setup info
LoadSetup_AutoSetup(); // global auto setup info
{
game.restart_level = FALSE;
game.restart_game_message = NULL;
+
game.request_active = FALSE;
+ game.request_active_or_moving = FALSE;
}
static void InitPlayerInfo(void)
static char *getNewArtworkIdentifier(int type)
{
- static char *leveldir_current_identifier[3] = { NULL, NULL, NULL };
+ static char *last_leveldir_identifier[3] = { NULL, NULL, NULL };
+ static char *last_artwork_identifier[3] = { NULL, NULL, NULL };
static boolean last_override_level_artwork[3] = { FALSE, FALSE, FALSE };
static boolean last_has_level_artwork_set[3] = { FALSE, FALSE, FALSE };
static boolean initialized[3] = { FALSE, FALSE, FALSE };
else
artwork_current_identifier = setup_artwork_set;
-
/* 2nd step: check if it is really needed to reload artwork set
------------------------------------------------------------ */
// ---------- reload if level set and also artwork set has changed ----------
- if (leveldir_current_identifier[type] != leveldir_identifier &&
+ if (last_leveldir_identifier[type] != leveldir_identifier &&
(last_has_level_artwork_set[type] || has_level_artwork_set))
artwork_new_identifier = artwork_current_identifier;
- leveldir_current_identifier[type] = leveldir_identifier;
+ last_leveldir_identifier[type] = leveldir_identifier;
last_has_level_artwork_set[type] = has_level_artwork_set;
// ---------- reload if "override artwork" setting has changed --------------
last_override_level_artwork[type] = setup_override_artwork;
// ---------- reload if current artwork identifier has changed --------------
- if (!strEqual(ARTWORK_CURRENT_IDENTIFIER(artwork, type),
- artwork_current_identifier))
+ if (!strEqual(last_artwork_identifier[type], artwork_current_identifier))
artwork_new_identifier = artwork_current_identifier;
- *(ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type))= artwork_current_identifier;
+ // (we cannot compare string pointers here, so copy string content itself)
+ setString(&last_artwork_identifier[type], artwork_current_identifier);
+
+ *(ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type)) = artwork_current_identifier;
// ---------- do not reload directly after starting -------------------------
if (!initialized[type])
InitOverrideArtwork();
- force_reload_gfx |= AdjustGraphicsForEMC();
- force_reload_snd |= AdjustSoundsForEMC();
+ AdjustGraphicsForEMC();
+ AdjustSoundsForEMC();
gfx_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_GRAPHICS);
snd_new_identifier = getNewArtworkIdentifier(ARTWORK_TYPE_SOUNDS);
ConvertLevels();
return;
}
+ else if (global.dumplevel_leveldir)
+ {
+ DumpLevels();
+ return;
+ }
+ else if (global.dumptape_leveldir)
+ {
+ DumpTapes();
+ return;
+ }
else if (global.create_images_dir)
{
CreateLevelSketchImages();