X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=66083aeb87d888a3a550f65ceb875a4e6bfc760d;hb=fa26d82a378cebf6b519c566c3f33739ebba7823;hp=255cbc63f5863de2b48257d5e4eca50423946bbb;hpb=fa2a77aa4b53bb786e67f35d6c46f759ebe7823d;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 255cbc63..66083aeb 100644 --- a/src/init.c +++ b/src/init.c @@ -124,10 +124,11 @@ void OpenAll(void) InitImages(); /* needs to know current level directory */ InitSound(); /* needs to know current level directory */ +#if 0 InitGadgets(); /* needs images + number of level series */ +#endif InitGfxBackground(); - InitToons(); if (global.autoplay_leveldir) { @@ -218,6 +219,9 @@ static void ReinitializeGraphics() new_graphic_info[IMG_MENU_FONT_MEDIUM].bitmap, new_graphic_info[IMG_MENU_FONT_SMALL].bitmap, new_graphic_info[IMG_MENU_FONT_EM].bitmap); + + InitGadgets(); + InitToons(); } static void InitImages() @@ -582,6 +586,10 @@ void ReloadCustomArtwork() } #endif +#if 0 + SyncDisplay(); +#endif + ReinitializeGraphics(); FreeTileClipmasks(); @@ -647,13 +655,29 @@ void ReloadCustomArtwork() #endif } +void FreeGadgets() +{ + FreeLevelEditorGadgets(); + FreeGameButtons(); + FreeTapeButtons(); + FreeToolButtons(); + FreeScreenGadgets(); +} + void InitGadgets() { + static boolean gadgets_initialized = FALSE; + + if (gadgets_initialized) + FreeGadgets(); + CreateLevelEditorGadgets(); CreateGameButtons(); CreateTapeButtons(); CreateToolButtons(); CreateScreenGadgets(); + + gadgets_initialized = TRUE; } void InitElementInfo() @@ -677,9 +701,9 @@ void InitElementInfo() element_info[i].graphic[GFX_ACTION_DEFAULT] = IMG_CHAR_START + (i - EL_CHAR_START); - for (i=EL_GENERIC_START; i<=EL_GENERIC_END; i++) + for (i=EL_CUSTOM_START; i<=EL_CUSTOM_END; i++) element_info[i].graphic[GFX_ACTION_DEFAULT] = - IMG_GENERIC_START + (i - EL_GENERIC_START); + IMG_CUSTOM_START + (i - EL_CUSTOM_START); i = 0; while (element_to_graphic[i].element > -1) @@ -852,14 +876,34 @@ static void InitGraphicInfo() if (src_x < 0 || src_y < 0 || src_x + TILEX > src_bitmap->width || src_y + TILEY > src_bitmap->height) - Error(ERR_EXIT, "InitGraphicInfo: first frame of graphic animation object %d outside of image bitmap file '%s'", i, src_bitmap->source_filename); + { + Error(ERR_RETURN, "custom artwork configuration error:"); + Error(ERR_RETURN, "- config file: '%s'", + getImageConfigFilename()); + Error(ERR_RETURN, "- config token: '%s'", + getTokenFromImageID(i)); + Error(ERR_RETURN, "- image file: '%s'", + src_bitmap->source_filename); + Error(ERR_EXIT, "error: first animation frame out of bounds (%d,%d)", + src_x, src_y); + } last_frame = new_graphic_info[i].anim_frames - 1; getGraphicSource(i, last_frame, &src_bitmap, &src_x, &src_y); if (src_x < 0 || src_y < 0 || src_x + TILEX > src_bitmap->width || src_y + TILEY > src_bitmap->height) - Error(ERR_EXIT, "InitGraphicInfo: last frame of graphic animation object %d outside of image bitmap file '%s'", i, src_bitmap->source_filename); + { + Error(ERR_RETURN, "custom artwork configuration error:"); + Error(ERR_RETURN, "- config file: '%s'", + getImageConfigFilename()); + Error(ERR_RETURN, "- config token: '%s'", + getTokenFromImageID(i)); + Error(ERR_RETURN, "- image file: '%s'", + src_bitmap->source_filename); + Error(ERR_EXIT, "error: last animation frame out of bounds (%d,%d)", + src_x, src_y); + } } }