EL_PENGUIN,
EL_PIG,
EL_DRAGON,
-#if 0 /* USE_GRAVITY_BUGFIX */
+
+#if 0 /* USE_GRAVITY_BUGFIX_OLD */
EL_PLAYER_IS_LEAVING, /* needed for gravity + "block last field" */
#endif
+
-1
};
if (element_info[i].change_page[j].can_change)
SET_PROPERTY(i, EP_CAN_CHANGE, TRUE);
+ /* ---------- HAS_ACTION ----------------------------------------------- */
+ SET_PROPERTY(i, EP_HAS_ACTION, FALSE); /* default: has no action */
+ for (j = 0; j < element_info[i].num_change_pages; j++)
+ if (element_info[i].change_page[j].use_action)
+ SET_PROPERTY(i, EP_HAS_ACTION, TRUE);
+
/* ---------- GFX_CRUMBLED --------------------------------------------- */
#if 1
SET_PROPERTY(i, EP_GFX_CRUMBLED,
}
else if (strncmp(command, "autoplay ", 9) == 0)
{
- char *str_copy = getStringCopy(&command[9]);
- char *str_ptr = strchr(str_copy, ' ');
+ char *str_ptr = getStringCopy(&command[9]); /* read command parameters */
+
+ while (*str_ptr != '\0') /* continue parsing string */
+ {
+ /* cut leading whitespace from string, replace it by string terminator */
+ while (*str_ptr == ' ' || *str_ptr == '\t')
+ *str_ptr++ = '\0';
+
+ if (*str_ptr == '\0') /* end of string reached */
+ break;
+
+ if (global.autoplay_leveldir == NULL) /* read level set string */
+ {
+ global.autoplay_leveldir = str_ptr;
+ global.autoplay_all = TRUE; /* default: play all tapes */
+
+ for (i = 0; i < MAX_TAPES_PER_SET; i++)
+ global.autoplay_level[i] = FALSE;
+ }
+ else /* read level number string */
+ {
+ int level_nr = atoi(str_ptr); /* get level_nr value */
+
+ if (level_nr >= 0 && level_nr < MAX_TAPES_PER_SET)
+ global.autoplay_level[level_nr] = TRUE;
+
+ global.autoplay_all = FALSE;
+ }
+
+ /* advance string pointer to the next whitespace (or end of string) */
+ while (*str_ptr != ' ' && *str_ptr != '\t' && *str_ptr != '\0')
+ str_ptr++;
+ }
- global.autoplay_leveldir = str_copy;
- global.autoplay_level_nr = -1;
+#if 0
+ printf("level set == '%s'\n", global.autoplay_leveldir);
- if (str_ptr != NULL)
+ if (global.autoplay_all)
+ printf("play all levels\n");
+ else
{
- *str_ptr++ = '\0'; /* terminate leveldir string */
- global.autoplay_level_nr = atoi(str_ptr); /* get level_nr value */
+ printf("play the following levels:");
+
+ for (i = 0; i < MAX_TAPES_PER_SET; i++)
+ if (global.autoplay_level[i])
+ printf(" %03d", i);
+
+ printf("\n");
}
+#endif
+
}
else if (strncmp(command, "convert ", 8) == 0)
{
global.convert_leveldir = str_copy;
global.convert_level_nr = -1;
- if (str_ptr != NULL)
+ if (str_ptr != NULL) /* level number follows */
{
*str_ptr++ = '\0'; /* terminate leveldir string */
global.convert_level_nr = atoi(str_ptr); /* get level_nr value */
options.verbose = TRUE;
}
+static void InitGameInfo()
+{
+ game.restart_level = FALSE;
+}
+
static void InitPlayerInfo()
{
int i;
for (i = 0; i < NUM_MUSIC_PREFIXES; i++)
music_id_prefix[i] = music_prefix_info[i].prefix;
- music_id_prefix[MAX_LEVELS] = NULL;
+ music_id_prefix[NUM_MUSIC_PREFIXES] = NULL;
for (i = 0; i < NUM_ACTIONS; i++)
action_id_suffix[i] = element_action_info[i].suffix;
artwork_current_identifier) != 0)
artwork_new_identifier = artwork_current_identifier;
+#if 1
+ *(ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type))= artwork_current_identifier;
+#else
+ /* newer versions of gcc do not like this anymore :-/ */
*(&(ARTWORK_CURRENT_IDENTIFIER(artwork, type))) = artwork_current_identifier;
+#endif
#if 0
if (type == ARTWORK_TYPE_GRAPHICS)
InitSetup();
+ InitGameInfo();
InitPlayerInfo();
InitArtworkInfo(); /* needed before loading gfx, sound & music */
InitArtworkConfig(); /* needed before forking sound child process */