X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fimage.c;h=95e098e22c578ccf42b14cc161c2fa89fbd3b983;hb=4386c0ac1665619412148f1eb907f6d366a70d7d;hp=8cdf83245a88ec88c6e5ed5cb746d7842869b785;hpb=56c6c0e7a97a0831480dd9fdac411923b046ba38;p=rocksndiamonds.git diff --git a/src/libgame/image.c b/src/libgame/image.c index 8cdf8324..95e098e2 100644 --- a/src/libgame/image.c +++ b/src/libgame/image.c @@ -699,7 +699,7 @@ int Read_PCX_to_Pixmap(Display *display, Window window, GC gc, char *filename, /* ========================================================================= */ -/* PLATFORM INDEPENDANT IMAGE FUNCTIONS */ +/* PLATFORM INDEPENDENT IMAGE FUNCTIONS */ /* ========================================================================= */ struct ImageInfo @@ -800,9 +800,29 @@ Bitmap *getBitmapFromImageID(int pos) char *getTokenFromImageID(int graphic) { +#if 0 + /* !!! this does not work for dynamic artwork (crash!) !!! */ struct FileInfo *file_list = (struct FileInfo *)image_info->file_list; return file_list[graphic].token; +#else + struct FileInfo *file_list = getImageListEntry(graphic); + + return (file_list != NULL ? file_list->token : NULL); +#endif +} + +int getImageIDFromToken(char *token) +{ + struct FileInfo *file_list = image_info->file_list; + int num_list_entries = image_info->num_file_list_entries; + int i; + + for (i=0; i < num_list_entries; i++) + if (strcmp(file_list[i].token, token) == 0) + return i; + + return -1; } char *getImageConfigFilename() @@ -822,9 +842,9 @@ struct PropertyMapping *getImageListPropertyMapping() void InitImageList(struct ConfigInfo *config_list, int num_file_list_entries, struct ConfigInfo *config_suffix_list, - char **base_prefixes, - char **ext1_suffixes, - char **ext2_suffixes) + char **base_prefixes, char **ext1_suffixes, + char **ext2_suffixes, char **ext3_suffixes, + char **ignore_tokens) { int i; @@ -837,7 +857,7 @@ void InitImageList(struct ConfigInfo *config_list, int num_file_list_entries, image_info->num_dynamic_file_list_entries = 0; image_info->file_list = - getFileListFromConfigList(config_list, config_suffix_list, + getFileListFromConfigList(config_list, config_suffix_list, ignore_tokens, num_file_list_entries); image_info->dynamic_file_list = NULL; @@ -861,9 +881,19 @@ void InitImageList(struct ConfigInfo *config_list, int num_file_list_entries, for (i=0; ext2_suffixes[i] != NULL; i++) image_info->num_ext2_suffixes++; + image_info->num_ext3_suffixes = 0; + for (i=0; ext3_suffixes[i] != NULL; i++) + image_info->num_ext3_suffixes++; + + image_info->num_ignore_tokens = 0; + for (i=0; ignore_tokens[i] != NULL; i++) + image_info->num_ignore_tokens++; + image_info->base_prefixes = base_prefixes; image_info->ext1_suffixes = ext1_suffixes; image_info->ext2_suffixes = ext2_suffixes; + image_info->ext3_suffixes = ext3_suffixes; + image_info->ignore_tokens = ignore_tokens; image_info->num_property_mapping_entries = 0; @@ -902,11 +932,13 @@ void CreateImageWithSmallImages(int pos) if (img_info == NULL || img_info->contains_small_images) return; - printf(" creating small image for '%s'\n", img_info->source_filename); - CreateBitmapWithSmallBitmaps(img_info->bitmap); img_info->contains_small_images = TRUE; + +#if 0 + printf("CreateImageWithSmallImages: '%s' done\n", img_info->source_filename); +#endif } void FreeAllImages()