#include "config.h"
#include "conf_e2g.c" /* include auto-generated data structure definitions */
+#include "conf_esg.c" /* include auto-generated data structure definitions */
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 InitElementSmallImages();
+static void InitElementGraphicInfo();
+static void InitElementSpecialGraphicInfo();
+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 */
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;
- for (i=0; i<MAX_NUM_ELEMENTS; i++)
- element_info[i].custom_description = NULL;
-
for (i=0; i<MAX_NUM_ELEMENTS + 1; i++)
element_prefix[i] = element_info[i].token_name;
for (i=0; i<MAX_NUM_ELEMENTS + 1; i++)
action_suffix[i] = element_action_info[i].suffix;
for (i=0; i<NUM_DIRECTIONS + 1; i++)
direction_suffix[i] = element_direction_info[i].suffix;
+ for (i=0; i<NUM_SPECIAL_GFX_ARGS + 1; i++)
+ special_suffix[i] = special_suffix_info[i].suffix;
InitImageList(image_config, NUM_IMAGE_FILES, image_config_suffix,
- element_prefix, action_suffix, direction_suffix);
+ element_prefix, action_suffix,direction_suffix,special_suffix);
InitSoundList(sound_config, NUM_SOUND_FILES, sound_config_suffix,
- sound_class_prefix, action_suffix, dummy);
+ sound_class_prefix, action_suffix, dummy, dummy);
}
void InitLevelArtworkInfo()
static void ReinitializeGraphics()
{
- InitElementGraphicInfo(); /* initialize element/graphic config info */
- InitGraphicInfo(); /* initialize graphic info from config file */
+ InitElementGraphicInfo(); /* element game graphic mapping */
+ InitElementSpecialGraphicInfo(); /* element special graphic mapping */
+ InitGraphicInfo(); /* graphic properties mapping */
+
+ InitElementSmallImages(); /* create editor and preview images */
InitFontInfo(bitmap_font_initial,
graphic_info[IMG_FONT_BIG].bitmap,
InitGadgets();
InitToons();
-
-
-
- /* !!! TEST ONLY !!! */
- {
- 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);
- }
}
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()
gadgets_initialized = TRUE;
}
+void InitElementSmallImages()
+{
+ struct PropertyMapping *property_mapping = getImageListPropertyMapping();
+ int num_property_mappings = getImageListPropertyMappingSize();
+ int i;
+
+ /* initialize normal images from static configuration */
+ for (i=0; element_to_graphic[i].element > -1; i++)
+ CreateImageWithSmallImages(element_to_graphic[i].graphic);
+
+ /* initialize special images from static configuration */
+ for (i=0; element_to_special_graphic[i].element > -1; i++)
+ CreateImageWithSmallImages(element_to_special_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();
element_info[i].graphic[ACTION_DEFAULT] =
IMG_CUSTOM_START + (i - EL_CUSTOM_START);
- /* initialize element/graphic mapping from static configuration */
+ /* initialize normal element/graphic mapping from static configuration */
for (i=0; element_to_graphic[i].element > -1; i++)
{
int element = element_to_graphic[i].element;
element_info[element].graphic[action] = graphic;
}
- /* initialize element/graphic mapping from dynamic configuration */
+ /* initialize normal 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 special = property_mapping[i].ext3_index;
int graphic = property_mapping[i].artwork_index;
+ if (special != -1)
+ continue;
+
if (action < 0)
action = ACTION_DEFAULT;
}
}
+void InitElementSpecialGraphicInfo()
+{
+ struct PropertyMapping *property_mapping = getImageListPropertyMapping();
+ int num_property_mappings = getImageListPropertyMappingSize();
+ int i;
+
+ /* always start with reliable default values */
+ for (i=0; i<MAX_NUM_ELEMENTS; i++)
+ {
+ element_info[i].editor_graphic = element_info[i].graphic[ACTION_DEFAULT];
+ element_info[i].preview_graphic = element_info[i].graphic[ACTION_DEFAULT];
+ }
+
+ /* initialize special element/graphic mapping from static configuration */
+ for (i=0; element_to_special_graphic[i].element > -1; i++)
+ {
+ int element = element_to_special_graphic[i].element;
+ int special = element_to_special_graphic[i].special;
+ int graphic = element_to_special_graphic[i].graphic;
+
+ if (special == GFX_SPECIAL_ARG_EDITOR)
+ element_info[element].editor_graphic = graphic;
+ else if (special == GFX_SPECIAL_ARG_PREVIEW)
+ element_info[element].preview_graphic = graphic;
+ }
+
+ /* initialize special element/graphic mapping from dynamic configuration */
+ for (i=0; i < num_property_mappings; i++)
+ {
+ int element = property_mapping[i].base_index;
+ int special = property_mapping[i].ext3_index;
+ int graphic = property_mapping[i].artwork_index;
+
+ if (special == GFX_SPECIAL_ARG_EDITOR)
+ element_info[element].editor_graphic = graphic;
+ else if (special == GFX_SPECIAL_ARG_PREVIEW)
+ element_info[element].preview_graphic = graphic;
+ }
+}
+
static void InitElementSoundInfo()
{
/* soon to come */