X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fmain.c;h=f09dbd62a22d7c8e4ee033673a64d207bd7f33ff;hp=7f8edf364e9af357ecbc9df7da1bde42f9f74eb6;hb=c0c5862d9ee59c70412b1c35e558101b109a8ec9;hpb=c46bcfd8dd92fbf3ce134eed1e64078147d33b50 diff --git a/src/main.c b/src/main.c index 7f8edf36..f09dbd62 100644 --- a/src/main.c +++ b/src/main.c @@ -16,10 +16,14 @@ #include "main.h" #include "init.h" #include "game.h" +#include "tape.h" #include "events.h" #include "config.h" -Bitmap *bitmap_db_field, *bitmap_db_door; +Bitmap *bitmap_db_cross; +Bitmap *bitmap_db_field; +Bitmap *bitmap_db_panel; +Bitmap *bitmap_db_door; DrawBuffer *fieldbuffer; DrawBuffer *drawto_field; @@ -106,6 +110,7 @@ struct GameInfo game; struct GlobalInfo global; struct MenuInfo menu; struct DoorInfo door_1, door_2; +struct PreviewInfo preview; struct GraphicInfo *graphic_info = NULL; struct SoundInfo *sound_info = NULL; struct MusicInfo *music_info = NULL; @@ -187,7 +192,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "yamyam", "yamyam", - "yam yam" + "yam yam (random start direction)" }, { "robot", @@ -196,7 +201,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "steelwall", - "wall", + "steelwall", "steel wall" }, { @@ -247,7 +252,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "amoeba_wet", "amoeba", - "dropping amoeba" + "dropping amoeba (EM style)" }, { "amoeba_dry", @@ -407,7 +412,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "expandable_wall", "wall", - "growing wall" + "growing wall (horizontal, visible)" }, { "bd_diamond", @@ -441,7 +446,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "invisible_steelwall", - "wall", + "steelwall", "invisible steel wall" }, { @@ -1700,7 +1705,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "steelwall_slippery", - "wall", + "steelwall", "slippery steel wall" }, { @@ -1785,22 +1790,22 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "emc_steelwall_1", - "wall", + "steelwall", "steel wall" }, { "emc_steelwall_2", - "wall", + "steelwall", "steel wall" }, { "emc_steelwall_3", - "wall", + "steelwall", "steel wall" }, { "emc_steelwall_4", - "wall", + "steelwall", "steel wall" }, { @@ -3653,6 +3658,136 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "trigger", "CE value of element triggering change" }, + { + "trigger_ce_score", + "trigger", + "CE score of element triggering change" + }, + { + "current_ce_value", + "current", + "CE value of current element" + }, + { + "current_ce_score", + "current", + "CE score of current element" + }, + { + "yamyam.left", + "yamyam", + "yam yam (starts moving left)" + }, + { + "yamyam.right", + "yamyam", + "yam yam (starts moving right)" + }, + { + "yamyam.up", + "yamyam", + "yam yam (starts moving up)" + }, + { + "yamyam.down", + "yamyam", + "yam yam (starts moving down)" + }, + { + "bd_expandable_wall", + "wall", + "growing wall (horizontal, BD style)" + }, + { + "last_ce_8", + "last_ce", + "CE 8 positions earlier in list" + }, + { + "last_ce_7", + "last_ce", + "CE 7 positions earlier in list" + }, + { + "last_ce_6", + "last_ce", + "CE 6 positions earlier in list" + }, + { + "last_ce_5", + "last_ce", + "CE 5 positions earlier in list" + }, + { + "last_ce_4", + "last_ce", + "CE 4 positions earlier in list" + }, + { + "last_ce_3", + "last_ce", + "CE 3 positions earlier in list" + }, + { + "last_ce_2", + "last_ce", + "CE 2 positions earlier in list" + }, + { + "last_ce_1", + "last_ce", + "CE 1 position earlier in list" + }, + { + "self", + "self", + "the current custom element" + }, + { + "next_ce_1", + "next_ce", + "CE 1 position later in list" + }, + { + "next_ce_2", + "next_ce", + "CE 2 positions later in list" + }, + { + "next_ce_3", + "next_ce", + "CE 3 positions later in list" + }, + { + "next_ce_4", + "next_ce", + "CE 4 positions later in list" + }, + { + "next_ce_5", + "next_ce", + "CE 5 positions later in list" + }, + { + "next_ce_6", + "next_ce", + "CE 6 positions later in list" + }, + { + "next_ce_7", + "next_ce", + "CE 7 positions later in list" + }, + { + "next_ce_8", + "next_ce", + "CE 8 positions later in list" + }, + { + "any_element", + "any_element", + "this element matches any element" + }, /* ----------------------------------------------------------------------- */ /* "real" (and therefore drawable) runtime elements */ @@ -3715,7 +3850,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "invisible_steelwall.active", - "wall", + "steelwall", "-" }, { @@ -4330,24 +4465,24 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "hide group elements" }, { - "internal_cascade_user", + "internal_cascade_ref", "internal", - "show user defined elements" + "show reference elements" }, { - "internal_cascade_user.active", + "internal_cascade_ref.active", "internal", - "hide user defined elements" + "hide reference elements" }, { - "internal_cascade_generic", + "internal_cascade_user", "internal", - "show elements" + "show user defined elements" }, { - "internal_cascade_generic.active", + "internal_cascade_user.active", "internal", - "hide elements" + "hide user defined elements" }, { "internal_cascade_dynamic", @@ -4485,6 +4620,7 @@ struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS_FULL + 1] = struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1 + 1] = { { ".[DEFAULT]", GAME_MODE_DEFAULT, }, + { ".TITLE", GAME_MODE_TITLE, }, { ".MAIN", GAME_MODE_MAIN, }, { ".LEVELS", GAME_MODE_LEVELS }, { ".SCORES", GAME_MODE_SCORES, }, @@ -4504,47 +4640,71 @@ struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1 + 1] = struct TokenIntPtrInfo image_config_vars[] = { - { "global.num_toons", &global.num_toons }, + { "global.num_toons", &global.num_toons }, + + { "menu.draw_xoffset", &menu.draw_xoffset[GFX_SPECIAL_ARG_DEFAULT] }, + { "menu.draw_yoffset", &menu.draw_yoffset[GFX_SPECIAL_ARG_DEFAULT] }, + { "menu.draw_xoffset.MAIN", &menu.draw_xoffset[GFX_SPECIAL_ARG_MAIN] }, + { "menu.draw_yoffset.MAIN", &menu.draw_yoffset[GFX_SPECIAL_ARG_MAIN] }, + { "menu.draw_xoffset.LEVELS", &menu.draw_xoffset[GFX_SPECIAL_ARG_LEVELS] }, + { "menu.draw_yoffset.LEVELS", &menu.draw_yoffset[GFX_SPECIAL_ARG_LEVELS] }, + { "menu.draw_xoffset.SCORES", &menu.draw_xoffset[GFX_SPECIAL_ARG_SCORES] }, + { "menu.draw_yoffset.SCORES", &menu.draw_yoffset[GFX_SPECIAL_ARG_SCORES] }, + { "menu.draw_xoffset.EDITOR", &menu.draw_xoffset[GFX_SPECIAL_ARG_EDITOR] }, + { "menu.draw_yoffset.EDITOR", &menu.draw_yoffset[GFX_SPECIAL_ARG_EDITOR] }, + { "menu.draw_xoffset.INFO", &menu.draw_xoffset[GFX_SPECIAL_ARG_INFO] }, + { "menu.draw_yoffset.INFO", &menu.draw_yoffset[GFX_SPECIAL_ARG_INFO] }, + { "menu.draw_xoffset.SETUP", &menu.draw_xoffset[GFX_SPECIAL_ARG_SETUP] }, + { "menu.draw_yoffset.SETUP", &menu.draw_yoffset[GFX_SPECIAL_ARG_SETUP] }, + + { "menu.scrollbar_xoffset", &menu.scrollbar_xoffset }, - { "menu.draw_xoffset", &menu.draw_xoffset[GFX_SPECIAL_ARG_DEFAULT]}, - { "menu.draw_yoffset", &menu.draw_yoffset[GFX_SPECIAL_ARG_DEFAULT]}, - { "menu.draw_xoffset.MAIN", &menu.draw_xoffset[GFX_SPECIAL_ARG_MAIN] }, - { "menu.draw_yoffset.MAIN", &menu.draw_yoffset[GFX_SPECIAL_ARG_MAIN] }, - { "menu.draw_xoffset.LEVELS", &menu.draw_xoffset[GFX_SPECIAL_ARG_LEVELS] }, - { "menu.draw_yoffset.LEVELS", &menu.draw_yoffset[GFX_SPECIAL_ARG_LEVELS] }, - { "menu.draw_xoffset.SCORES", &menu.draw_xoffset[GFX_SPECIAL_ARG_SCORES] }, - { "menu.draw_yoffset.SCORES", &menu.draw_yoffset[GFX_SPECIAL_ARG_SCORES] }, - { "menu.draw_xoffset.EDITOR", &menu.draw_xoffset[GFX_SPECIAL_ARG_EDITOR] }, - { "menu.draw_yoffset.EDITOR", &menu.draw_yoffset[GFX_SPECIAL_ARG_EDITOR] }, - { "menu.draw_xoffset.INFO", &menu.draw_xoffset[GFX_SPECIAL_ARG_INFO] }, - { "menu.draw_yoffset.INFO", &menu.draw_yoffset[GFX_SPECIAL_ARG_INFO] }, - { "menu.draw_xoffset.SETUP", &menu.draw_xoffset[GFX_SPECIAL_ARG_SETUP] }, - { "menu.draw_yoffset.SETUP", &menu.draw_yoffset[GFX_SPECIAL_ARG_SETUP] }, + { "menu.list_size", &menu.list_size[GFX_SPECIAL_ARG_DEFAULT] }, + { "menu.list_size.LEVELS", &menu.list_size[GFX_SPECIAL_ARG_LEVELS] }, + { "menu.list_size.SCORES", &menu.list_size[GFX_SPECIAL_ARG_SCORES] }, + { "menu.list_size.INFO", &menu.list_size[GFX_SPECIAL_ARG_INFO] }, - { "menu.scrollbar_xoffset", &menu.scrollbar_xoffset }, + { "menu.fade_delay", &menu.fade_delay }, + { "menu.post_delay", &menu.post_delay }, - { "menu.list_size", &menu.list_size[GFX_SPECIAL_ARG_DEFAULT] }, - { "menu.list_size.LEVELS", &menu.list_size[GFX_SPECIAL_ARG_LEVELS] }, - { "menu.list_size.SCORES", &menu.list_size[GFX_SPECIAL_ARG_SCORES] }, - { "menu.list_size.INFO", &menu.list_size[GFX_SPECIAL_ARG_INFO] }, + { "door_1.width", &door_1.width }, + { "door_1.height", &door_1.height }, + { "door_1.step_offset", &door_1.step_offset }, + { "door_1.step_delay", &door_1.step_delay }, + { "door_1.anim_mode", &door_1.anim_mode }, + { "door_2.width", &door_2.width }, + { "door_2.height", &door_2.height }, + { "door_2.step_offset", &door_2.step_offset }, + { "door_2.step_delay", &door_2.step_delay }, + { "door_2.anim_mode", &door_2.anim_mode }, - { "door_1.width", &door_1.width }, - { "door_1.height", &door_1.height }, - { "door_1.step_offset", &door_1.step_offset }, - { "door_1.step_delay", &door_1.step_delay }, - { "door_1.anim_mode", &door_1.anim_mode }, - { "door_2.width", &door_2.width }, - { "door_2.height", &door_2.height }, - { "door_2.step_offset", &door_2.step_offset }, - { "door_2.step_delay", &door_2.step_delay }, - { "door_2.anim_mode", &door_2.anim_mode }, + { "preview.x", &preview.x }, + { "preview.y", &preview.y }, + { "preview.xsize", &preview.xsize }, + { "preview.ysize", &preview.ysize }, + { "preview.tile_size", &preview.tile_size }, + { "preview.step_offset", &preview.step_offset }, + { "preview.step_delay", &preview.step_delay }, - { "[player].boring_delay_fixed", &game.player_boring_delay_fixed }, - { "[player].boring_delay_random", &game.player_boring_delay_random }, - { "[player].sleeping_delay_fixed", &game.player_sleeping_delay_fixed }, - { "[player].sleeping_delay_random", &game.player_sleeping_delay_random }, + { "game.panel.level.x", &game.panel.level.x }, + { "game.panel.level.y", &game.panel.level.y }, + { "game.panel.gems.x", &game.panel.gems.x }, + { "game.panel.gems.y", &game.panel.gems.y }, + { "game.panel.inventory.x", &game.panel.inventory.x }, + { "game.panel.inventory.y", &game.panel.inventory.y }, + { "game.panel.keys.x", &game.panel.keys.x }, + { "game.panel.keys.y", &game.panel.keys.y }, + { "game.panel.score.x", &game.panel.score.x }, + { "game.panel.score.y", &game.panel.score.y }, + { "game.panel.time.x", &game.panel.time.x }, + { "game.panel.time.y", &game.panel.time.y }, - { NULL, NULL, } + { "[player].boring_delay_fixed", &game.player_boring_delay_fixed }, + { "[player].boring_delay_random", &game.player_boring_delay_random }, + { "[player].sleeping_delay_fixed", &game.player_sleeping_delay_fixed }, + { "[player].sleeping_delay_random", &game.player_sleeping_delay_random }, + + { NULL, NULL, } }; @@ -4586,6 +4746,7 @@ struct FontInfo font_info[NUM_FONTS + 1] = { "font.value_1" }, { "font.value_2" }, { "font.value_old" }, + { "font.level_number.active" }, { "font.level_number" }, { "font.tape_recorder" }, { "font.game_info" }, @@ -4643,9 +4804,11 @@ static void print_usage() int main(int argc, char *argv[]) { - InitProgramInfo(argv[0], USERDATA_DIRECTORY, - PROGRAM_TITLE_STRING, getWindowTitleString(), - ICON_TITLE_STRING, X11_ICON_FILENAME, X11_ICONMASK_FILENAME, + char * window_title_string = getWindowTitleString(); + + InitProgramInfo(argv[0], USERDATA_DIRECTORY, USERDATA_DIRECTORY_UNIX, + PROGRAM_TITLE_STRING, window_title_string, ICON_TITLE_STRING, + X11_ICON_FILENAME, X11_ICONMASK_FILENAME, SDL_ICON_FILENAME, MSDOS_POINTER_FILENAME, COOKIE_PREFIX, FILENAME_PREFIX, GAME_VERSION_ACTUAL);