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];
}
#if 0
- printf("::: InitGlobalAnimGraphicInfo\n");
-
for (i = 0; i < NUM_GLOBAL_ANIMS; i++)
for (j = 0; j < NUM_GLOBAL_ANIM_PARTS_ALL; j++)
for (k = 0; k < NUM_SPECIAL_GFX_ARGS; k++)
if (global_anim_info[i].graphic[j][k] != IMG_UNDEFINED &&
graphic_info[global_anim_info[i].graphic[j][k]].bitmap != NULL)
- printf("::: - anim %d, part %d, mode %d => %d\n",
- i, j, k, global_anim_info[i].graphic[j][k]);
+ Debug("init:InitGlobalAnimGraphicInfo",
+ "anim %d, part %d, mode %d => %d",
+ i, j, k, global_anim_info[i].graphic[j][k]);
#endif
}
}
#if 0
- printf("::: InitGlobalAnimSoundInfo\n");
-
for (i = 0; i < NUM_GLOBAL_ANIMS; i++)
for (j = 0; j < NUM_GLOBAL_ANIM_PARTS_ALL; j++)
for (k = 0; k < NUM_SPECIAL_GFX_ARGS; k++)
if (global_anim_info[i].sound[j][k] != SND_UNDEFINED)
- printf("::: - anim %d, part %d, mode %d => %d\n",
- i, j, k, global_anim_info[i].sound[j][k]);
+ Debug("init:InitGlobalAnimSoundInfo",
+ "anim %d, part %d, mode %d => %d",
+ i, j, k, global_anim_info[i].sound[j][k]);
#endif
}
}
#if 0
- printf("::: InitGlobalAnimMusicInfo\n");
-
for (i = 0; i < NUM_GLOBAL_ANIMS; i++)
for (j = 0; j < NUM_GLOBAL_ANIM_PARTS_ALL; j++)
for (k = 0; k < NUM_SPECIAL_GFX_ARGS; k++)
if (global_anim_info[i].music[j][k] != MUS_UNDEFINED)
- printf("::: - anim %d, part %d, mode %d => %d\n",
- i, j, k, global_anim_info[i].music[j][k]);
+ Debug("init:InitGlobalAnimMusicInfo",
+ "anim %d, part %d, mode %d => %d",
+ i, j, k, global_anim_info[i].music[j][k]);
#endif
}
if (value == NULL)
{
- Error(ERR_INFO_LINE, "-");
- Error(ERR_INFO, "warning: error found in config file:");
- Error(ERR_INFO, "- config file: '%s'", getImageConfigFilename());
- Error(ERR_INFO, "error: invalid element token '%s'", value_raw);
- Error(ERR_INFO, "custom graphic rejected for this element/action");
- Error(ERR_INFO, "fallback done to undefined element for this graphic");
- Error(ERR_INFO_LINE, "-");
+ Warn("---");
+ Warn("error found in config file:");
+ Warn("- config file: '%s'", getImageConfigFilename());
+ Warn("error: invalid element token '%s'", value_raw);
+ Warn("custom graphic rejected for this element/action");
+ Warn("fallback done to undefined element for this graphic");
+ Warn("---");
}
return (value != NULL ? atoi(value) : EL_UNDEFINED);
if (value == NULL)
{
- Error(ERR_INFO_LINE, "-");
- Error(ERR_INFO, "warning: error found in config file:");
- Error(ERR_INFO, "- config file: '%s'", getImageConfigFilename());
- Error(ERR_INFO, "error: invalid graphic token '%s'", value_raw);
- Error(ERR_INFO, "custom graphic rejected for this element/action");
- Error(ERR_INFO, "fallback done to 'char_exclam' for this graphic");
- Error(ERR_INFO_LINE, "-");
+ Warn("---");
+ Warn("error found in config file:");
+ Warn("- config file: '%s'", getImageConfigFilename());
+ Warn("error: invalid graphic token '%s'", value_raw);
+ Warn("custom graphic rejected for this element/action");
+ Warn("fallback done to 'char_exclam' for this graphic");
+ Warn("---");
}
return (value != NULL ? atoi(value) : fallback_graphic);
{
if (g->width <= 0)
{
- Error(ERR_INFO_LINE, "-");
- Error(ERR_WARN, "invalid value %d for '%s.width' (fallback done to %d)",
- g->width, getTokenFromImageID(graphic), TILEX);
- Error(ERR_INFO_LINE, "-");
+ Warn("---");
+ Warn("invalid value %d for '%s.width' (fallback done to %d)",
+ g->width, getTokenFromImageID(graphic), TILEX);
+ Warn("---");
g->width = TILEX; // will be checked to be inside bitmap later
}
if (g->height <= 0)
{
- Error(ERR_INFO_LINE, "-");
- Error(ERR_WARN, "invalid value %d for '%s.height' (fallback done to %d)",
- g->height, getTokenFromImageID(graphic), TILEY);
- Error(ERR_INFO_LINE, "-");
+ Warn("---");
+ Warn("invalid value %d for '%s.height' (fallback done to %d)",
+ g->height, getTokenFromImageID(graphic), TILEY);
+ Warn("---");
g->height = TILEY; // will be checked to be inside bitmap later
}
if (num_references_followed >= max_num_images)
{
- Error(ERR_INFO_LINE, "-");
- Error(ERR_INFO, "warning: error found in config file:");
- Error(ERR_INFO, "- config file: '%s'", getImageConfigFilename());
- Error(ERR_INFO, "- config token: '%s'", getTokenFromImageID(graphic));
- Error(ERR_INFO, "error: loop discovered when resolving cloned graphics");
- Error(ERR_INFO, "custom graphic rejected for this element/action");
+ Warn("---");
+ Warn("error found in config file:");
+ Warn("- config file: '%s'", getImageConfigFilename());
+ Warn("- config token: '%s'", getTokenFromImageID(graphic));
+ Warn("error: loop discovered when resolving cloned graphics");
+ Warn("custom graphic rejected for this element/action");
if (graphic == fallback_graphic)
- Error(ERR_EXIT, "no fallback graphic available");
+ Fail("no fallback graphic available");
- Error(ERR_INFO, "fallback done to 'char_exclam' for this graphic");
- Error(ERR_INFO_LINE, "-");
+ Warn("fallback done to 'char_exclam' for this graphic");
+ Warn("---");
graphic_info[graphic] = graphic_info[fallback_graphic];
}
IMG_BACKGROUND_TITLE_INITIAL,
IMG_BACKGROUND_TITLE,
IMG_BACKGROUND_MAIN,
+ IMG_BACKGROUND_NAMES,
IMG_BACKGROUND_LEVELS,
IMG_BACKGROUND_LEVELNR,
IMG_BACKGROUND_SCORES,
src_x + width > src_bitmap_width ||
src_y + height > src_bitmap_height)
{
- Error(ERR_INFO_LINE, "-");
- Error(ERR_INFO, "warning: error found in config file:");
- Error(ERR_INFO, "- config file: '%s'", getImageConfigFilename());
- Error(ERR_INFO, "- config token: '%s'", getTokenFromImageID(i));
- Error(ERR_INFO, "- image file: '%s'", src_bitmap->source_filename);
- Error(ERR_INFO, "- frame size: %d, %d", width, height);
- Error(ERR_INFO,
- "error: first animation frame out of bounds (%d, %d) [%d, %d]",
- src_x, src_y, src_bitmap_width, src_bitmap_height);
- Error(ERR_INFO, "custom graphic rejected for this element/action");
+ Warn("---");
+ Warn("error found in config file:");
+ Warn("- config file: '%s'", getImageConfigFilename());
+ Warn("- config token: '%s'", getTokenFromImageID(i));
+ Warn("- image file: '%s'", src_bitmap->source_filename);
+ Warn("- frame size: %d, %d", width, height);
+ Warn("error: first animation frame out of bounds (%d, %d) [%d, %d]",
+ src_x, src_y, src_bitmap_width, src_bitmap_height);
+ Warn("custom graphic rejected for this element/action");
if (i == fallback_graphic)
- Error(ERR_EXIT, "no fallback graphic available");
+ Fail("no fallback graphic available");
- Error(ERR_INFO, "fallback done to 'char_exclam' for this graphic");
- Error(ERR_INFO_LINE, "-");
+ Warn("fallback done to 'char_exclam' for this graphic");
+ Warn("---");
graphic_info[i] = graphic_info[fallback_graphic];
src_x + width > src_bitmap_width ||
src_y + height > src_bitmap_height)
{
- Error(ERR_INFO_LINE, "-");
- Error(ERR_INFO, "warning: error found in config file:");
- Error(ERR_INFO, "- config file: '%s'", getImageConfigFilename());
- Error(ERR_INFO, "- config token: '%s'", getTokenFromImageID(i));
- Error(ERR_INFO, "- image file: '%s'", src_bitmap->source_filename);
- Error(ERR_INFO, "- frame size: %d, %d", width, height);
- Error(ERR_INFO,
- "error: last animation frame (%d) out of bounds (%d, %d) [%d, %d]",
- last_frame, src_x, src_y, src_bitmap_width, src_bitmap_height);
- Error(ERR_INFO, "custom graphic rejected for this element/action");
+ Warn("---");
+ Warn("error found in config file:");
+ Warn("- config file: '%s'", getImageConfigFilename());
+ Warn("- config token: '%s'", getTokenFromImageID(i));
+ Warn("- image file: '%s'", src_bitmap->source_filename);
+ Warn("- frame size: %d, %d", width, height);
+ Warn("error: last animation frame (%d) out of bounds (%d, %d) [%d, %d]",
+ last_frame, src_x, src_y, src_bitmap_width, src_bitmap_height);
+ Warn("custom graphic rejected for this element/action");
if (i == fallback_graphic)
- Error(ERR_EXIT, "no fallback graphic available");
+ Fail("no fallback graphic available");
- Error(ERR_INFO, "fallback done to 'char_exclam' for this graphic");
- Error(ERR_INFO_LINE, "-");
+ Warn("fallback done to 'char_exclam' for this graphic");
+ Warn("---");
graphic_info[i] = graphic_info[fallback_graphic];
}
// process all images which default to same image as "global.door"
if (strEqual(fi->default_filename, fi_global_door->default_filename))
{
- // printf("::: special treatment needed for token '%s'\n", fi->token);
+#if 0
+ Debug("init:InitGraphicCompatibilityInfo",
+ "special treatment needed for token '%s'", fi->token);
+#endif
graphic_info[i].bitmaps = graphic_info[IMG_GLOBAL_DOOR].bitmaps;
graphic_info[i].bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
if (recursion_depth > NUM_GROUP_ELEMENTS) // recursion too deep
{
- Error(ERR_WARN, "recursion too deep when resolving group element %d",
+ Warn("recursion too deep when resolving group element %d",
group_element - EL_GROUP_START + 1);
// replace element which caused too deep recursion by question mark
{
// check if element_name_info entry defined for each element in "main.h"
if (i < MAX_NUM_ELEMENTS && element_name_info[i].token_name == NULL)
- Error(ERR_EXIT, "undefined 'element_name_info' entry for element %d", i);
+ Fail("undefined 'element_name_info' entry for element %d", i);
element_info[i].token_name = element_name_info[i].token_name;
element_info[i].class_name = element_name_info[i].class_name;
// check if global_anim_name_info defined for each entry in "main.h"
if (i < NUM_GLOBAL_ANIM_TOKENS &&
global_anim_name_info[i].token_name == NULL)
- Error(ERR_EXIT, "undefined 'global_anim_name_info' entry for anim %d", i);
+ Fail("undefined 'global_anim_name_info' entry for anim %d", i);
global_anim_info[i].token_name = global_anim_name_info[i].token_name;
}
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))
- Error(ERR_EXIT, "cannot open file '%s'", filename);
+ if (fileExists(filename))
+ {
+ LoadLevelFromFilename(&level, filename);
+ DumpLevel(&level);
- LoadLevelFromFilename(&level, filename);
- DumpLevel(&level);
+ exit(0);
+ }
- exit(0);
+ char *leveldir = getStringCopy(filename); // read command parameters
+ char *level_nr = strchr(leveldir, ' ');
+
+ if (level_nr == NULL)
+ Fail("cannot open file '%s'", filename);
+
+ *level_nr++ = '\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))
- Error(ERR_EXIT, "cannot open file '%s'", filename);
+ if (fileExists(filename))
+ {
+ LoadTapeFromFilename(filename);
+ DumpTape(&tape);
+
+ exit(0);
+ }
- LoadTapeFromFilename(filename);
- DumpTape(&tape);
+ char *leveldir = getStringCopy(filename); // read command parameters
+ char *level_nr = strchr(leveldir, ' ');
- exit(0);
+ if (level_nr == NULL)
+ Fail("cannot open file '%s'", filename);
+
+ *level_nr++ = '\0';
+
+ global.dumptape_leveldir = leveldir;
+ global.dumptape_level_nr = atoi(level_nr);
+
+ program.headless = TRUE;
}
- else if (strPrefix(command, "autotest ") ||
- strPrefix(command, "autoplay ") ||
+ else if (strPrefix(command, "autoplay ") ||
strPrefix(command, "autoffwd ") ||
- strPrefix(command, "autowarp "))
+ strPrefix(command, "autowarp ") ||
+ strPrefix(command, "autotest ") ||
+ strPrefix(command, "autofix "))
{
- char *str_ptr = getStringCopy(&command[9]); // read command parameters
+ char *str_ptr = getStringCopy(&command[8]); // read command parameters
global.autoplay_mode =
- (strPrefix(command, "autotest") ? AUTOPLAY_MODE_TEST :
- strPrefix(command, "autoplay") ? AUTOPLAY_MODE_PLAY :
+ (strPrefix(command, "autoplay") ? AUTOPLAY_MODE_PLAY :
strPrefix(command, "autoffwd") ? AUTOPLAY_MODE_FFWD :
strPrefix(command, "autowarp") ? AUTOPLAY_MODE_WARP :
+ strPrefix(command, "autotest") ? AUTOPLAY_MODE_TEST :
+ strPrefix(command, "autofix") ? AUTOPLAY_MODE_FIX :
AUTOPLAY_MODE_NONE);
while (*str_ptr != '\0') // continue parsing string
str_ptr++;
}
- if (global.autoplay_mode == AUTOPLAY_MODE_TEST)
+ if (global.autoplay_mode & AUTOPLAY_WARP_NO_DISPLAY)
program.headless = TRUE;
}
else if (strPrefix(command, "patch tapes "))
str_ptr++;
if (*str_ptr == '\0')
- Error(ERR_EXIT, "cannot find MODE in command '%s'", command);
+ Fail("cannot find MODE in command '%s'", command);
global.patchtapes_mode = str_ptr; // store patch mode
if (strEqual(global.patchtapes_mode, "help"))
global.patchtapes_leveldir = UNDEFINED_LEVELSET;
else
- Error(ERR_EXIT, "cannot find LEVELDIR in command '%s'", command);
+ Fail("cannot find LEVELDIR in command '%s'", command);
}
program.headless = TRUE;
global.create_images_dir = getStringCopy(&command[14]);
if (access(global.create_images_dir, W_OK) != 0)
- Error(ERR_EXIT, "image target directory '%s' not found or not writable",
- global.create_images_dir);
+ Fail("image target directory '%s' not found or not writable",
+ global.create_images_dir);
}
else if (strPrefix(command, "create CE image "))
{
}
else
{
- Error(ERR_EXIT_HELP, "unrecognized command '%s'", command);
+ FailWithHelp("unrecognized command '%s'", command);
}
// disable networking if any valid command was recognized
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)
}
if (filename_font_initial == NULL) // should not happen
- Error(ERR_EXIT, "cannot get filename for '%s'", CONFIG_TOKEN_FONT_INITIAL);
+ Fail("cannot get filename for '%s'", CONFIG_TOKEN_FONT_INITIAL);
InitGfxBuffers();
InitGfxCustomArtworkInfo();
}
if (filename_anim_initial == NULL) // should not happen
- Error(ERR_EXIT, "cannot get filename for '%s'", CONFIG_TOKEN_GLOBAL_BUSY);
+ Fail("cannot get filename for '%s'", CONFIG_TOKEN_GLOBAL_BUSY);
anim_initial.bitmaps =
checked_calloc(sizeof(Bitmap *) * NUM_IMG_BITMAP_POINTERS);
print_timestamp_init("InitImages");
#if 0
- printf("::: leveldir_current->identifier == '%s'\n",
- leveldir_current == NULL ? "[NULL]" : leveldir_current->identifier);
- printf("::: leveldir_current->graphics_path == '%s'\n",
- leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_path);
- printf("::: leveldir_current->graphics_set == '%s'\n",
- leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_set);
- printf("::: getLevelArtworkSet(ARTWORK_TYPE_GRAPHICS) == '%s'\n",
- leveldir_current == NULL ? "[NULL]" : LEVELDIR_ARTWORK_SET(leveldir_current, ARTWORK_TYPE_GRAPHICS));
+ Debug("init:InitImages", "leveldir_current->identifier == '%s'",
+ leveldir_current == NULL ? "[NULL]" : leveldir_current->identifier);
+ Debug("init:InitImages", "leveldir_current->graphics_path == '%s'",
+ leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_path);
+ Debug("init:InitImages", "leveldir_current->graphics_set == '%s'",
+ leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_set);
+ Debug("init:InitImages", "getLevelArtworkSet(ARTWORK_TYPE_GRAPHICS) == '%s'",
+ leveldir_current == NULL ? "[NULL]" : LEVELDIR_ARTWORK_SET(leveldir_current, ARTWORK_TYPE_GRAPHICS));
#endif
setLevelArtworkDir(artwork.gfx_first);
#if 0
- printf("::: leveldir_current->identifier == '%s'\n",
- leveldir_current == NULL ? "[NULL]" : leveldir_current->identifier);
- printf("::: leveldir_current->graphics_path == '%s'\n",
- leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_path);
- printf("::: leveldir_current->graphics_set == '%s'\n",
+ Debug("init:InitImages", "leveldir_current->identifier == '%s'",
+ leveldir_current == NULL ? "[NULL]" : leveldir_current->identifier);
+ Debug("init:InitImages", "leveldir_current->graphics_path == '%s'",
+ leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_path);
+ Debug("init:InitImages", "leveldir_current->graphics_set == '%s'",
leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_set);
- printf("::: getLevelArtworkSet(ARTWORK_TYPE_GRAPHICS) == '%s'\n",
- leveldir_current == NULL ? "[NULL]" : LEVELDIR_ARTWORK_SET(leveldir_current, ARTWORK_TYPE_GRAPHICS));
+ Debug("init:InitImages", "getLevelArtworkSet(ARTWORK_TYPE_GRAPHICS) == '%s'",
+ leveldir_current == NULL ? "[NULL]" : LEVELDIR_ARTWORK_SET(leveldir_current, ARTWORK_TYPE_GRAPHICS));
#endif
#if 0
- printf("::: InitImages for '%s' ['%s', '%s'] ['%s', '%s']\n",
- leveldir_current->identifier,
- artwork.gfx_current_identifier,
- artwork.gfx_current->identifier,
- leveldir_current->graphics_set,
- leveldir_current->graphics_path);
+ Debug("init:InitImages", "InitImages for '%s' ['%s', '%s'] ['%s', '%s']",
+ leveldir_current->identifier,
+ artwork.gfx_current_identifier,
+ artwork.gfx_current->identifier,
+ leveldir_current->graphics_set,
+ leveldir_current->graphics_path);
#endif
UPDATE_BUSY_STATE();
setLevelArtworkDir(ARTWORK_FIRST_NODE(artwork, type));
#if 0
- printf("::: leveldir_current->identifier == '%s'\n",
- leveldir_current == NULL ? "[NULL]" : leveldir_current->identifier);
- printf("::: leveldir_current->graphics_path == '%s'\n",
- leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_path);
- printf("::: leveldir_current->graphics_set == '%s'\n",
- leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_set);
- printf("::: getLevelArtworkSet(ARTWORK_TYPE_GRAPHICS) == '%s'\n",
- leveldir_current == NULL ? "[NULL]" :
- LEVELDIR_ARTWORK_SET(leveldir_current, type));
+ Debug("init:CheckArtworkTypeForRedefinedCustomElements",
+ "leveldir_current->identifier == '%s'",
+ leveldir_current == NULL ? "[NULL]" : leveldir_current->identifier);
+ Debug("init:CheckArtworkTypeForRedefinedCustomElements",
+ "leveldir_current->graphics_path == '%s'",
+ leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_path);
+ Debug("init:CheckArtworkTypeForRedefinedCustomElements",
+ "leveldir_current->graphics_set == '%s'",
+ leveldir_current == NULL ? "[NULL]" : leveldir_current->graphics_set);
+ Debug("init:CheckArtworkTypeForRedefinedCustomElements",
+ "getLevelArtworkSet(ARTWORK_TYPE_GRAPHICS) == '%s'",
+ leveldir_current == NULL ? "[NULL]" :
+ LEVELDIR_ARTWORK_SET(leveldir_current, type));
#endif
// first look for special artwork configured in level series config
filename_base = getCustomArtworkLevelConfigFilename(type);
#if 0
- printf("::: filename_base == '%s'\n", filename_base);
+ Debug("init:CheckArtworkTypeForRedefinedCustomElements",
+ "filename_base == '%s'", filename_base);
#endif
if (fileExists(filename_base))
filename_local = getCustomArtworkConfigFilename(type);
#if 0
- printf("::: filename_local == '%s'\n", filename_local);
+ Debug("init:CheckArtworkTypeForRedefinedCustomElements",
+ "filename_local == '%s'", filename_local);
#endif
if (filename_local != NULL && !strEqual(filename_base, filename_local))
redefined_ce_found |= CheckArtworkConfigForCustomElements(filename_local);
#if 0
- printf("::: redefined_ce_found == %d\n", redefined_ce_found);
+ Debug("init:CheckArtworkTypeForRedefinedCustomElements",
+ "redefined_ce_found == %d", redefined_ce_found);
#endif
return redefined_ce_found;
CheckArtworkTypeForRedefinedCustomElements(ARTWORK_TYPE_MUSIC));
#if 0
- printf("::: redefined_ce_found == %d\n", redefined_ce_found);
+ Debug("init:InitOverrideArtwork", "redefined_ce_found == %d",
+ redefined_ce_found);
#endif
if (redefined_ce_found)
}
#if 0
- printf("::: => %d, %d, %d\n",
- gfx.override_level_graphics,
- gfx.override_level_sounds,
- gfx.override_level_music);
+ Debug("init:InitOverrideArtwork", "%d, %d, %d",
+ gfx.override_level_graphics,
+ gfx.override_level_sounds,
+ gfx.override_level_music);
#endif
}
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);
if (gfx_new_identifier != NULL || force_reload_gfx)
{
#if 0
- printf("RELOADING GRAPHICS '%s' -> '%s' ['%s', '%s']\n",
- artwork.gfx_current_identifier,
- gfx_new_identifier,
- artwork.gfx_current->identifier,
- leveldir_current->graphics_set);
+ Debug("init:ReloadCustomArtwork",
+ "RELOADING GRAPHICS '%s' -> '%s' ['%s', '%s']",
+ artwork.gfx_current_identifier,
+ gfx_new_identifier,
+ artwork.gfx_current->identifier,
+ leveldir_current->graphics_set);
#endif
InitImages();
print_timestamp_time("[init setup/config stuff (1)]");
- InitScoresInfo();
-
if (options.execute_command)
Execute_Command(options.execute_command);
#if defined(PLATFORM_UNIX)
NetworkServer(network.server_port, TRUE);
#else
- Error(ERR_WARN, "networking only supported in Unix version");
+ Warn("networking only supported in Unix version");
#endif
exit(0); // never reached, server loops forever
if (global.autoplay_leveldir)
{
- AutoPlayTape();
+ AutoPlayTapes();
return;
}
else if (global.patchtapes_leveldir)
ConvertLevels();
return;
}
+ else if (global.dumplevel_leveldir)
+ {
+ DumpLevels();
+ return;
+ }
+ else if (global.dumptape_leveldir)
+ {
+ DumpTapes();
+ return;
+ }
else if (global.create_images_dir)
{
CreateLevelSketchImages();
DrawMainMenu();
#if 0
- Error(ERR_DEBUG, "::: SDL_GetBasePath() == '%s'",
+ Debug("internal:path", "SDL_GetBasePath() == '%s'",
SDL_GetBasePath());
- Error(ERR_DEBUG, "::: SDL_GetPrefPath() == '%s'",
+ Debug("internal:path", "SDL_GetPrefPath() == '%s'",
SDL_GetPrefPath("artsoft", "rocksndiamonds"));
#if defined(PLATFORM_ANDROID)
- Error(ERR_DEBUG, "::: SDL_AndroidGetInternalStoragePath() == '%s'",
+ Debug("internal:path", "SDL_AndroidGetInternalStoragePath() == '%s'",
SDL_AndroidGetInternalStoragePath());
- Error(ERR_DEBUG, "::: SDL_AndroidGetExternalStoragePath() == '%s'",
+ Debug("internal:path", "SDL_AndroidGetExternalStoragePath() == '%s'",
SDL_AndroidGetExternalStoragePath());
- Error(ERR_DEBUG, "::: SDL_AndroidGetExternalStorageState() == '%s'",
+ Debug("internal:path", "SDL_AndroidGetExternalStorageState() == '%s'",
(SDL_AndroidGetExternalStorageState() &
SDL_ANDROID_EXTERNAL_STORAGE_WRITE ? "writable" :
SDL_AndroidGetExternalStorageState() &
// using SDL_WaitThread()
//
// Code used with SDL 1.2:
- // if (network_server) // terminate network server
- // SDL_KillThread(server_thread);
+ // if (network.server_thread) // terminate network server
+ // SDL_KillThread(network.server_thread);
CloseVideoDisplay();
ClosePlatformDependentStuff();