X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Finit.c;h=14acc191bb0038c66c6e4784421cfe51d764b399;hb=ff2510f5098b545a03965c6b95296eec6885a4fb;hp=6365f42f26be32f947f1a7bb2029b3deac75c7f2;hpb=8458af9ed76d6194de77b184e4e1ba2041e6aa17;p=rocksndiamonds.git diff --git a/src/init.c b/src/init.c index 6365f42f..14acc191 100644 --- a/src/init.c +++ b/src/init.c @@ -57,29 +57,31 @@ static char *image_filename[NUM_PICTURES] = static Bitmap *bitmap_font_initial = NULL; -static void InitGlobal(void); -static void InitSetup(void); -static void InitPlayerInfo(void); -static void InitLevelInfo(void); -static void InitArtworkInfo(void); -static void InitLevelArtworkInfo(void); -static void InitNetworkServer(void); -static void InitArtworkConfig(void); -static void InitImages(void); -static void InitMixer(void); -static void InitSound(void); -static void InitMusic(void); -static void InitGfx(void); -static void InitGfxBackground(void); -static void InitGadgets(void); -static void InitElementProperties(void); -static void InitElementGraphicInfo(void); -static void InitElementSoundInfo(void); -static void InitGraphicInfo(void); +static void InitGlobal(); +static void InitSetup(); +static void InitPlayerInfo(); +static void InitLevelInfo(); +static void InitArtworkInfo(); +static void InitLevelArtworkInfo(); +static void InitNetworkServer(); +static void InitArtworkConfig(); +static void InitImages(); +static void InitMixer(); +static void InitSound(); +static void InitMusic(); +static void InitGfx(); +static void InitGfxBackground(); +static void InitGadgets(); +static void InitElementImages(); +static void InitElementGraphicInfo(); +static void InitElementEditorGraphicInfo(); +static void InitElementSoundInfo(); +static void InitElementProperties(); +static void InitGraphicInfo(); static void InitSoundInfo(); static void Execute_Command(char *); -void OpenAll(void) +void OpenAll() { InitGlobal(); /* initialize some global variables */ @@ -188,6 +190,7 @@ static void InitArtworkConfig() static char *sound_class_prefix[MAX_NUM_ELEMENTS + 1]; static char *action_suffix[NUM_ACTIONS + 1]; static char *direction_suffix[NUM_DIRECTIONS + 1]; + static char *special_suffix[NUM_SPECIAL_GFX_ARGS + 1]; static char *dummy[1] = { NULL }; int i; @@ -199,11 +202,13 @@ static void InitArtworkConfig() action_suffix[i] = element_action_info[i].suffix; for (i=0; i game graphic mapping */ + InitElementEditorGraphicInfo(); /* element => editor graphic mapping */ + InitGraphicInfo(); /* graphic => properties mapping */ InitFontInfo(bitmap_font_initial, graphic_info[IMG_FONT_BIG].bitmap, @@ -256,14 +262,43 @@ static void ReinitializeGraphics() InitGadgets(); InitToons(); + + + + /* !!! TEST ONLY !!! */ + if (0) + { + Bitmap *tst_bitmap = graphic_info[IMG_SAND].bitmap; + Bitmap *tmp_bitmap = ZoomBitmap(tst_bitmap, + tst_bitmap->width / 2, + tst_bitmap->height / 2); + + BlitBitmap(tmp_bitmap, tst_bitmap, 0, 0, 256, 224, 0, 448); + + FreeBitmap(tmp_bitmap); + } + + if (1) + { + printf("CREATING SMALL IMAGES...\n"); + +#if 1 + InitElementImages(); +#else + CreateImageWithSmallImages(IMG_SAND); + CreateImageWithSmallImages(IMG_SAND); +#endif + + printf("DONE!\n"); + } } static void ReinitializeSounds() { - InitElementSoundInfo(); /* initialize element/sound config info */ - InitSoundInfo(); /* initialize sounds info from config file */ + InitElementSoundInfo(); /* element => game sound mapping */ + InitSoundInfo(); /* sound => properties mapping */ - InitPlaySoundLevel(); /* initialize internal game sound values */ + InitPlaySoundLevel(); /* internal game sound settings */ } static void ReinitializeMusic() @@ -275,6 +310,8 @@ static void InitImages() { ReloadCustomImages(); ReinitializeGraphics(); + + LoadCustomElementDescriptions(); } static void InitSound() @@ -619,6 +656,8 @@ void ReloadCustomArtwork() ReloadCustomImages(); ReinitializeGraphics(); + LoadCustomElementDescriptions(); + FreeTileClipmasks(); InitTileClipmasks(); @@ -700,6 +739,21 @@ void InitGadgets() gadgets_initialized = TRUE; } +void InitElementImages() +{ + struct PropertyMapping *property_mapping = getImageListPropertyMapping(); + int num_property_mappings = getImageListPropertyMappingSize(); + int i; + + /* initialize images from static configuration */ + for (i=0; element_to_graphic[i].element > -1; i++) + CreateImageWithSmallImages(element_to_graphic[i].graphic); + + /* initialize images from dynamic configuration */ + for (i=0; i < num_property_mappings; i++) + CreateImageWithSmallImages(property_mapping[i].artwork_index); +} + void InitElementGraphicInfo() { struct PropertyMapping *property_mapping = getImageListPropertyMapping(); @@ -749,8 +803,12 @@ void InitElementGraphicInfo() int element = property_mapping[i].base_index; int action = property_mapping[i].ext1_index; int direction = property_mapping[i].ext2_index; + int special = property_mapping[i].ext3_index; int graphic = property_mapping[i].artwork_index; + if (special != -1) + continue; + if (action < 0) action = ACTION_DEFAULT; @@ -800,6 +858,45 @@ void InitElementGraphicInfo() } } +void InitElementEditorGraphicInfo() +{ + struct PropertyMapping *property_mapping = getImageListPropertyMapping(); + int num_property_mappings = getImageListPropertyMappingSize(); + int i; + + /* always start with reliable default values */ + for (i=0; i