X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=57c03bd0ab3060a5160435c13259012377558537;hb=f648fc704c75dcfb0e7721a723c7c7391e708370;hp=9b9497f4172af42590ced741f1a9cc589cf1a90b;hpb=6e9374af7b69e20dbab5b8b3e06a8d4e2ffb1ddd;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 9b9497f4..57c03bd0 100644 --- a/src/init.c +++ b/src/init.c @@ -238,12 +238,25 @@ void InitFontGraphicInfo() getImageListEntryFromImageID(base_graphic)->redefined; boolean special_redefined = getImageListEntryFromImageID(graphic)->redefined; + boolean special_cloned = (graphic_info[graphic].clone_from != -1); + +#if 0 + printf("::: %d, %d, %d / %d, %d, %d\n", + font_nr, special, graphic, + base_redefined, special_redefined, special_cloned); +#endif + +#if 0 + // special_cloned = 0; +#endif /* if the base font ("font.title_1", for example) has been redefined, but not the special font ("font.title_1.LEVELS", for example), do not use an existing (in this case considered obsolete) special font anymore, but use the automatically determined default font */ - if (base_redefined && !special_redefined) + /* special case: cloned special fonts must be explicitly redefined, + but are not automatically redefined by redefining base font */ + if (base_redefined && !special_redefined && !special_cloned) continue; font_info[font_nr].special_graphic[special] = graphic; @@ -270,6 +283,87 @@ void InitFontGraphicInfo() } } +#if 0 + printf("-0- T3.P: %d, %d\n", + font_info[FONT_TEXT_3].special_graphic[GFX_SPECIAL_ARG_PREVIEW], + font_info[FONT_TEXT_3].special_bitmap_id[GFX_SPECIAL_ARG_PREVIEW]); + + printf("-0- T4.M: %d, %d\n", + font_info[FONT_TEXT_4].special_graphic[GFX_SPECIAL_ARG_MAIN], + font_info[FONT_TEXT_4].special_bitmap_id[GFX_SPECIAL_ARG_MAIN]); +#endif + +#if 1 + /* correct special font/graphic mapping for cloned fonts + (per definition only needed for static configuration) */ + for (i = 0; font_to_graphic[i].font_nr > -1; i++) + { + int font_nr = font_to_graphic[i].font_nr; + int special = font_to_graphic[i].special; + int graphic = font_to_graphic[i].graphic; +#if 0 + int base_graphic = font2baseimg(font_nr); +#endif + + if (special >= 0 && special < NUM_SPECIAL_GFX_ARGS) + { +#if 0 + boolean base_redefined = + getImageListEntryFromImageID(base_graphic)->redefined; +#endif + boolean special_redefined = + getImageListEntryFromImageID(graphic)->redefined; + boolean special_cloned = (graphic_info[graphic].clone_from != -1); + + if (special_cloned && !special_redefined) + { + int j; + +#if 0 + printf(":2: %d, %d, %d / %d, %d, %d\n", + font_nr, special, graphic, + base_redefined, special_redefined, special_cloned); +#endif + + for (j = 0; font_to_graphic[j].font_nr > -1; j++) + { + int font_nr2 = font_to_graphic[j].font_nr; + int special2 = font_to_graphic[j].special; + int graphic2 = font_to_graphic[j].graphic; +#if 0 + int base_graphic2 = font2baseimg(font_nr2); +#endif + + if (graphic2 == graphic_info[graphic].clone_from) + { +#if 0 + printf(":2.1: %d, %d, %d, %d\n", + font_nr2, special2, graphic2, base_graphic2); +#endif + +#if 1 + font_info[font_nr].special_graphic[special] = + font_info[font_nr2].special_graphic[special2]; + font_info[font_nr].special_bitmap_id[special] = + font_info[font_nr2].special_bitmap_id[special2]; +#else +#if 1 + font_info[font_nr].special_graphic[special] = graphic2; + font_info[font_nr].special_bitmap_id[special] = + font_info[font_nr2].special_bitmap_id[special2]; +#else + font_info[font_nr].special_graphic[special] = graphic2; + font_info[font_nr].special_bitmap_id[special] = num_font_bitmaps; + num_font_bitmaps++; +#endif +#endif + } + } + } + } + } +#endif + /* reset non-redefined ".active" font graphics if normal font is redefined */ /* (this different treatment is needed because normal and active fonts are independently defined ("active" is not a property of font definitions!) */ @@ -318,6 +412,24 @@ void InitFontGraphicInfo() } } +#if 0 + printf("-1- T4.M: %d, %d\n", + font_info[FONT_TEXT_4].special_graphic[GFX_SPECIAL_ARG_MAIN], + font_info[FONT_TEXT_4].special_bitmap_id[GFX_SPECIAL_ARG_MAIN]); + + font_info[FONT_TEXT_4].special_graphic[GFX_SPECIAL_ARG_MAIN] = + IMG_FONT_TEXT_3; + font_info[FONT_TEXT_4].special_bitmap_id[GFX_SPECIAL_ARG_MAIN] = + FONT_TEXT_3; + +#if 0 + font_info[FONT_TEXT_4].special_graphic[GFX_SPECIAL_ARG_MAIN] = + IMG_FONT_TEXT_3_PREVIEW; + font_info[FONT_TEXT_4].special_bitmap_id[GFX_SPECIAL_ARG_MAIN] = + FONT_TEXT_3; +#endif +#endif + /* ---------- initialize font bitmap array ---------- */ if (font_bitmap_info != NULL) @@ -368,6 +480,16 @@ void InitFontGraphicInfo() } InitFontInfo(font_bitmap_info, num_font_bitmaps, getFontBitmapID); + +#if 0 + printf("-X- T3.P: %d, %d\n", + font_info[FONT_TEXT_3].special_graphic[GFX_SPECIAL_ARG_PREVIEW], + font_info[FONT_TEXT_3].special_bitmap_id[GFX_SPECIAL_ARG_PREVIEW]); + + printf("-4- T4.M: %d, %d\n", + font_info[FONT_TEXT_4].special_graphic[GFX_SPECIAL_ARG_MAIN], + font_info[FONT_TEXT_4].special_bitmap_id[GFX_SPECIAL_ARG_MAIN]); +#endif } void InitElementGraphicInfo()