X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=27088af6f34530286779dc76703df458e405edb5;hb=92204d79d159df0be4bd05c4b4e4dabbcaefe805;hp=61838c68232306d4dda9e3da361cd8e0e9c774dc;hpb=fa9c72bb286c8e5e5095e666dbf85981ad3a8ea2;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 61838c68..27088af6 100644 --- a/src/init.c +++ b/src/init.c @@ -73,7 +73,8 @@ static void InitGfx(void); static void InitGfxBackground(void); static void InitGadgets(void); static void InitElementProperties(void); -static void InitElementInfo(void); +static void InitElementGraphicInfo(void); +static void InitElementSoundInfo(void); static void InitGraphicInfo(void); static void InitSoundInfo(); static void Execute_Command(char *); @@ -119,7 +120,6 @@ void OpenAll(void) InitEventFilter(FilterMouseMotionEvents); InitElementProperties(); - InitElementInfo(); InitGfx(); @@ -191,6 +191,9 @@ static void InitArtworkConfig() static char *dummy[1] = { NULL }; int i; + for (i=0; iwidth / 2, + tst_bitmap->height / 2); + + BlitBitmap(tmp_bitmap, tst_bitmap, 0, 0, 256, 224, 0, 448); + + FreeBitmap(tmp_bitmap); + } } static void ReinitializeSounds() { - InitSoundInfo(); /* initialize sounds info from config file */ + InitElementSoundInfo(); /* initialize element/sound config info */ + InitSoundInfo(); /* initialize sounds info from config file */ - InitPlaySoundLevel(); + InitPlaySoundLevel(); /* initialize internal game sound values */ } static void ReinitializeMusic() @@ -273,6 +292,8 @@ static void InitImages() { ReloadCustomImages(); ReinitializeGraphics(); + + LoadCustomElementDescriptions(); } static void InitSound() @@ -617,6 +638,8 @@ void ReloadCustomArtwork() ReloadCustomImages(); ReinitializeGraphics(); + LoadCustomElementDescriptions(); + FreeTileClipmasks(); InitTileClipmasks(); @@ -698,8 +721,10 @@ void InitGadgets() gadgets_initialized = TRUE; } -void InitElementInfo() +void InitElementGraphicInfo() { + struct PropertyMapping *property_mapping = getImageListPropertyMapping(); + int num_property_mappings = getImageListPropertyMappingSize(); int i, act, dir; /* set values to -1 to identify later as "uninitialized" values */ @@ -722,27 +747,38 @@ void InitElementInfo() element_info[i].graphic[ACTION_DEFAULT] = IMG_CUSTOM_START + (i - EL_CUSTOM_START); - i = 0; - while (element_to_graphic[i].element > -1) + /* initialize element/graphic mapping from static configuration */ + for (i=0; element_to_graphic[i].element > -1; i++) { int element = element_to_graphic[i].element; - int direction = element_to_graphic[i].direction; int action = element_to_graphic[i].action; + int direction = element_to_graphic[i].direction; int graphic = element_to_graphic[i].graphic; if (action < 0) action = ACTION_DEFAULT; if (direction > -1) - { - direction = MV_DIR_BIT(direction); - element_info[element].direction_graphic[action][direction] = graphic; - } else element_info[element].graphic[action] = graphic; + } + + /* initialize element/graphic mapping from dynamic configuration */ + for (i=0; i < num_property_mappings; i++) + { + int element = property_mapping[i].base_index; + int action = property_mapping[i].ext1_index; + int direction = property_mapping[i].ext2_index; + int graphic = property_mapping[i].artwork_index; + + if (action < 0) + action = ACTION_DEFAULT; - i++; + if (direction > -1) + element_info[element].direction_graphic[action][direction] = graphic; + else + element_info[element].graphic[action] = graphic; } /* now set all '-1' values to element specific default values */ @@ -785,6 +821,11 @@ void InitElementInfo() } } +static void InitElementSoundInfo() +{ + /* soon to come */ +} + static void set_graphic_parameters(int graphic, int *parameter) { Bitmap *src_bitmap = getBitmapFromImageID(graphic); @@ -1015,14 +1056,11 @@ static void InitSoundInfo() struct FileInfo *sound = getSoundListEntry(i); int len_effect_text = strlen(sound->token); -#if 1 sound_effect_properties[i] = ACTION_OTHER; sound_info[i].loop = FALSE; -#endif /* determine all loop sounds and identify certain sound classes */ -#if 1 for (j=0; element_action_info[j].suffix; j++) { int len_action_text = strlen(element_action_info[j].suffix); @@ -1037,11 +1075,9 @@ static void InitSoundInfo() sound_info[i].loop = TRUE; } } -#endif /* associate elements and some selected sound actions */ -#if 1 for (j=0; jparameter); }