From: Holger Schemel Date: Wed, 4 Sep 2002 00:44:51 +0000 (+0200) Subject: rnd-20020904-2-src X-Git-Tag: 3.0.0^2~253 X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=commitdiff_plain;h=22473d4140e896b64767e3349ef308f69b7668b9 rnd-20020904-2-src --- diff --git a/src/conftime.h b/src/conftime.h index d5ca4139..943ff27a 100644 --- a/src/conftime.h +++ b/src/conftime.h @@ -1 +1 @@ -#define COMPILE_DATE_STRING "[2002-09-04 00:47]" +#define COMPILE_DATE_STRING "[2002-09-04 02:07]" diff --git a/src/init.c b/src/init.c index 53066410..183ba2b9 100644 --- a/src/init.c +++ b/src/init.c @@ -46,7 +46,7 @@ static void InitLevelInfo(void); static void InitArtworkInfo(void); static void InitLevelArtworkInfo(void); static void InitNetworkServer(void); -static void InitImageConfig(); +static void InitImages(void); static void InitMixer(void); static void InitSound(void); static void InitGfx(void); @@ -87,7 +87,6 @@ void OpenAll(void) InitArtworkInfo(); /* needed before loading gfx, sound & music */ InitCounter(); - InitImageConfig(); InitMixer(); InitJoysticks(); InitRND(NEW_RANDOMIZE); @@ -106,6 +105,7 @@ void OpenAll(void) InitLevelInfo(); InitLevelArtworkInfo(); InitGadgets(); /* needs to know number of level series */ + InitImages(); /* needs to know current level directory */ InitSound(); /* needs to know current level directory */ InitGfxBackground(); @@ -174,9 +174,12 @@ void InitNetworkServer() #endif } -static void InitImageConfig() +static void InitImages() { InitImageList(image_config, NUM_IMAGE_CONFIG_ENTRIES); + + /* load custom images */ + ReloadCustomImages(); } static void InitMixer() @@ -274,8 +277,8 @@ static void InitTileClipmasks() clip_gc_values.graphics_exposures = False; clip_gc_valuemask = GCGraphicsExposures; - tile_clip_gc = - XCreateGC(display, window->drawable, clip_gc_valuemask, &clip_gc_values); + tile_clip_gc = XCreateGC(display, window->drawable, + clip_gc_valuemask, &clip_gc_values); for(i=0; iclip_mask, - clip_gc_valuemask, &clip_gc_values); + copy_clipmask_gc = XCreateGC(display, pix[PIX_BACK]->clip_mask, + clip_gc_valuemask, &clip_gc_values); /* create only those clipping Pixmaps we really need */ for(i=0; tile_needs_clipping[i].start>=0; i++) @@ -494,6 +496,8 @@ void ReloadCustomArtwork() ReloadCustomImage(pix[i], image_filename[i]); } + ReloadCustomImages(); + FreeTileClipmasks(); InitTileClipmasks(); InitGfxBackground(); @@ -2061,17 +2065,26 @@ void Execute_Debug_Command(char *command) { if (strcmp(command, "create graphicsinfo.conf") == 0) { - printf("# (Currently only \"name\" and \"sort_priority\" recognized.)\n"); + int i; + + printf("# You can configure additional/alternative image files here.\n"); + printf("# (The images below are default and therefore commented out.)\n"); printf("\n"); printf("%s\n", getFormattedSetupEntry("name", "Classic Graphics")); printf("\n"); printf("%s\n", getFormattedSetupEntry("sort_priority", "100")); + printf("\n"); + + for (i=0; ibitmap = LoadImage(filename)) == NULL) + { + Error(ERR_WARN, "cannot read image file '%s': LoadImage() failed: %s", + filename, GetError()); + free(img_info); + return NULL; + } + + img_info->source_filename = getStringCopy(filename); + + return img_info; +} + +static void FreeImage(void *ptr) +{ + ImageInfo *image = (ImageInfo *)ptr; + + if (image == NULL) + return; + + if (image->bitmap) + FreeBitmap(image->bitmap); + + if (image->source_filename) + free(image->source_filename); + + free(image); +} void InitImageList(struct ArtworkConfigInfo *config_list, int num_list_entries) { - if (ImageList == NULL) - ImageList = checked_calloc(num_list_entries * sizeof(ImageInfo *)); + if (image_info == NULL) + image_info = checked_calloc(sizeof(struct ArtworkListInfo)); + + if (image_info->artwork_list == NULL) + image_info->artwork_list = + checked_calloc(num_list_entries * sizeof(ImageInfo *)); + + image_info->type = ARTWORK_TYPE_GRAPHICS; + image_info->num_list_entries = num_list_entries; + image_info->config_list = config_list; + image_info->file_list = NULL; + image_info->load_artwork = Load_PCX; + image_info->free_artwork = FreeImage; +} + +void ReloadCustomImages() +{ +#if 0 + printf("DEBUG: reloading images '%s' ...\n", artwork.gfx_current_identifier); +#endif - image_config = config_list; - num_images = num_list_entries; + ReloadCustomArtworkList(image_info); } diff --git a/src/libgame/image.h b/src/libgame/image.h index 7900bd81..8f998fba 100644 --- a/src/libgame/image.h +++ b/src/libgame/image.h @@ -73,5 +73,6 @@ int Read_PCX_to_Pixmap(Display *, Window, GC, char *, Pixmap *, Pixmap *); void InitImageList(struct ArtworkConfigInfo *, int); +void ReloadCustomImages(); #endif /* IMAGE_H */ diff --git a/src/main.c b/src/main.c index 51fa055d..4cec054e 100644 --- a/src/main.c +++ b/src/main.c @@ -139,24 +139,7 @@ char *sound_name[NUM_SOUNDS] = struct ArtworkConfigInfo image_config[] = { /* graphics for Boulder Dash style elements and actions */ - { "bd_empty_space.digging", "empty.pcx" }, - { "bd_sand.digging", "schlurf.pcx" }, - { "bd_diamond.collecting", "pong.pcx" }, - { "bd_diamond.impact", "pling.pcx" }, - { "bd_rock.pushing", "pusch.pcx" }, - { "bd_rock.impact", "klopf.pcx" }, - { "bd_magic_wall.activating", "quirk.pcx" }, - { "bd_magic_wall.changing", "quirk.pcx" }, - { "bd_magic_wall.running", "miep.pcx" }, - { "bd_amoeba.waiting", "amoebe.pcx" }, - { "bd_amoeba.creating", "amoebe.pcx" }, - { "bd_amoeba.turning_to_gem", "pling.pcx" }, - { "bd_amoeba.turning_to_rock", "klopf.pcx" }, - { "bd_butterfly.moving", "klapper.pcx" }, - { "bd_butterfly.waiting", "klapper.pcx" }, - { "bd_firefly.moving", "roehr.pcx" }, - { "bd_firefly.waiting", "roehr.pcx" }, - { "bd_exit.entering", "buing.pcx" }, + { "bd_diamond.waiting", "bd_diamond.pcx" }, }; struct ArtworkConfigInfo sound_config[] = diff --git a/src/main.h b/src/main.h index fb8d277c..ba480f42 100644 --- a/src/main.h +++ b/src/main.h @@ -1459,26 +1459,9 @@ extern struct ArtworkConfigInfo image_config[], sound_config[]; /* values for image configuration */ -#define GFX_BD_EMPTY_SPACE_DIGGING 0 -#define GFX_BD_SAND_DIGGING 1 -#define GFX_BD_DIAMOND_COLLECTING 2 -#define GFX_BD_DIAMOND_IMPACT 3 -#define GFX_BD_ROCK_PUSHING 4 -#define GFX_BD_ROCK_IMPACT 5 -#define GFX_BD_MAGIC_WALL_ACTIVATING 6 -#define GFX_BD_MAGIC_WALL_CHANGING 7 -#define GFX_BD_MAGIC_WALL_RUNNING 8 -#define GFX_BD_AMOEBA_WAITING 9 -#define GFX_BD_AMOEBA_CREATING 10 -#define GFX_BD_AMOEBA_TURNING_TO_GEM 11 -#define GFX_BD_AMOEBA_TURNING_TO_ROCK 12 -#define GFX_BD_BUTTERFLY_MOVING 13 -#define GFX_BD_BUTTERFLY_WAITING 14 -#define GFX_BD_FIREFLY_MOVING 15 -#define GFX_BD_FIREFLY_WAITING 16 -#define GFX_BD_EXIT_ENTERING 17 - -#define NUM_IMAGE_CONFIG_ENTRIES 18 +#define GFX_BD_DIAMOND_WAITING 0 + +#define NUM_IMAGE_CONFIG_ENTRIES 1 /* values for sound configuration */