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)
{
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()
fieldbuffer = bitmap_db_field;
SetDrawtoField(DRAW_BACKBUFFER);
- BlitBitmap(new_graphic_info[IMG_MENU_BACK].bitmap, backbuffer,
+ BlitBitmap(new_graphic_info[IMG_MENU_FRAME].bitmap, backbuffer,
0, 0, WIN_XSIZE, WIN_YSIZE, 0, 0);
ClearRectangle(backbuffer, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE);
ClearRectangle(bitmap_db_door, 0, 0, 3 * DXSIZE, DYSIZE + VYSIZE);
}
#endif
+#if 0
+ SyncDisplay();
+#endif
+
ReinitializeGraphics();
FreeTileClipmasks();
#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()
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)
/* now check if no animation frames are outside of the loaded image */
+ if (new_graphic_info[i].bitmap == NULL)
+ continue; /* skip check for optional images */
+
first_frame = 0;
getGraphicSource(i, first_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: 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);
+ }
}
}