// create small and game tile sized bitmaps (and scale up, if needed)
CreateImageWithSmallImages(graphic, g->scale_up_factor, g->tile_size);
-
- // default (standard sized) bitmap may have changed now -- update it
- if (g->bitmaps)
- g->bitmap = g->bitmaps[IMG_BITMAP_STANDARD];
}
void InitElementSmallImages()
ScaleImage(i, graphic_info[i].scale_up_factor);
}
+void InitBitmapPointers()
+{
+ int num_images = getImageListSize();
+ int i;
+
+ // standard size bitmap may have changed -- update default bitmap pointer
+ for (i = 0; i < num_images; i++)
+ if (graphic_info[i].bitmaps)
+ graphic_info[i].bitmap = graphic_info[i].bitmaps[IMG_BITMAP_STANDARD];
+}
+
#if 1
/* !!! FIX THIS (CHANGE TO USING NORMAL ELEMENT GRAPHIC DEFINITIONS) !!! */
void SetBitmaps_EM(Bitmap **em_bitmap)
{
char *value = getHashEntry(element_token_hash, value_raw);
+ 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, "-");
+ }
+
return (value != NULL ? atoi(value) : EL_UNDEFINED);
}
else if (type == TYPE_GRAPHIC)
{
char *value = getHashEntry(graphic_token_hash, value_raw);
+ int fallback_graphic = IMG_CHAR_EXCLAM;
+
+ 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, "-");
+ }
- return (value != NULL ? atoi(value) : IMG_UNDEFINED);
+ return (value != NULL ? atoi(value) : fallback_graphic);
}
return -1;
Error(ERR_INFO, "custom graphic rejected for this element/action");
if (graphic == fallback_graphic)
- Error(ERR_EXIT, "fatal error: no fallback graphic available");
+ Error(ERR_EXIT, "no fallback graphic available");
Error(ERR_INFO, "fallback done to 'char_exclam' for this graphic");
Error(ERR_INFO_LINE, "-");
Error(ERR_INFO, "custom graphic rejected for this element/action");
if (i == fallback_graphic)
- Error(ERR_EXIT, "fatal error: no fallback graphic available");
+ Error(ERR_EXIT, "no fallback graphic available");
Error(ERR_INFO, "fallback done to 'char_exclam' for this graphic");
Error(ERR_INFO_LINE, "-");
Error(ERR_INFO, "custom graphic rejected for this element/action");
if (i == fallback_graphic)
- Error(ERR_EXIT, "fatal error: no fallback graphic available");
+ Error(ERR_EXIT, "no fallback graphic available");
Error(ERR_INFO, "fallback done to 'char_exclam' for this graphic");
Error(ERR_INFO_LINE, "-");
print_timestamp_time("InitElementSmallImages");
InitScaledImages(); /* scale all other images, if needed */
print_timestamp_time("InitScaledImages");
+ InitBitmapPointers(); /* set standard size bitmap pointers */
+ print_timestamp_time("InitBitmapPointers");
InitFontGraphicInfo(); /* initialize text drawing functions */
print_timestamp_time("InitFontGraphicInfo");
font_info[i].token_name,
int2str(i, 0));
+ /* set default filenames for all cloned graphics in static configuration */
+ for (i = 0; image_config[i].token != NULL; i++)
+ {
+ if (strEqual(image_config[i].value, UNDEFINED_FILENAME))
+ {
+ char *token = image_config[i].token;
+ char *token_clone_from = getStringCat2(token, ".clone_from");
+ char *token_cloned = getHashEntry(image_config_hash, token_clone_from);
+
+ if (token_cloned != NULL)
+ {
+ char *value_cloned = getHashEntry(image_config_hash, token_cloned);
+
+ if (value_cloned != NULL)
+ {
+ /* set default filename in static configuration */
+ image_config[i].value = value_cloned;
+
+ /* set default filename in image config hash */
+ setHashEntry(image_config_hash, token, value_cloned);
+ }
+ }
+
+ free(token_clone_from);
+ }
+ }
+
/* always start with reliable default values (all elements) */
for (i = 0; i < MAX_NUM_ELEMENTS; i++)
ActiveElement[i] = i;
Error(ERR_EXIT, "image target directory '%s' not found or not writable",
global.create_images_dir);
}
+ else if (strPrefix(command, "create CE image "))
+ {
+ CreateCustomElementImages(&command[16]);
+
+ exit(0);
+ }
#if DEBUG
#if defined(TARGET_SDL2)
InitGfxScrollbufferInfo(FXSIZE, FYSIZE);
InitGfxClipRegion(FALSE, -1, -1, -1, -1);
+ /* required if door size definitions have changed */
+ InitGraphicCompatibilityInfo_Doors();
+
InitGfxBuffers_EM();
InitGfxBuffers_SP();
}
InitGfxBuffers();
InitGfxCustomArtworkInfo();
+ InitGfxOtherSettings();
bitmap_font_initial = LoadCustomImage(filename_font_initial);
redraw_mask = REDRAW_ALL;
+ /* force drawing exit message even if screen updates are currently limited */
+ LimitScreenUpdates(FALSE);
+
BackToFront();
/* deactivate toons on error message screen */
print_timestamp_time("[init global stuff]");
+ InitSetup();
+
+ print_timestamp_time("[init setup/config stuff (1)]");
+
if (options.execute_command)
Execute_Command(options.execute_command);
exit(0); /* never reached, server loops forever */
}
- InitSetup();
-
- print_timestamp_time("[init setup/config stuff (1)]");
-
InitGameInfo();
print_timestamp_time("[init setup/config stuff (2)]");
InitPlayerInfo();