X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.c;h=94c5c3ace7cdc47034b96f86ae1989d38d4545d1;hb=ef45167ef6edc052f7d551b2fe1906432d12777f;hp=4640ac833e6bb6ec87ab9bf3c42cf35210d456ed;hpb=eb09b9aa5521e286723c668030825cd0e3470c3c;p=rocksndiamonds.git diff --git a/src/main.c b/src/main.c index 4640ac83..94c5c3ac 100644 --- a/src/main.c +++ b/src/main.c @@ -20,10 +20,12 @@ #include "events.h" #include "config.h" +Bitmap *bitmap_db_store; Bitmap *bitmap_db_cross; Bitmap *bitmap_db_field; Bitmap *bitmap_db_panel; Bitmap *bitmap_db_door; +Bitmap *bitmap_db_toons; DrawBuffer *fieldbuffer; DrawBuffer *drawto_field; @@ -38,7 +40,15 @@ SDL_Thread *server_thread; int key_joystick_mapping = 0; +#if 1 +#if NEW_SCROLL +boolean redraw[2 + MAX_LEV_FIELDX + 2][2 + MAX_LEV_FIELDY + 2]; +#else +boolean redraw[MAX_LEV_FIELDX + 2][MAX_LEV_FIELDY + 2]; +#endif +#else boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE]; +#endif int redraw_x1 = 0, redraw_y1 = 0; short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; @@ -74,19 +84,47 @@ int GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int GfxDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +int GfxRedraw[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; + +int ActiveElement[MAX_NUM_ELEMENTS]; +int ActiveButton[NUM_IMAGE_FILES]; +int ActiveFont[NUM_FONTS]; int lev_fieldx, lev_fieldy; int scroll_x, scroll_y; +int WIN_XSIZE = 672, WIN_YSIZE = 560; +int SCR_FIELDX = 17, SCR_FIELDY = 17; +int SX = 8, SY = 8; +int REAL_SX = 6, REAL_SY = 6; +int DX = 566, DY = 60; +int VX = 566, VY = 400; +int EX = 566, EY = 356; +int dDX, dDY; +int SXSIZE = 17 * TILEX; /* SCR_FIELDX * TILEX */ +int SYSIZE = 17 * TILEY; /* SCR_FIELDY * TILEY */ +int FULL_SXSIZE = 2 + 17 * TILEX + 2; /* 2 + SXSIZE + 2 */ +int FULL_SYSIZE = 2 + 17 * TILEY + 2; /* 2 + SYSIZE + 2 */ +int TILESIZE_VAR = TILESIZE; + +#if 1 +int FX, FY; +#else int FX = SX, FY = SY; +#endif int ScrollStepSize; int ScreenMovDir = MV_NONE, ScreenMovPos = 0; int ScreenGfxPos = 0; int BorderElement = EL_STEELWALL; int GameFrameDelay = GAME_FRAME_DELAY; int FfwdFrameDelay = FFWD_FRAME_DELAY; +#if 1 +int BX1, BY1; +int BX2, BY2; +#else int BX1 = 0, BY1 = 0; int BX2 = SCR_FIELDX - 1, BY2 = SCR_FIELDY - 1; +#endif int SBX_Left, SBX_Right; int SBY_Upper, SBY_Lower; int ZX, ZY; @@ -106,12 +144,16 @@ struct SetupInfo setup; struct GameInfo game; struct GlobalInfo global; struct BorderInfo border; -struct TitleInfo title; +struct ViewportInfo viewport; +struct TitleFadingInfo fading; +struct TitleFadingInfo title_initial_default; +struct TitleFadingInfo title_default; struct TitleMessageInfo titlemessage_initial_default; struct TitleMessageInfo titlemessage_initial[MAX_NUM_TITLE_MESSAGES]; struct TitleMessageInfo titlemessage_default; struct TitleMessageInfo titlemessage[MAX_NUM_TITLE_MESSAGES]; struct TitleMessageInfo readme; +struct InitInfo init, init_last; struct MenuInfo menu; struct DoorInfo door_1, door_2; struct PreviewInfo preview; @@ -121,6 +163,10 @@ struct MusicInfo *music_info = NULL; struct MusicFileInfo *music_file_info = NULL; struct HelpAnimInfo *helpanim_info = NULL; SetupFileHash *helptext_info = NULL; +SetupFileHash *image_config_hash = NULL; +SetupFileHash *element_token_hash = NULL; +SetupFileHash *graphic_token_hash = NULL; +SetupFileHash *font_token_hash = NULL; /* ------------------------------------------------------------------------- */ @@ -1249,23 +1295,23 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "sp_gravity_port_right", - "sp_port", - "gravity port (leading right)" + "sp_gravity_port", + "gravity-on/off port (leading right)" }, { "sp_gravity_port_down", - "sp_port", - "gravity port (leading down)" + "sp_gravity_port", + "gravity-on/off port (leading down)" }, { "sp_gravity_port_left", - "sp_port", - "gravity port (leading left)" + "sp_gravity_port", + "gravity-on/off port (leading left)" }, { "sp_gravity_port_up", - "sp_port", - "gravity port (leading up)" + "sp_gravity_port", + "gravity-on/off port (leading up)" }, { "sp_sniksnak", @@ -1435,7 +1481,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "dc_gate_white", "gate", - "white gate" + "white door" }, { "dc_gate_white_gray", @@ -3429,43 +3475,43 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "sp_gravity_on_port_right", - "sp_port", - "gravity on port (leading right)" + "sp_gravity_on_port", + "gravity-on port (leading right)" }, { "sp_gravity_on_port_down", - "sp_port", - "gravity on port (leading down)" + "sp_gravity_on_port", + "gravity-on port (leading down)" }, { "sp_gravity_on_port_left", - "sp_port", - "gravity on port (leading left)" + "sp_gravity_on_port", + "gravity-on port (leading left)" }, { "sp_gravity_on_port_up", - "sp_port", - "gravity on port (leading up)" + "sp_gravity_on_port", + "gravity-on port (leading up)" }, { "sp_gravity_off_port_right", - "sp_port", - "gravity off port (leading right)" + "sp_gravity_off_port", + "gravity-off port (leading right)" }, { "sp_gravity_off_port_down", - "sp_port", - "gravity off port (leading down)" + "sp_gravity_off_port", + "gravity-off port (leading down)" }, { "sp_gravity_off_port_left", - "sp_port", - "gravity off port (leading left)" + "sp_gravity_off_port", + "gravity-off port (leading left)" }, { "sp_gravity_off_port_up", - "sp_port", - "gravity off port (leading up)" + "sp_gravity_off_port", + "gravity-off port (leading up)" }, { "balloon_switch_none", @@ -4447,6 +4493,11 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "quicksand", "fast quicksand (with rock)" }, + { + "from_level_template", + "from_level_template", + "element taken from level template" + }, /* ----------------------------------------------------------------------- */ /* "real" (and therefore drawable) runtime elements */ @@ -5068,6 +5119,46 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "sb_default", "-" }, + { + "graphic_1", + "graphic", + "-" + }, + { + "graphic_2", + "graphic", + "-" + }, + { + "graphic_3", + "graphic", + "-" + }, + { + "graphic_4", + "graphic", + "-" + }, + { + "graphic_5", + "graphic", + "-" + }, + { + "graphic_6", + "graphic", + "-" + }, + { + "graphic_7", + "graphic", + "-" + }, + { + "graphic_8", + "graphic", + "-" + }, { "internal_clipboard_custom", "internal", @@ -5364,16 +5455,20 @@ struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS_FULL + 1] = struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1 + 1] = { { ".[DEFAULT]", GFX_SPECIAL_ARG_DEFAULT, }, + { ".LOADING", GFX_SPECIAL_ARG_LOADING, }, { ".TITLE_INITIAL", GFX_SPECIAL_ARG_TITLE_INITIAL, }, { ".TITLE", GFX_SPECIAL_ARG_TITLE, }, { ".MAIN", GFX_SPECIAL_ARG_MAIN, }, { ".LEVELS", GFX_SPECIAL_ARG_LEVELS }, + { ".LEVELNR", GFX_SPECIAL_ARG_LEVELNR }, { ".SCORES", GFX_SPECIAL_ARG_SCORES, }, { ".EDITOR", GFX_SPECIAL_ARG_EDITOR, }, { ".INFO", GFX_SPECIAL_ARG_INFO, }, { ".SETUP", GFX_SPECIAL_ARG_SETUP, }, { ".PLAYING", GFX_SPECIAL_ARG_PLAYING, }, { ".DOOR", GFX_SPECIAL_ARG_DOOR, }, + { ".TAPE", GFX_SPECIAL_ARG_TAPE, }, + { ".PANEL", GFX_SPECIAL_ARG_PANEL, }, { ".PREVIEW", GFX_SPECIAL_ARG_PREVIEW, }, { ".CRUMBLED", GFX_SPECIAL_ARG_CRUMBLED, }, @@ -5433,6 +5528,8 @@ struct FontInfo font_info[NUM_FONTS + 1] = { "font.game_info" }, { "font.info.elements" }, { "font.info.levelset" }, + + { NULL } }; @@ -5468,6 +5565,7 @@ static void print_usage() " --serveronly only start network server\n" " -v, --verbose verbose mode\n" " --debug display debugging information\n" + " --debug-x11-sync enable X11 synchronous mode\n" " -e, --execute COMMAND execute batch COMMAND\n" "\n" "Valid commands for '--execute' option:\n" @@ -5481,6 +5579,7 @@ static void print_usage() " \"dump tape FILE\" dump tape data from FILE\n" " \"autoplay LEVELDIR [NR ...]\" play level tapes for LEVELDIR\n" " \"convert LEVELDIR [NR]\" convert levels in LEVELDIR\n" + " \"create images DIRECTORY\" write BMP images to DIRECTORY\n" "\n", program.command_basename); }