X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fmain.c;h=fca3cfeaf02c36318ba52aca6960ad172da61678;hp=137de08e3583bb2425509a18973e3b4c72472c8c;hb=8511bdf9d8df009aae3e4abd68ac5b5f18970237;hpb=f2b486caeabc0548dfa744c1569496c087b7420f diff --git a/src/main.c b/src/main.c index 137de08e..fca3cfea 100644 --- a/src/main.c +++ b/src/main.c @@ -1,7 +1,7 @@ /*********************************************************** * Rocks'n'Diamonds -- McDuffin Strikes Back! * *----------------------------------------------------------* -* (c) 1995-2002 Artsoft Entertainment * +* (c) 1995-2006 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -16,17 +16,14 @@ #include "main.h" #include "init.h" #include "game.h" +#include "tape.h" #include "events.h" #include "config.h" -#if 0 -GC tile_clip_gc; -Bitmap *pix[NUM_BITMAPS]; -#endif -Bitmap *bitmap_db_field, *bitmap_db_door; -#if 0 -Pixmap tile_clipmask[NUM_TILES]; -#endif +Bitmap *bitmap_db_cross; +Bitmap *bitmap_db_field; +Bitmap *bitmap_db_panel; +Bitmap *bitmap_db_door; DrawBuffer *fieldbuffer; DrawBuffer *drawto_field; @@ -50,17 +47,19 @@ short MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short ChangeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short ChangePage[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +short CustomValue[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short Back[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; boolean Pushed[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -unsigned long Changed[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -unsigned long ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +short ChangeCount[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +short ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short WasJustMoving[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short WasJustFalling[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short CheckCollision[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +short CheckImpact[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short AmoebaCnt[MAX_NUM_AMOEBA]; short AmoebaCnt2[MAX_NUM_AMOEBA]; @@ -70,8 +69,6 @@ short ExplodeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int RunnerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int PlayerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -unsigned long Properties[MAX_NUM_ELEMENTS][NUM_EP_BITFIELDS]; - int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; @@ -83,7 +80,7 @@ int scroll_x, scroll_y; int FX = SX, FY = SY; int ScrollStepSize; -int ScreenMovDir = MV_NO_MOVING, ScreenMovPos = 0; +int ScreenMovDir = MV_NONE, ScreenMovPos = 0; int ScreenGfxPos = 0; int BorderElement = EL_STEELWALL; int GameFrameDelay = GAME_FRAME_DELAY; @@ -108,8 +105,11 @@ struct TapeInfo tape; struct SetupInfo setup; struct GameInfo game; struct GlobalInfo global; +struct BorderInfo border; +struct TitleInfo title; 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; @@ -191,7 +191,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "yamyam", "yamyam", - "yam yam" + "yam yam (random start direction)" }, { "robot", @@ -200,7 +200,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "steelwall", - "wall", + "steelwall", "steel wall" }, { @@ -251,7 +251,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "amoeba_wet", "amoeba", - "dropping amoeba" + "dropping amoeba (EM style)" }, { "amoeba_dry", @@ -296,60 +296,63 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "key_1", "key", - "red key" + "key 1" }, { "key_2", "key", - "yellow key" + "key 2" }, { "key_3", "key", - "green key" + "key 3" }, { "key_4", "key", - "blue key" + "key 4" }, { "gate_1", "gate", - "red door" + "door 1" }, { "gate_2", "gate", - "yellow door" + "door 2" }, { "gate_3", "gate", - "green door" + "door 3" }, { "gate_4", "gate", - "blue door" + "door 4" }, { "gate_1_gray", "gate", - "gray door (opened by red key)" + "gray door (opened by key 1)" }, { "gate_2_gray", "gate", - "gray door (opened by yellow key)"}, + "gray door (opened by key 2)" + }, { "gate_3_gray", "gate", - "gray door (opened by green key)"}, + "gray door (opened by key 3)" + }, { "gate_4_gray", "gate", - "gray door (opened by blue key)"}, + "gray door (opened by key 4)" + }, { "dynamite", "dynamite", @@ -408,7 +411,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "expandable_wall", "wall", - "growing wall" + "growing wall (horizontal, visible)" }, { "bd_diamond", @@ -442,7 +445,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "invisible_steelwall", - "wall", + "steelwall", "invisible steel wall" }, { @@ -530,22 +533,22 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "player_1", "player", - "yellow player" + "player 1" }, { "player_2", "player", - "red player" + "player 2" }, { "player_3", "player", - "green player" + "player 3" }, { "player_4", "player", - "blue player" + "player 4" }, { "bug.right", @@ -750,7 +753,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "letter '$'" }, { - "char_procent", + "char_percent", "char", "letter '%'" }, @@ -1112,17 +1115,17 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "char_unused", "char", - "letter ''" + "letter 'button'" }, { "char_unused", "char", - "letter ''" + "letter 'up'" }, { "char_unused", "char", - "letter ''" + "letter 'down'" }, { "expandable_wall_horizontal", @@ -1142,22 +1145,22 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "em_gate_1", "gate", - "red door (EM style)" + "door 1 (EM style)" }, { "em_gate_2", "gate", - "yellow door (EM style)" + "door 2 (EM style)" }, { "em_gate_3", "gate", - "green door (EM style)" + "door 3 (EM style)" }, { "em_gate_4", "gate", - "blue door (EM style)" + "door 4 (EM style)" }, { "em_key_2_file_obsolete", @@ -1377,32 +1380,32 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "em_gate_1_gray", "gate", - "gray door (EM style, red key)" + "gray door (EM style, key 1)" }, { "em_gate_2_gray", "gate", - "gray door (EM style, yellow key)" + "gray door (EM style, key 2)" }, { "em_gate_3_gray", "gate", - "gray door (EM style, green key)" + "gray door (EM style, key 3)" }, { "em_gate_4_gray", "gate", - "gray door (EM style, blue key)" + "gray door (EM style, key 4)" }, { - "unused_254", - "unused", - "(not used)" + "em_dynamite", + "dynamite", + "dynamite (EM style)" }, { - "unused_255", - "unused", - "(not used)" + "em_dynamite.active", + "dynamite", + "burning dynamite (EM style)" }, { "pearl", @@ -1482,122 +1485,122 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "conveyor_belt_1_left", "conveyor_belt", - "red conveyor belt (left)" + "conveyor belt 1 (left)" }, { "conveyor_belt_1_middle", "conveyor_belt", - "red conveyor belt (middle)" + "conveyor belt 1 (middle)" }, { "conveyor_belt_1_right", "conveyor_belt", - "red conveyor belt (right)" + "conveyor belt 1 (right)" }, { "conveyor_belt_1_switch_left", "conveyor_belt_switch", - "switch for red conveyor belt (left)" + "switch for conveyor belt 1 (left)" }, { "conveyor_belt_1_switch_middle", "conveyor_belt_switch", - "switch for red conveyor belt (middle)" + "switch for conveyor belt 1 (middle)" }, { "conveyor_belt_1_switch_right", "conveyor_belt_switch", - "switch for red conveyor belt (right)" + "switch for conveyor belt 1 (right)" }, { "conveyor_belt_2_left", "conveyor_belt", - "yellow conveyor belt (left)" + "conveyor belt 2 (left)" }, { "conveyor_belt_2_middle", "conveyor_belt", - "yellow conveyor belt (middle)" + "conveyor belt 2 (middle)" }, { "conveyor_belt_2_right", "conveyor_belt", - "yellow conveyor belt (right)" + "conveyor belt 2 (right)" }, { "conveyor_belt_2_switch_left", "conveyor_belt_switch", - "switch for yellow conveyor belt (left)" + "switch for conveyor belt 2 (left)" }, { "conveyor_belt_2_switch_middle", "conveyor_belt_switch", - "switch for yellow conveyor belt (middle)" + "switch for conveyor belt 2 (middle)" }, { "conveyor_belt_2_switch_right", "conveyor_belt_switch", - "switch for yellow conveyor belt (right)" + "switch for conveyor belt 2 (right)" }, { "conveyor_belt_3_left", "conveyor_belt", - "green conveyor belt (left)" + "conveyor belt 3 (left)" }, { "conveyor_belt_3_middle", "conveyor_belt", - "green conveyor belt (middle)" + "conveyor belt 3 (middle)" }, { "conveyor_belt_3_right", "conveyor_belt", - "green conveyor belt (right)" + "conveyor belt 3 (right)" }, { "conveyor_belt_3_switch_left", "conveyor_belt_switch", - "switch for green conveyor belt (left)" + "switch for conveyor belt 3 (left)" }, { "conveyor_belt_3_switch_middle", "conveyor_belt_switch", - "switch for green conveyor belt (middle)" + "switch for conveyor belt 3 (middle)" }, { "conveyor_belt_3_switch_right", "conveyor_belt_switch", - "switch for green conveyor belt (right)" + "switch for conveyor belt 3 (right)" }, { "conveyor_belt_4_left", "conveyor_belt", - "blue conveyor belt (left)" + "conveyor belt 4 (left)" }, { "conveyor_belt_4_middle", "conveyor_belt", - "blue conveyor belt (middle)" + "conveyor belt 4 (middle)" }, { "conveyor_belt_4_right", "conveyor_belt", - "blue conveyor belt (right)" + "conveyor belt 4 (right)" }, { "conveyor_belt_4_switch_left", "conveyor_belt_switch", - "switch for blue conveyor belt (left)" + "switch for conveyor belt 4 (left)" }, { "conveyor_belt_4_switch_middle", "conveyor_belt_switch", - "switch for blue conveyor belt (middle)" + "switch for conveyor belt 4 (middle)" }, { "conveyor_belt_4_switch_right", "conveyor_belt_switch", - "switch for blue conveyor belt (right)" + "switch for conveyor belt 4 (right)" }, { "landmine", @@ -1621,63 +1624,63 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "sign_exclamation", - "wall", + "sign", "sign (exclamation)" }, { "sign_radioactivity", - "wall", + "sign", "sign (radio activity)" }, { "sign_stop", - "wall", + "sign", "sign (stop)" }, { "sign_wheelchair", - "wall", + "sign", "sign (wheel chair)" }, { "sign_parking", - "wall", + "sign", "sign (parking)" }, { - "sign_oneway", - "wall", - "sign (one way)" + "sign_no_entry", + "sign", + "sign (no entry)" }, { - "sign_heart", - "wall", - "sign (heart)" + "sign_unused_1", + "sign", + "sign (unused)" }, { - "sign_triangle", - "wall", - "sign (triangle)" + "sign_give_way", + "sign", + "sign (give way)" }, { - "sign_round", - "wall", - "sign (round)" + "sign_entry_forbidden", + "sign", + "sign (entry forbidden)" }, { - "sign_exit", - "wall", - "sign (exit)" + "sign_emergency_exit", + "sign", + "sign (emergency exit)" }, { - "sign_yinyang", - "wall", + "sign_yin_yang", + "sign", "sign (yin yang)" }, { - "sign_other", - "wall", - "sign (other)" + "sign_unused_2", + "sign", + "sign (unused)" }, { "mole.left", @@ -1701,7 +1704,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "steelwall_slippery", - "wall", + "steelwall", "slippery steel wall" }, { @@ -1762,46 +1765,46 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "balloon_switch_left", "balloon_switch", - "send balloon to the left" + "wind switch (left)" }, { "balloon_switch_right", "balloon_switch", - "send balloon to the right" + "wind switch (right)" }, { "balloon_switch_up", "balloon_switch", - "send balloon up" + "wind switch (up)" }, { "balloon_switch_down", "balloon_switch", - "send balloon down" + "wind switch (down)" }, { "balloon_switch_any", "balloon_switch", - "send balloon in any direction" + "wind switch (any direction)" }, { "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" }, { @@ -3207,22 +3210,22 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "em_key_1", "key", - "red key (EM style)" + "key 1 (EM style)" }, { "em_key_2", "key", - "yellow key (EM style)" + "key 2 (EM style)" }, { "em_key_3", "key", - "green key (EM style)" + "key 3 (EM style)" }, { "em_key_4", "key", - "blue key (EM style)" + "key 4 (EM style)" }, { "envelope_1", @@ -3462,65 +3465,65 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "balloon_switch_none", "balloon_switch", - "stop moving balloon" + "wind switch (off)" }, { - "em_gate_5", + "emc_gate_5", "gate", "door 5 (EMC style)", }, { - "em_gate_6", + "emc_gate_6", "gate", "door 6 (EMC style)", }, { - "em_gate_7", + "emc_gate_7", "gate", "door 7 (EMC style)", }, { - "em_gate_8", + "emc_gate_8", "gate", "door 8 (EMC style)", }, { - "em_gate_5_gray", + "emc_gate_5_gray", "gate", "gray door (EMC style, key 5)", }, { - "em_gate_6_gray", + "emc_gate_6_gray", "gate", "gray door (EMC style, key 6)", }, { - "em_gate_7_gray", + "emc_gate_7_gray", "gate", "gray door (EMC style, key 7)", }, { - "em_gate_8_gray", + "emc_gate_8_gray", "gate", "gray door (EMC style, key 8)", }, { - "em_key_5", + "emc_key_5", "key", "key 5 (EMC style)", }, { - "em_key_6", + "emc_key_6", "key", "key 6 (EMC style)", }, { - "em_key_7", + "emc_key_7", "key", "key 7 (EMC style)", }, { - "em_key_8", + "emc_key_8", "key", "key 8 (EMC style)", }, @@ -3540,9 +3543,19 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "magic ball", }, { + "emc_magic_ball.active", + "emc_magic_ball", + "magic ball (activated)", + }, + { + "emc_magic_ball_switch", "emc_magic_ball_switch", + "magic ball switch (off)", + }, + { + "emc_magic_ball_switch.active", "emc_magic_ball_switch", - "magic ball switch", + "magic ball switch (on)", }, { "emc_spring_bumper", @@ -3627,13 +3640,613 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = { "emc_fake_grass", "fake_grass", - "fake_grass" + "fake grass" + }, + { + "emc_fake_acid", + "fake_acid", + "fake acid" }, { "emc_dripper", "dripper", "dripper" }, + { + "trigger_ce_value", + "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)" + }, + { + "prev_ce_8", + "prev_ce", + "CE 8 positions earlier in list" + }, + { + "prev_ce_7", + "prev_ce", + "CE 7 positions earlier in list" + }, + { + "prev_ce_6", + "prev_ce", + "CE 6 positions earlier in list" + }, + { + "prev_ce_5", + "prev_ce", + "CE 5 positions earlier in list" + }, + { + "prev_ce_4", + "prev_ce", + "CE 4 positions earlier in list" + }, + { + "prev_ce_3", + "prev_ce", + "CE 3 positions earlier in list" + }, + { + "prev_ce_2", + "prev_ce", + "CE 2 positions earlier in list" + }, + { + "prev_ce_1", + "prev_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" + }, + { + "steelchar_space", + "steelchar", + "steel letter ' '" + }, + { + "steelchar_exclam", + "steelchar", + "steel letter '!'" + }, + { + "steelchar_quotedbl", + "steelchar", + "steel letter '\"'" + }, + { + "steelchar_numbersign", + "steelchar", + "steel letter '#'" + }, + { + "steelchar_dollar", + "steelchar", + "steel letter '$'" + }, + { + "steelchar_percent", + "steelchar", + "steel letter '%'" + }, + { + "steelchar_ampersand", + "steelchar", + "steel letter '&'" + }, + { + "steelchar_apostrophe", + "steelchar", + "steel letter '''" + }, + { + "steelchar_parenleft", + "steelchar", + "steel letter '('" + }, + { + "steelchar_parenright", + "steelchar", + "steel letter ')'" + }, + { + "steelchar_asterisk", + "steelchar", + "steel letter '*'" + }, + { + "steelchar_plus", + "steelchar", + "steel letter '+'" + }, + { + "steelchar_comma", + "steelchar", + "steel letter ','" + }, + { + "steelchar_minus", + "steelchar", + "steel letter '-'" + }, + { + "steelchar_period", + "steelchar", + "steel letter '.'" + }, + { + "steelchar_slash", + "steelchar", + "steel letter '/'" + }, + { + "steelchar_0", + "steelchar", + "steel letter '0'" + }, + { + "steelchar_1", + "steelchar", + "steel letter '1'" + }, + { + "steelchar_2", + "steelchar", + "steel letter '2'" + }, + { + "steelchar_3", + "steelchar", + "steel letter '3'" + }, + { + "steelchar_4", + "steelchar", + "steel letter '4'" + }, + { + "steelchar_5", + "steelchar", + "steel letter '5'" + }, + { + "steelchar_6", + "steelchar", + "steel letter '6'" + }, + { + "steelchar_7", + "steelchar", + "steel letter '7'" + }, + { + "steelchar_8", + "steelchar", + "steel letter '8'" + }, + { + "steelchar_9", + "steelchar", + "steel letter '9'" + }, + { + "steelchar_colon", + "steelchar", + "steel letter ':'" + }, + { + "steelchar_semicolon", + "steelchar", + "steel letter ';'" + }, + { + "steelchar_less", + "steelchar", + "steel letter '<'" + }, + { + "steelchar_equal", + "steelchar", + "steel letter '='" + }, + { + "steelchar_greater", + "steelchar", + "steel letter '>'" + }, + { + "steelchar_question", + "steelchar", + "steel letter '?'" + }, + { + "steelchar_at", + "steelchar", + "steel letter '@'" + }, + { + "steelchar_a", + "steelchar", + "steel letter 'A'" + }, + { + "steelchar_b", + "steelchar", + "steel letter 'B'" + }, + { + "steelchar_c", + "steelchar", + "steel letter 'C'" + }, + { + "steelchar_d", + "steelchar", + "steel letter 'D'" + }, + { + "steelchar_e", + "steelchar", + "steel letter 'E'" + }, + { + "steelchar_f", + "steelchar", + "steel letter 'F'" + }, + { + "steelchar_g", + "steelchar", + "steel letter 'G'" + }, + { + "steelchar_h", + "steelchar", + "steel letter 'H'" + }, + { + "steelchar_i", + "steelchar", + "steel letter 'I'" + }, + { + "steelchar_j", + "steelchar", + "steel letter 'J'" + }, + { + "steelchar_k", + "steelchar", + "steel letter 'K'" + }, + { + "steelchar_l", + "steelchar", + "steel letter 'L'" + }, + { + "steelchar_m", + "steelchar", + "steel letter 'M'" + }, + { + "steelchar_n", + "steelchar", + "steel letter 'N'" + }, + { + "steelchar_o", + "steelchar", + "steel letter 'O'" + }, + { + "steelchar_p", + "steelchar", + "steel letter 'P'" + }, + { + "steelchar_q", + "steelchar", + "steel letter 'Q'" + }, + { + "steelchar_r", + "steelchar", + "steel letter 'R'" + }, + { + "steelchar_s", + "steelchar", + "steel letter 'S'" + }, + { + "steelchar_t", + "steelchar", + "steel letter 'T'" + }, + { + "steelchar_u", + "steelchar", + "steel letter 'U'" + }, + { + "steelchar_v", + "steelchar", + "steel letter 'V'" + }, + { + "steelchar_w", + "steelchar", + "steel letter 'W'" + }, + { + "steelchar_x", + "steelchar", + "steel letter 'X'" + }, + { + "steelchar_y", + "steelchar", + "steel letter 'Y'" + }, + { + "steelchar_z", + "steelchar", + "steel letter 'Z'" + }, + { + "steelchar_bracketleft", + "steelchar", + "steel letter '['" + }, + { + "steelchar_backslash", + "steelchar", + "steel letter '\\'" + }, + { + "steelchar_bracketright", + "steelchar", + "steel letter ']'" + }, + { + "steelchar_asciicircum", + "steelchar", + "steel letter '^'" + }, + { + "steelchar_underscore", + "steelchar", + "steel letter '_'" + }, + { + "steelchar_copyright", + "steelchar", + "steel letter '©'" + }, + { + "steelchar_aumlaut", + "steelchar", + "steel letter 'Ä'" + }, + { + "steelchar_oumlaut", + "steelchar", + "steel letter 'Ö'" + }, + { + "steelchar_uumlaut", + "steelchar", + "steel letter 'Ü'" + }, + { + "steelchar_degree", + "steelchar", + "steel letter '°'" + }, + { + "steelchar_trademark", + "steelchar", + "steel letter '®'" + }, + { + "steelchar_cursor", + "steelchar", + "steel letter ' '" + }, + { + "steelchar_unused", + "steelchar", + "steel letter ''" + }, + { + "steelchar_unused", + "steelchar", + "steel letter ''" + }, + { + "steelchar_unused", + "steelchar", + "steel letter ''" + }, + { + "steelchar_unused", + "steelchar", + "steel letter ''" + }, + { + "steelchar_unused", + "steelchar", + "steel letter ''" + }, + { + "steelchar_unused", + "steelchar", + "steel letter ''" + }, + { + "steelchar_unused", + "steelchar", + "steel letter 'button'" + }, + { + "steelchar_unused", + "steelchar", + "steel letter 'up'" + }, + { + "steelchar_unused", + "steelchar", + "steel letter 'down'" + }, + { + "sperms", + "frankie", + "sperms" + }, + { + "bullet", + "frankie", + "bullet" + }, + { + "heart", + "frankie", + "heart" + }, + { + "cross", + "frankie", + "cross" + }, + { + "frankie", + "frankie", + "frankie" + }, + { + "sign_sperms", + "sign", + "sign (sperms)" + }, + { + "sign_bullet", + "sign", + "sign (bullet)" + }, + { + "sign_heart", + "sign", + "sign (heart)" + }, + { + "sign_cross", + "sign", + "sign (cross)" + }, + { + "sign_frankie", + "sign", + "sign (frankie)" + }, + { + "steel_exit_closed", + "steel_exit", + "closed steel exit" + }, + { + "steel_exit_open", + "steel_exit", + "open steel exit" + }, /* ----------------------------------------------------------------------- */ /* "real" (and therefore drawable) runtime elements */ @@ -3696,7 +4309,7 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = }, { "invisible_steelwall.active", - "wall", + "steelwall", "-" }, { @@ -3779,6 +4392,16 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "exit", "-" }, + { + "steel_exit.opening", + "steel_exit", + "-" + }, + { + "steel_exit.closing", + "steel_exit", + "-" + }, { "sp_exit.opening", "sp_exit", @@ -3865,6 +4488,82 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "-" }, + { + "emc_fake_grass.active", + "fake_grass", + "-" + }, + { + "gate_1_gray.active", + "gate", + "" + }, + { + "gate_2_gray.active", + "gate", + "" + }, + { + "gate_3_gray.active", + "gate", + "" + }, + { + "gate_4_gray.active", + "gate", + "" + }, + { + "em_gate_1_gray.active", + "gate", + "" + }, + { + "em_gate_2_gray.active", + "gate", + "" + }, + { + "em_gate_3_gray.active", + "gate", + "" + }, + { + "em_gate_4_gray.active", + "gate", + "" + }, + { + "emc_gate_5_gray.active", + "gate", + "", + }, + { + "emc_gate_6_gray.active", + "gate", + "", + }, + { + "emc_gate_7_gray.active", + "gate", + "", + }, + { + "emc_gate_8_gray.active", + "gate", + "", + }, + { + "emc_dripper.active", + "dripper", + "dripper" + }, + { + "emc_spring_bumper.active", + "emc_spring_bumper", + "spring bumper", + }, + /* ----------------------------------------------------------------------- */ /* "unreal" (and therefore not drawable) runtime elements */ /* ----------------------------------------------------------------------- */ @@ -3959,6 +4658,21 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "-", "-" }, + { + "element.snapping", + "-", + "-" + }, + { + "diagonal.shrinking", + "-", + "-" + }, + { + "diagonal.growing", + "-", + "-" + }, /* ----------------------------------------------------------------------- */ /* dummy elements (never used as game elements, only used as graphics) */ @@ -4109,6 +4823,156 @@ struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] = "internal", "-" }, + { + "internal_cascade_bd", + "internal", + "show Boulder Dash elements" + }, + { + "internal_cascade_bd.active", + "internal", + "hide Boulder Dash elements" + }, + { + "internal_cascade_em", + "internal", + "show Emerald Mine elements" + }, + { + "internal_cascade_em.active", + "internal", + "hide Emerald Mine elements" + }, + { + "internal_cascade_emc", + "internal", + "show Emerald Mine Club elements" + }, + { + "internal_cascade_emc.active", + "internal", + "hide Emerald Mine Club elements" + }, + { + "internal_cascade_rnd", + "internal", + "show Rocks'n'Diamonds elements" + }, + { + "internal_cascade_rnd.active", + "internal", + "hide Rocks'n'Diamonds elements" + }, + { + "internal_cascade_sb", + "internal", + "show Sokoban elements" + }, + { + "internal_cascade_sb.active", + "internal", + "hide Sokoban elements" + }, + { + "internal_cascade_sp", + "internal", + "show Supaplex elements" + }, + { + "internal_cascade_sp.active", + "internal", + "hide Supaplex elements" + }, + { + "internal_cascade_dc", + "internal", + "show Diamond Caves II elements" + }, + { + "internal_cascade_dc.active", + "internal", + "hide Diamond Caves II elements" + }, + { + "internal_cascade_dx", + "internal", + "show DX Boulderdash elements" + }, + { + "internal_cascade_dx.active", + "internal", + "hide DX Boulderdash elements" + }, + { + "internal_cascade_chars", + "internal", + "show text elements" + }, + { + "internal_cascade_chars.active", + "internal", + "hide text elements" + }, + { + "internal_cascade_steelchars", + "internal", + "show steel text elements" + }, + { + "internal_cascade_steelchars.active", + "internal", + "hide steel text elements" + }, + { + "internal_cascade_ce", + "internal", + "show custom elements" + }, + { + "internal_cascade_ce.active", + "internal", + "hide custom elements" + }, + { + "internal_cascade_ge", + "internal", + "show group elements" + }, + { + "internal_cascade_ge.active", + "internal", + "hide group elements" + }, + { + "internal_cascade_ref", + "internal", + "show reference elements" + }, + { + "internal_cascade_ref.active", + "internal", + "hide reference elements" + }, + { + "internal_cascade_user", + "internal", + "show user defined elements" + }, + { + "internal_cascade_user.active", + "internal", + "hide user defined elements" + }, + { + "internal_cascade_dynamic", + "internal", + "show elements used in this level" + }, + { + "internal_cascade_dynamic.active", + "internal", + "hide elements used in this level" + }, /* keyword to stop parser: "ELEMENT_INFO_END" <-- do not change! */ @@ -4175,8 +5039,41 @@ struct ElementActionInfo element_action_info[NUM_ACTIONS + 1 + 1] = { ".turning_from_down", ACTION_TURNING_FROM_DOWN, FALSE }, { ".smashed_by_rock", ACTION_SMASHED_BY_ROCK, FALSE }, { ".smashed_by_spring", ACTION_SMASHED_BY_SPRING, FALSE }, - { ".slurped_by_spring", ACTION_SLURPED_BY_SPRING, FALSE }, + { ".eating", ACTION_EATING, FALSE }, { ".twinkling", ACTION_TWINKLING, FALSE }, + { ".splashing", ACTION_SPLASHING, FALSE }, + { ".page[1]", ACTION_PAGE_1, FALSE }, + { ".page[2]", ACTION_PAGE_2, FALSE }, + { ".page[3]", ACTION_PAGE_3, FALSE }, + { ".page[4]", ACTION_PAGE_4, FALSE }, + { ".page[5]", ACTION_PAGE_5, FALSE }, + { ".page[6]", ACTION_PAGE_6, FALSE }, + { ".page[7]", ACTION_PAGE_7, FALSE }, + { ".page[8]", ACTION_PAGE_8, FALSE }, + { ".page[9]", ACTION_PAGE_9, FALSE }, + { ".page[10]", ACTION_PAGE_10, FALSE }, + { ".page[11]", ACTION_PAGE_11, FALSE }, + { ".page[12]", ACTION_PAGE_12, FALSE }, + { ".page[13]", ACTION_PAGE_13, FALSE }, + { ".page[14]", ACTION_PAGE_14, FALSE }, + { ".page[15]", ACTION_PAGE_15, FALSE }, + { ".page[16]", ACTION_PAGE_16, FALSE }, + { ".page[17]", ACTION_PAGE_17, FALSE }, + { ".page[18]", ACTION_PAGE_18, FALSE }, + { ".page[19]", ACTION_PAGE_19, FALSE }, + { ".page[20]", ACTION_PAGE_20, FALSE }, + { ".page[21]", ACTION_PAGE_21, FALSE }, + { ".page[22]", ACTION_PAGE_22, FALSE }, + { ".page[23]", ACTION_PAGE_23, FALSE }, + { ".page[24]", ACTION_PAGE_24, FALSE }, + { ".page[25]", ACTION_PAGE_25, FALSE }, + { ".page[26]", ACTION_PAGE_26, FALSE }, + { ".page[27]", ACTION_PAGE_27, FALSE }, + { ".page[28]", ACTION_PAGE_28, FALSE }, + { ".page[29]", ACTION_PAGE_29, FALSE }, + { ".page[30]", ACTION_PAGE_30, FALSE }, + { ".page[31]", ACTION_PAGE_31, FALSE }, + { ".page[32]", ACTION_PAGE_32, FALSE }, { ".other", ACTION_OTHER, FALSE }, /* empty suffix always matches -- check as last entry in InitSoundInfo() */ @@ -4185,75 +5082,240 @@ struct ElementActionInfo element_action_info[NUM_ACTIONS + 1 + 1] = { NULL, 0, 0 } }; -struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS + 1] = +struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS_FULL + 1] = { { ".left", MV_BIT_LEFT }, { ".right", MV_BIT_RIGHT }, { ".up", MV_BIT_UP }, { ".down", MV_BIT_DOWN }, + { ".upleft", MV_BIT_UP }, + { ".upright", MV_BIT_RIGHT }, + { ".downleft", MV_BIT_LEFT }, + { ".downright", MV_BIT_DOWN }, { NULL, 0 } }; struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1 + 1] = { - { ".[DEFAULT]", GAME_MODE_DEFAULT, }, - { ".MAIN", GAME_MODE_MAIN, }, - { ".LEVELS", GAME_MODE_LEVELS }, - { ".SCORES", GAME_MODE_SCORES, }, - { ".EDITOR", GAME_MODE_EDITOR, }, - { ".INFO", GAME_MODE_INFO, }, - { ".SETUP", GAME_MODE_SETUP, }, - { ".PLAYING", GAME_MODE_PLAYING, }, - { ".DOOR", GAME_MODE_PSEUDO_DOOR, }, - { ".PREVIEW", GAME_MODE_PSEUDO_PREVIEW, }, - { ".CRUMBLED", GAME_MODE_PSEUDO_CRUMBLED, }, + { ".[DEFAULT]", GFX_SPECIAL_ARG_DEFAULT, }, + { ".TITLE", GFX_SPECIAL_ARG_TITLE, }, + { ".MESSAGE", GFX_SPECIAL_ARG_MESSAGE, }, + { ".MAIN", GFX_SPECIAL_ARG_MAIN, }, + { ".LEVELS", GFX_SPECIAL_ARG_LEVELS }, + { ".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, }, + { ".PREVIEW", GFX_SPECIAL_ARG_PREVIEW, }, + { ".CRUMBLED", GFX_SPECIAL_ARG_CRUMBLED, }, /* empty suffix always matches -- check as last entry in InitMusicInfo() */ - { "", GAME_MODE_DEFAULT, }, + { "", GFX_SPECIAL_ARG_DEFAULT, }, { NULL, 0, } }; struct TokenIntPtrInfo image_config_vars[] = { - { "global.num_toons", &global.num_toons }, + { "global.num_toons", &global.num_toons }, + + { "border.draw_masked.TITLE", &border.draw_masked[GFX_SPECIAL_ARG_TITLE] }, + { "border.draw_masked.MAIN", &border.draw_masked[GFX_SPECIAL_ARG_MAIN] }, + { "border.draw_masked.LEVELS", &border.draw_masked[GFX_SPECIAL_ARG_LEVELS] }, + { "border.draw_masked.SCORES", &border.draw_masked[GFX_SPECIAL_ARG_SCORES] }, + { "border.draw_masked.EDITOR", &border.draw_masked[GFX_SPECIAL_ARG_EDITOR] }, + { "border.draw_masked.INFO", &border.draw_masked[GFX_SPECIAL_ARG_INFO] }, + { "border.draw_masked.SETUP", &border.draw_masked[GFX_SPECIAL_ARG_SETUP] }, + { "border.draw_masked.PLAYING",&border.draw_masked[GFX_SPECIAL_ARG_PLAYING] }, + { "border.draw_masked.DOOR", &border.draw_masked[GFX_SPECIAL_ARG_DOOR] }, + + { "title.fade_delay", &title.fade_delay }, + { "title.post_delay", &title.post_delay }, + { "title.auto_delay", &title.auto_delay }, + + { "menu.fade_delay", &menu.fade_delay }, + { "menu.post_delay", &menu.post_delay }, + { "menu.auto_delay", &menu.auto_delay }, + + { "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.INFO[ELEMENTS]", + &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_ELEMENTS] }, + { "menu.draw_yoffset.INFO[ELEMENTS]", + &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_ELEMENTS] }, + { "menu.draw_xoffset.INFO[MUSIC]", + &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_MUSIC] }, + { "menu.draw_yoffset.INFO[MUSIC]", + &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_MUSIC] }, + { "menu.draw_xoffset.INFO[CREDITS]", + &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_CREDITS] }, + { "menu.draw_yoffset.INFO[CREDITS]", + &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_CREDITS] }, + { "menu.draw_xoffset.INFO[PROGRAM]", + &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_PROGRAM] }, + { "menu.draw_yoffset.INFO[PROGRAM]", + &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_PROGRAM] }, + { "menu.draw_xoffset.INFO[LEVELSET]", + &menu.draw_xoffset_info[GFX_SPECIAL_ARG_INFO_LEVELSET] }, + { "menu.draw_yoffset.INFO[LEVELSET]", + &menu.draw_yoffset_info[GFX_SPECIAL_ARG_INFO_LEVELSET] }, + { "menu.draw_xoffset.SETUP", &menu.draw_xoffset[GFX_SPECIAL_ARG_SETUP] }, + { "menu.draw_yoffset.SETUP", &menu.draw_yoffset[GFX_SPECIAL_ARG_SETUP] }, - { "menu.draw_xoffset", &menu.draw_xoffset_default }, - { "menu.draw_yoffset", &menu.draw_yoffset_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.scrollbar_xoffset", &menu.scrollbar_xoffset }, + { "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.list_size", &menu.list_size_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] }, + { "main.button.name.x", &menu.main.button.name.x }, + { "main.button.name.y", &menu.main.button.name.y }, + { "main.button.levels.x", &menu.main.button.levels.x }, + { "main.button.levels.y", &menu.main.button.levels.y }, + { "main.button.scores.x", &menu.main.button.scores.x }, + { "main.button.scores.y", &menu.main.button.scores.y }, + { "main.button.editor.x", &menu.main.button.editor.x }, + { "main.button.editor.y", &menu.main.button.editor.y }, + { "main.button.info.x", &menu.main.button.info.x }, + { "main.button.info.y", &menu.main.button.info.y }, + { "main.button.game.x", &menu.main.button.game.x }, + { "main.button.game.y", &menu.main.button.game.y }, + { "main.button.setup.x", &menu.main.button.setup.x }, + { "main.button.setup.y", &menu.main.button.setup.y }, + { "main.button.quit.x", &menu.main.button.quit.x }, + { "main.button.quit.y", &menu.main.button.quit.y }, - { "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.step_offset", &door_2.step_offset }, - { "door_2.step_delay", &door_2.step_delay }, - { "door_2.anim_mode", &door_2.anim_mode }, + { "main.button.prev_level.x", &menu.main.button.prev_level.x }, + { "main.button.prev_level.y", &menu.main.button.prev_level.y }, + { "main.button.next_level.x", &menu.main.button.next_level.x }, + { "main.button.next_level.y", &menu.main.button.next_level.y }, - { "[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 }, + { "main.text.name.x", &menu.main.text.name.x }, + { "main.text.name.y", &menu.main.text.name.y }, + { "main.text.name.width", &menu.main.text.name.width }, + { "main.text.name.height", &menu.main.text.name.height }, + { "main.text.name.align", &menu.main.text.name.align }, + { "main.text.levels.x", &menu.main.text.levels.x }, + { "main.text.levels.y", &menu.main.text.levels.y }, + { "main.text.levels.width", &menu.main.text.levels.width }, + { "main.text.levels.height", &menu.main.text.levels.height }, + { "main.text.levels.align", &menu.main.text.levels.align }, + { "main.text.scores.x", &menu.main.text.scores.x }, + { "main.text.scores.y", &menu.main.text.scores.y }, + { "main.text.scores.width", &menu.main.text.scores.width }, + { "main.text.scores.height", &menu.main.text.scores.height }, + { "main.text.scores.align", &menu.main.text.scores.align }, + { "main.text.editor.x", &menu.main.text.editor.x }, + { "main.text.editor.y", &menu.main.text.editor.y }, + { "main.text.editor.width", &menu.main.text.editor.width }, + { "main.text.editor.height", &menu.main.text.editor.height }, + { "main.text.editor.align", &menu.main.text.editor.align }, + { "main.text.info.x", &menu.main.text.info.x }, + { "main.text.info.y", &menu.main.text.info.y }, + { "main.text.info.width", &menu.main.text.info.width }, + { "main.text.info.height", &menu.main.text.info.height }, + { "main.text.info.align", &menu.main.text.info.align }, + { "main.text.game.x", &menu.main.text.game.x }, + { "main.text.game.y", &menu.main.text.game.y }, + { "main.text.game.width", &menu.main.text.game.width }, + { "main.text.game.height", &menu.main.text.game.height }, + { "main.text.game.align", &menu.main.text.game.align }, + { "main.text.setup.x", &menu.main.text.setup.x }, + { "main.text.setup.y", &menu.main.text.setup.y }, + { "main.text.setup.width", &menu.main.text.setup.width }, + { "main.text.setup.height", &menu.main.text.setup.height }, + { "main.text.setup.align", &menu.main.text.setup.align }, + { "main.text.quit.x", &menu.main.text.quit.x }, + { "main.text.quit.y", &menu.main.text.quit.y }, + { "main.text.quit.width", &menu.main.text.quit.width }, + { "main.text.quit.height", &menu.main.text.quit.height }, + { "main.text.quit.align", &menu.main.text.quit.align }, - { NULL, NULL, } + { "main.text.current_level.x", &menu.main.text.current_level.x }, + { "main.text.current_level.y", &menu.main.text.current_level.y }, + { "main.text.current_level.align", &menu.main.text.current_level.align }, + { "main.text.first_level.x", &menu.main.text.first_level.x }, + { "main.text.first_level.y", &menu.main.text.first_level.y }, + { "main.text.first_level.align", &menu.main.text.first_level.align }, + { "main.text.last_level.x", &menu.main.text.last_level.x }, + { "main.text.last_level.y", &menu.main.text.last_level.y }, + { "main.text.last_level.align", &menu.main.text.last_level.align }, + { "main.text.level_info_1.x", &menu.main.text.level_info_1.x }, + { "main.text.level_info_1.y", &menu.main.text.level_info_1.y }, + { "main.text.level_info_1.align", &menu.main.text.level_info_1.align }, + { "main.text.level_info_2.x", &menu.main.text.level_info_2.x }, + { "main.text.level_info_2.y", &menu.main.text.level_info_2.y }, + { "main.text.level_info_2.align", &menu.main.text.level_info_2.align }, + { "main.text.title_1.x", &menu.main.text.title_1.x }, + { "main.text.title_1.y", &menu.main.text.title_1.y }, + { "main.text.title_1.align", &menu.main.text.title_1.align }, + { "main.text.title_2.x", &menu.main.text.title_2.x }, + { "main.text.title_2.y", &menu.main.text.title_2.y }, + { "main.text.title_2.align", &menu.main.text.title_2.align }, + { "main.text.title_3.x", &menu.main.text.title_3.x }, + { "main.text.title_3.y", &menu.main.text.title_3.y }, + { "main.text.title_3.align", &menu.main.text.title_3.align }, + + { "main.input.name.x", &menu.main.input.name.x }, + { "main.input.name.y", &menu.main.input.name.y }, + { "main.input.name.align", &menu.main.input.name.align }, + + { "preview.x", &preview.x }, + { "preview.y", &preview.y }, + { "preview.align", &preview.align }, + { "preview.xsize", &preview.xsize }, + { "preview.ysize", &preview.ysize }, + { "preview.xoffset", &preview.xoffset }, + { "preview.yoffset", &preview.yoffset }, + { "preview.tile_size", &preview.tile_size }, + { "preview.step_offset", &preview.step_offset }, + { "preview.step_delay", &preview.step_delay }, + { "preview.anim_mode", &preview.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 }, + + { "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 }, + + { "[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, } }; @@ -4262,7 +5324,8 @@ struct TokenIntPtrInfo image_config_vars[] = /* ------------------------------------------------------------------------- */ /* Important: When one entry is a prefix of another entry, the longer entry - must come first, because the dynamic configuration does prefix matching! */ + must come first, because the dynamic configuration does prefix matching! + (These definitions must match the corresponding definitions in "main.h"!) */ struct FontInfo font_info[NUM_FONTS + 1] = { @@ -4272,6 +5335,8 @@ struct FontInfo font_info[NUM_FONTS + 1] = { "font.initial_4" }, { "font.title_1" }, { "font.title_2" }, + { "font.menu_1.active" }, + { "font.menu_2.active" }, { "font.menu_1" }, { "font.menu_2" }, { "font.text_1.active" }, @@ -4295,6 +5360,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" }, @@ -4344,7 +5410,7 @@ static void print_usage() " \"print helptext.conf\" print default helptext config\n" " \"dump level FILE\" dump level data from FILE\n" " \"dump tape FILE\" dump tape data from FILE\n" - " \"autoplay LEVELDIR [NR]\" play level tapes for LEVELDIR\n" + " \"autoplay LEVELDIR [NR ...]\" play level tapes for LEVELDIR\n" " \"convert LEVELDIR [NR]\" convert levels in LEVELDIR\n" "\n", program.command_basename); @@ -4352,9 +5418,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);