X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Finit.c;h=5dea5dfca4522d457075464fd2481c31b935a6e8;hb=09e22b6b1f060be3ac1aca3937ff29c9d53e5866;hp=32b2cb8e3d6504c2f426e26ba65b554695b3c855;hpb=cd9add1d9479d1938d05ca9df4f31c3f99bd5f3e;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 32b2cb8e..5dea5dfc 100644 --- a/src/init.c +++ b/src/init.c @@ -31,6 +31,15 @@ static char *image_filename[NUM_PICTURES] = { +#if 0 + "RocksScreen.pcx", + "RocksDoor.pcx", + "RocksToons.pcx", + "RocksFontBig.pcx", + "RocksFontSmall.pcx", + "RocksFontMedium.pcx", + "RocksFontEM.pcx" +#else "RocksScreen.pcx", "RocksElements.pcx", "RocksDoor.pcx", @@ -43,6 +52,7 @@ static char *image_filename[NUM_PICTURES] = "RocksFontSmall.pcx", "RocksFontMedium.pcx", "RocksFontEM.pcx" +#endif }; static void InitSetup(void); @@ -109,9 +119,9 @@ 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 */ + InitGadgets(); /* needs images + number of level series */ InitGfxBackground(); InitToons(); @@ -179,14 +189,23 @@ void InitNetworkServer() #endif } +static void ReinitializeGraphics() +{ + ReloadCustomImages(); /* load custom image files */ + + InitGraphicInfo(); /* initialize graphic info from config file */ + + InitFontInfo(new_graphic_info[IMG_MENU_FONT_BIG].bitmap, + new_graphic_info[IMG_MENU_FONT_MEDIUM].bitmap, + new_graphic_info[IMG_MENU_FONT_SMALL].bitmap, + new_graphic_info[IMG_MENU_FONT_EM].bitmap); +} + static void InitImages() { InitImageList(image_config, image_config_suffix, NUM_IMAGE_FILES); - /* load custom images */ - ReloadCustomImages(); - - InitGraphicInfo(); + ReinitializeGraphics(); } static void InitMixer() @@ -214,6 +233,8 @@ static void InitTileClipmasks() unsigned long clip_gc_valuemask; #if defined(TARGET_X11_NATIVE) + +#if 0 GC copy_clipmask_gc; static struct @@ -267,13 +288,15 @@ static void InitTileClipmasks() { GFX2_SHIELD_ACTIVE, 3 }, { -1, 0 } }; +#endif + #endif /* TARGET_X11_NATIVE */ #endif /* TARGET_X11 */ int i; /* initialize pixmap array for special X11 tile clipping to Pixmap 'None' */ - for(i=0; idrawable, clip_gc_valuemask, &clip_gc_values); - for(i=0; iclip_mask) { @@ -298,9 +322,11 @@ static void InitTileClipmasks() clip_gc_valuemask, &clip_gc_values); } } +#endif #if defined(TARGET_X11_NATIVE) +#if 0 /* create graphic context structures needed for clipping */ clip_gc_values.graphics_exposures = False; clip_gc_valuemask = GCGraphicsExposures; @@ -308,11 +334,11 @@ static void InitTileClipmasks() clip_gc_valuemask, &clip_gc_values); /* create only those clipping Pixmaps we really need */ - for(i=0; tile_needs_clipping[i].start>=0; i++) + for (i=0; tile_needs_clipping[i].start>=0; i++) { int j; - for(j=0; jstored_clip_gc) { @@ -363,6 +391,8 @@ void FreeTileClipmasks() pix[i]->stored_clip_gc = None; } } +#endif + #endif /* TARGET_X11 */ } @@ -383,8 +413,12 @@ void InitGfx() InitGfxScrollbufferInfo(FXSIZE, FYSIZE); /* create additional image buffers for double-buffering */ - pix[PIX_DB_DOOR] = CreateBitmap(3 * DXSIZE, DYSIZE + VYSIZE, DEFAULT_DEPTH); - pix[PIX_DB_FIELD] = CreateBitmap(FXSIZE, FYSIZE, DEFAULT_DEPTH); + bitmap_db_field = CreateBitmap(FXSIZE, FYSIZE, DEFAULT_DEPTH); + bitmap_db_door = CreateBitmap(3 * DXSIZE, DYSIZE + VYSIZE, DEFAULT_DEPTH); +#if 1 + pix[PIX_DB_FIELD] = bitmap_db_field; + pix[PIX_DB_DOOR] = bitmap_db_door; +#endif pix[PIX_FONT_SMALL] = LoadCustomImage(image_filename[PIX_FONT_SMALL]); @@ -395,7 +429,7 @@ void InitGfx() DrawInitText("Loading graphics:", 120, FC_GREEN); - for(i=0; i -1) + { + int action = element_to_graphic[i].action; + int graphic = element_to_graphic[i].graphic; + + if (action == -1) + action = GFX_ACTION_DEFAULT; + + gfx_action[graphic] = action; + + i++; + } - for(i=0; i src_bitmap->width || + src_y + TILEY > src_bitmap->height) + Error(ERR_EXIT, "InitGraphicInfo: image bitmap '%s' too small for graphic object %d (normal size)", src_bitmap->source_filename, i); + + getMiniGraphicSource(i, &src_bitmap, &src_x, &src_y); + if (src_x + MINI_TILEX > src_bitmap->width || + src_y + MINI_TILEY > src_bitmap->height) + Error(ERR_EXIT, "InitGraphicInfo: image bitmap '%s' too small for graphic object %d ('mini' size)", src_bitmap->source_filename, i); + + getMicroGraphicSource(i, &src_bitmap, &src_x, &src_y); + if (src_x + MICRO_TILEX > src_bitmap->width || + src_y + MICRO_TILEY > src_bitmap->height) + Error(ERR_EXIT, "InitGraphicInfo: image bitmap '%s' too small for graphic object %d ('micro' size)", src_bitmap->source_filename, i); + + +#if 0 + { + int j; + + if (i == IMG_EMERALD) + { + for (j=0; j %d\n", image_config_suffix[j].token, parameter[j]); + printf("-> %d\n", new_graphic_info[i].anim_frames); + printf("\n"); + } + } +#endif + } + #if 0 printf("D> %d\n", image_files[GFX_BD_DIAMOND].parameter[GFX_ARG_NUM_FRAMES]); printf("W> %d\n", image_files[GFX_ROBOT_WHEEL].parameter[GFX_ARG_NUM_FRAMES]); @@ -1682,7 +1806,7 @@ void InitElementProperties() EL_SP_SNIKSNAK, EL_SP_ELECTRON, EL_BALLOON, - EL_SPRING_MOVING + EL_SPRING }; static int ep_can_move_num = SIZEOF_ARRAY_INT(ep_can_move); @@ -2350,20 +2474,20 @@ void InitElementProperties() static int num_properties1 = SIZEOF_ARRAY(ep1_num, int *); static int num_properties2 = SIZEOF_ARRAY(ep2_num, int *); - for(i=0; i