X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=5e5301c728941fee464336c504e25ce77a8b0ec6;hb=e51177796149f37de339bda83558c3c49758be93;hp=4596e8395d4772a6b2bd282680435f20fa948b2e;hpb=328e3b0f53ca41e626fda33427f5c51325bc700b;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 4596e839..5e5301c7 100644 --- a/src/init.c +++ b/src/init.c @@ -186,20 +186,8 @@ void DrawInitAnim() } #endif -#if 0 - anim_initial.anim_mode = ANIM_LOOP; - anim_initial.anim_start_frame = 0; - anim_initial.offset_x = anim_initial.width; - anim_initial.offset_y = 0; -#endif - -#if 1 - x = ALIGNED_TEXT_XPOS(&init.busy); - y = ALIGNED_TEXT_YPOS(&init.busy); -#else - x = WIN_XSIZE / 2 - TILESIZE / 2; - y = WIN_YSIZE / 2 - TILESIZE / 2; -#endif + x = ALIGNED_TEXT_XPOS(&init_last.busy); + y = ALIGNED_TEXT_YPOS(&init_last.busy); graphic_info = &anim_initial; /* graphic == 0 => anim_initial */ @@ -5461,6 +5449,28 @@ static void InitMixer() StartMixer(); } +void InitGfxBuffers() +{ + ReCreateBitmap(&bitmap_db_store, WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH); + ReCreateBitmap(&bitmap_db_cross, WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH); + ReCreateBitmap(&bitmap_db_field, FXSIZE, FYSIZE, DEFAULT_DEPTH); + ReCreateBitmap(&bitmap_db_panel, DXSIZE, DYSIZE, DEFAULT_DEPTH); + ReCreateBitmap(&bitmap_db_door, 3 * DXSIZE, DYSIZE + VYSIZE, DEFAULT_DEPTH); + ReCreateBitmap(&bitmap_db_toons, FULL_SXSIZE, FULL_SYSIZE, DEFAULT_DEPTH); + + /* initialize screen properties */ + InitGfxFieldInfo(SX, SY, SXSIZE, SYSIZE, + REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE, + bitmap_db_field); + InitGfxDoor1Info(DX, DY, DXSIZE, DYSIZE); + InitGfxDoor2Info(VX, VY, VXSIZE, VYSIZE); + InitGfxWindowInfo(WIN_XSIZE, WIN_YSIZE); + InitGfxScrollbufferInfo(FXSIZE, FYSIZE); + InitGfxClipRegion(FALSE, -1, -1, -1, -1); + + InitGfxBuffers_SP(); +} + void InitGfx() { struct GraphicInfo *graphic_info_last = graphic_info; @@ -5507,7 +5517,11 @@ void InitGfx() if (filename_font_initial == NULL) /* should not happen */ Error(ERR_EXIT, "cannot get filename for '%s'", CONFIG_TOKEN_FONT_INITIAL); +#if 1 + InitGfxBuffers(); +#else /* create additional image buffers for double-buffering and cross-fading */ + bitmap_db_store = CreateBitmap(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH); bitmap_db_cross = CreateBitmap(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH); bitmap_db_field = CreateBitmap(FXSIZE, FYSIZE, DEFAULT_DEPTH); bitmap_db_panel = CreateBitmap(DXSIZE, DYSIZE, DEFAULT_DEPTH); @@ -5522,6 +5536,8 @@ void InitGfx() InitGfxDoor2Info(VX, VY, VXSIZE, VYSIZE); InitGfxWindowInfo(WIN_XSIZE, WIN_YSIZE); InitGfxScrollbufferInfo(FXSIZE, FYSIZE); +#endif + InitGfxCustomArtworkInfo(); bitmap_font_initial = LoadCustomImage(filename_font_initial); @@ -5635,6 +5651,9 @@ void InitGfx() InitMenuDesignSettings_Static(); InitGfxDrawBusyAnimFunction(DrawInitAnim); + + /* use copy of busy animation to prevent change while reloading artwork */ + init_last = init; #endif } @@ -6114,6 +6133,8 @@ void ReloadCustomArtwork(int force_reload) game_status = last_game_status; /* restore current game status */ + init_last = init; /* switch to new busy animation */ + #if 0 printf("::: ----------------DELAY 1 ...\n"); Delay(3000); @@ -6171,8 +6192,14 @@ void OpenAll() game_status = GAME_MODE_LOADING; +#if 1 + InitCounter(); +#endif + InitGlobal(); /* initialize some global variables */ + print_timestamp_time("[init global stuff]"); + if (options.execute_command) Execute_Command(options.execute_command); @@ -6195,25 +6222,29 @@ void OpenAll() InitArtworkConfig(); /* needed before forking sound child process */ InitMixer(); +#if 0 InitCounter(); +#endif InitRND(NEW_RANDOMIZE); InitSimpleRandom(NEW_RANDOMIZE); InitJoysticks(); - print_timestamp_time("[pre-video]"); + print_timestamp_time("[init setup/config stuff]"); InitVideoDisplay(); InitVideoBuffer(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH, setup.fullscreen); InitEventFilter(FilterMouseMotionEvents); + print_timestamp_time("[init video stuff]"); + InitElementPropertiesStatic(); InitElementPropertiesEngine(GAME_VERSION_ACTUAL); InitElementPropertiesGfxElement(); - print_timestamp_time("[post-video]"); + print_timestamp_time("[init element properties stuff]"); InitGfx();