From 77ed16f5281022dce4854250c08ec288f37a99e8 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Tue, 15 Jun 2010 22:52:12 +0200 Subject: [PATCH] rnd-20100615-2-src * added compatibility stuff for redefined "global.door" (which affects all parts of that image that have their own graphics definition now) --- ChangeLog | 4 ++++ src/conftime.h | 2 +- src/init.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/main.h | 20 ++++++++++-------- 4 files changed, 73 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 059ade08..491cf301 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2010-06-15 + * added compatibility stuff for redefined "global.door" (which affects + all parts of that image that have their own graphics definition now) + 2010-06-14 * added sound button graphics to graphics config diff --git a/src/conftime.h b/src/conftime.h index c6eacc50..15b7eb6b 100644 --- a/src/conftime.h +++ b/src/conftime.h @@ -1 +1 @@ -#define COMPILE_DATE_STRING "2010-06-15 00:25" +#define COMPILE_DATE_STRING "2010-06-15 22:47" diff --git a/src/init.c b/src/init.c index 526154ea..4f7ca41a 100644 --- a/src/init.c +++ b/src/init.c @@ -2037,6 +2037,60 @@ static void InitGraphicInfo() #endif } +static void InitGraphicCompatibilityInfo() +{ + struct FileInfo *fi_global_door = + getImageListEntryFromImageID(IMG_GLOBAL_DOOR); + int num_images = getImageListSize(); + int i; + + /* the following compatibility handling is needed for the following case: + versions up to 3.3.0.0 used one large bitmap "global.door" for various + graphics mainly used for door and panel graphics, like editor, tape and + in-game buttons with hard-coded bitmap positions and button sizes; as + these graphics now have individual definitions, redefining "global.door" + to change all these graphics at once like before does not work anymore + (because all those individual definitions still have their default values); + to solve this, remap all those individual definitions that are not + redefined to the new bitmap of "global.door" if it was redefined */ + + /* special compatibility handling if image "global.door" was redefined */ + if (fi_global_door->redefined) + { + for (i = 0; i < num_images; i++) + { + struct FileInfo *fi = getImageListEntryFromImageID(i); + + /* process only those images that still use the default settings */ + if (!fi->redefined) + { + /* process all images which default to same image as "global.door" */ + if (strEqual(fi->default_filename, fi_global_door->default_filename)) + { + // printf("::: special treatment needed for token '%s'\n", fi->token); + + graphic_info[i].bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap; + } + } + } + } + +#if 0 + for (i = 0; i < num_images; i++) + { + struct FileInfo *fi = getImageListEntryFromImageID(i); + + if (i == IMG_GLOBAL_DOOR) + { + printf("::: %s, %s, %d\n", + fi->default_filename, + fi->filename, + fi->redefined); + } + } +#endif +} + static void InitElementSoundInfo() { struct PropertyMapping *property_mapping = getSoundListPropertyMapping(); @@ -2432,6 +2486,9 @@ static void ReinitializeGraphics() InitGraphicInfo_EM(); /* graphic mapping for EM engine */ print_timestamp_time("InitGraphicInfo_EM"); + InitGraphicCompatibilityInfo(); + print_timestamp_time("InitGraphicCompatibilityInfo"); + SetMainBackgroundImage(IMG_BACKGROUND); print_timestamp_time("SetMainBackgroundImage"); SetDoorBackgroundImage(IMG_BACKGROUND_DOOR); diff --git a/src/main.h b/src/main.h index 088842a0..b37e21c5 100644 --- a/src/main.h +++ b/src/main.h @@ -1828,11 +1828,12 @@ #define GFX_SPECIAL_ARG_SETUP 9 #define GFX_SPECIAL_ARG_PLAYING 10 #define GFX_SPECIAL_ARG_DOOR 11 -#define GFX_SPECIAL_ARG_PANEL 12 -#define GFX_SPECIAL_ARG_PREVIEW 13 -#define GFX_SPECIAL_ARG_CRUMBLED 14 +#define GFX_SPECIAL_ARG_TAPE 12 +#define GFX_SPECIAL_ARG_PANEL 13 +#define GFX_SPECIAL_ARG_PREVIEW 14 +#define GFX_SPECIAL_ARG_CRUMBLED 15 -#define NUM_SPECIAL_GFX_ARGS 15 +#define NUM_SPECIAL_GFX_ARGS 16 /* these additional definitions are currently only used for draw offsets */ #define GFX_SPECIAL_ARG_INFO_MAIN 0 @@ -2005,13 +2006,14 @@ #define GAME_MODE_SETUP 9 #define GAME_MODE_PLAYING 10 #define GAME_MODE_PSEUDO_DOOR 11 -#define GAME_MODE_PSEUDO_PANEL 12 -#define GAME_MODE_PSEUDO_PREVIEW 13 -#define GAME_MODE_PSEUDO_CRUMBLED 14 +#define GAME_MODE_PSEUDO_TAPE 12 +#define GAME_MODE_PSEUDO_PANEL 13 +#define GAME_MODE_PSEUDO_PREVIEW 14 +#define GAME_MODE_PSEUDO_CRUMBLED 15 /* there are no special config file suffixes for these modes */ -#define GAME_MODE_PSEUDO_TYPENAME 15 -#define GAME_MODE_QUIT 16 +#define GAME_MODE_PSEUDO_TYPENAME 16 +#define GAME_MODE_QUIT 17 /* special definitions currently only used for custom artwork configuration */ #define MUSIC_PREFIX_BACKGROUND 0 -- 2.34.1