rnd-20070312-4-src
authorHolger Schemel <info@artsoft.org>
Mon, 12 Mar 2007 22:46:36 +0000 (23:46 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:54:51 +0000 (10:54 +0200)
src/conf_gfx.c
src/conf_var.c
src/conftime.h
src/game.c
src/game.h

index 6dfd5e4a23bdb42ad8c7302c3afee974533c34d2..c9ae0772e7ea8b21dd8669eacf8d18a5adab2231 100644 (file)
@@ -5396,11 +5396,11 @@ struct ConfigInfo image_config[] =
   { "game.panel.key_8.y",                      "-1"                    },
   { "game.panel.key_white.x",                  "-1"                    },
   { "game.panel.key_white.y",                  "-1"                    },
-  { "game.panel.white_keys.x",                 "-1"                    },
-  { "game.panel.white_keys.y",                 "-1"                    },
-  { "game.panel.white_keys.align",             "left"                  },
-  { "game.panel.white_keys.chars",             "-1"                    },
-  { "game.panel.white_keys.font",              "font.text_2"           },
+  { "game.panel.key_white_count.x",            "-1"                    },
+  { "game.panel.key_white_count.y",            "-1"                    },
+  { "game.panel.key_white_count.align",                "left"                  },
+  { "game.panel.key_white_count.chars",                "-1"                    },
+  { "game.panel.key_white_count.font",         "font.text_2"           },
 
   { "game.panel.shield_normal.x",              "-1"                    },
   { "game.panel.shield_normal.y",              "-1"                    },
@@ -5430,6 +5430,8 @@ struct ConfigInfo image_config[] =
 
   { "game.panel.emc_magic_ball.x",             "-1"                    },
   { "game.panel.emc_magic_ball.y",             "-1"                    },
+  { "game.panel.emc_magic_ball_switch.x",      "-1"                    },
+  { "game.panel.emc_magic_ball_switch.y",      "-1"                    },
   { "game.panel.emc_magic_ball_time.x",                "-1"                    },
   { "game.panel.emc_magic_ball_time.y",                "-1"                    },
   { "game.panel.emc_magic_ball_time.align",    "left"                  },
@@ -5509,18 +5511,18 @@ struct ConfigInfo image_config[] =
 
   { "game.panel.conveyor_belt_1.x",            "-1"                    },
   { "game.panel.conveyor_belt_1.y",            "-1"                    },
-  { "game.panel.conveyor_belt_2.x",            "-1"                    },
-  { "game.panel.conveyor_belt_2.y",            "-1"                    },
-  { "game.panel.conveyor_belt_3.x",            "-1"                    },
-  { "game.panel.conveyor_belt_3.y",            "-1"                    },
-  { "game.panel.conveyor_belt_4.x",            "-1"                    },
-  { "game.panel.conveyor_belt_4.y",            "-1"                    },
   { "game.panel.conveyor_belt_1_switch.x",     "-1"                    },
   { "game.panel.conveyor_belt_1_switch.y",     "-1"                    },
+  { "game.panel.conveyor_belt_2.x",            "-1"                    },
+  { "game.panel.conveyor_belt_2.y",            "-1"                    },
   { "game.panel.conveyor_belt_2_switch.x",     "-1"                    },
   { "game.panel.conveyor_belt_2_switch.y",     "-1"                    },
+  { "game.panel.conveyor_belt_3.x",            "-1"                    },
+  { "game.panel.conveyor_belt_3.y",            "-1"                    },
   { "game.panel.conveyor_belt_3_switch.x",     "-1"                    },
   { "game.panel.conveyor_belt_3_switch.y",     "-1"                    },
+  { "game.panel.conveyor_belt_4.x",            "-1"                    },
+  { "game.panel.conveyor_belt_4.y",            "-1"                    },
   { "game.panel.conveyor_belt_4_switch.x",     "-1"                    },
   { "game.panel.conveyor_belt_4_switch.y",     "-1"                    },
 
@@ -5553,18 +5555,18 @@ struct ConfigInfo image_config[] =
   { "game.panel.level_author.chars",           "-1"                    },
   { "game.panel.level_author.font",            "font.text_2"           },
 
-  { "game.panel.stop.x",                       "-1"                    },
-  { "game.panel.stop.y",                       "-1"                    },
-  { "game.panel.pause.x",                      "-1"                    },
-  { "game.panel.pause.y",                      "-1"                    },
-  { "game.panel.play.x",                       "-1"                    },
-  { "game.panel.play.y",                       "-1"                    },
-  { "game.panel.sound_music.x",                        "-1"                    },
-  { "game.panel.sound_music.y",                        "-1"                    },
-  { "game.panel.sound_loops.x",                        "-1"                    },
-  { "game.panel.sound_loops.y",                        "-1"                    },
-  { "game.panel.sound_simple.x",               "-1"                    },
-  { "game.panel.sound_simple.y",               "-1"                    },
+  { "game.button.stop.x",                      "-1"                    },
+  { "game.button.stop.y",                      "-1"                    },
+  { "game.button.pause.x",                     "-1"                    },
+  { "game.button.pause.y",                     "-1"                    },
+  { "game.button.play.x",                      "-1"                    },
+  { "game.button.play.y",                      "-1"                    },
+  { "game.button.sound_music.x",               "-1"                    },
+  { "game.button.sound_music.y",               "-1"                    },
+  { "game.button.sound_loops.x",               "-1"                    },
+  { "game.button.sound_loops.y",               "-1"                    },
+  { "game.button.sound_simple.x",              "-1"                    },
+  { "game.button.sound_simple.y",              "-1"                    },
 
   { "[player].boring_delay_fixed",             "1000"                  },
   { "[player].boring_delay_random",            "1000"                  },
index 3132795db697cce00e647a5cf8a35b122e5ec431..997ba2b199628d71a04b050b4deabdad1a1e1bbd 100644 (file)
@@ -1697,24 +1697,24 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.key_white.y
   },
   {
-    "game.panel.white_keys.x",
-    &game.panel.white_keys.x
+    "game.panel.key_white_count.x",
+    &game.panel.key_white_count.x
   },
   {
-    "game.panel.white_keys.y",
-    &game.panel.white_keys.y
+    "game.panel.key_white_count.y",
+    &game.panel.key_white_count.y
   },
   {
-    "game.panel.white_keys.align",
-    &game.panel.white_keys.align
+    "game.panel.key_white_count.align",
+    &game.panel.key_white_count.align
   },
   {
-    "game.panel.white_keys.chars",
-    &game.panel.white_keys.chars
+    "game.panel.key_white_count.chars",
+    &game.panel.key_white_count.chars
   },
   {
-    "game.panel.white_keys.font",
-    &game.panel.white_keys.font
+    "game.panel.key_white_count.font",
+    &game.panel.key_white_count.font
   },
   {
     "game.panel.shield_normal.x",
@@ -1820,6 +1820,14 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.emc_magic_ball.y",
     &game.panel.emc_magic_ball.y
   },
+  {
+    "game.panel.emc_magic_ball_switch.x",
+    &game.panel.emc_magic_ball_switch.x
+  },
+  {
+    "game.panel.emc_magic_ball_switch.y",
+    &game.panel.emc_magic_ball_switch.y
+  },
   {
     "game.panel.emc_magic_ball_time.x",
     &game.panel.emc_magic_ball_time.x
@@ -2092,30 +2100,6 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_1.y",
     &game.panel.conveyor_belt_1.y
   },
-  {
-    "game.panel.conveyor_belt_2.x",
-    &game.panel.conveyor_belt_2.x
-  },
-  {
-    "game.panel.conveyor_belt_2.y",
-    &game.panel.conveyor_belt_2.y
-  },
-  {
-    "game.panel.conveyor_belt_3.x",
-    &game.panel.conveyor_belt_3.x
-  },
-  {
-    "game.panel.conveyor_belt_3.y",
-    &game.panel.conveyor_belt_3.y
-  },
-  {
-    "game.panel.conveyor_belt_4.x",
-    &game.panel.conveyor_belt_4.x
-  },
-  {
-    "game.panel.conveyor_belt_4.y",
-    &game.panel.conveyor_belt_4.y
-  },
   {
     "game.panel.conveyor_belt_1_switch.x",
     &game.panel.conveyor_belt_1_switch.x
@@ -2124,6 +2108,14 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_1_switch.y",
     &game.panel.conveyor_belt_1_switch.y
   },
+  {
+    "game.panel.conveyor_belt_2.x",
+    &game.panel.conveyor_belt_2.x
+  },
+  {
+    "game.panel.conveyor_belt_2.y",
+    &game.panel.conveyor_belt_2.y
+  },
   {
     "game.panel.conveyor_belt_2_switch.x",
     &game.panel.conveyor_belt_2_switch.x
@@ -2132,6 +2124,14 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_2_switch.y",
     &game.panel.conveyor_belt_2_switch.y
   },
+  {
+    "game.panel.conveyor_belt_3.x",
+    &game.panel.conveyor_belt_3.x
+  },
+  {
+    "game.panel.conveyor_belt_3.y",
+    &game.panel.conveyor_belt_3.y
+  },
   {
     "game.panel.conveyor_belt_3_switch.x",
     &game.panel.conveyor_belt_3_switch.x
@@ -2140,6 +2140,14 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_3_switch.y",
     &game.panel.conveyor_belt_3_switch.y
   },
+  {
+    "game.panel.conveyor_belt_4.x",
+    &game.panel.conveyor_belt_4.x
+  },
+  {
+    "game.panel.conveyor_belt_4.y",
+    &game.panel.conveyor_belt_4.y
+  },
   {
     "game.panel.conveyor_belt_4_switch.x",
     &game.panel.conveyor_belt_4_switch.x
@@ -2253,52 +2261,52 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.level_author.font
   },
   {
-    "game.panel.stop.x",
-    &game.panel.stop.x
+    "game.button.stop.x",
+    &game.button.stop.x
   },
   {
-    "game.panel.stop.y",
-    &game.panel.stop.y
+    "game.button.stop.y",
+    &game.button.stop.y
   },
   {
-    "game.panel.pause.x",
-    &game.panel.pause.x
+    "game.button.pause.x",
+    &game.button.pause.x
   },
   {
-    "game.panel.pause.y",
-    &game.panel.pause.y
+    "game.button.pause.y",
+    &game.button.pause.y
   },
   {
-    "game.panel.play.x",
-    &game.panel.play.x
+    "game.button.play.x",
+    &game.button.play.x
   },
   {
-    "game.panel.play.y",
-    &game.panel.play.y
+    "game.button.play.y",
+    &game.button.play.y
   },
   {
-    "game.panel.sound_music.x",
-    &game.panel.sound_music.x
+    "game.button.sound_music.x",
+    &game.button.sound_music.x
   },
   {
-    "game.panel.sound_music.y",
-    &game.panel.sound_music.y
+    "game.button.sound_music.y",
+    &game.button.sound_music.y
   },
   {
-    "game.panel.sound_loops.x",
-    &game.panel.sound_loops.x
+    "game.button.sound_loops.x",
+    &game.button.sound_loops.x
   },
   {
-    "game.panel.sound_loops.y",
-    &game.panel.sound_loops.y
+    "game.button.sound_loops.y",
+    &game.button.sound_loops.y
   },
   {
-    "game.panel.sound_simple.x",
-    &game.panel.sound_simple.x
+    "game.button.sound_simple.x",
+    &game.button.sound_simple.x
   },
   {
-    "game.panel.sound_simple.y",
-    &game.panel.sound_simple.y
+    "game.button.sound_simple.y",
+    &game.button.sound_simple.y
   },
   {
     "[player].boring_delay_fixed",
index ec71c3ffb2999bc35a40db172e68e6a3185c5464..7b4a23e4de9257335cb36e55b4ed567d191739ec 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2007-03-12 16:57"
+#define COMPILE_DATE_STRING "2007-03-12 23:44"
index 840f476f3fc63d837b76f8417baaa899d5b6ec62..6b920a51ca2d40b9ca2f097e6d3fa865ff0f2c81 100644 (file)
 #define GAME_CONTROL_KEYS                      3
 #define GAME_CONTROL_SCORE                     4
 #define GAME_CONTROL_TIME                      5
-
-
-
-#define GAME_CONTROL_LEVELS                    1
-#define GAME_CONTROL_SCORES                    2
-#define GAME_CONTROL_EDITOR                    3
-#define GAME_CONTROL_INFO                      4
-#define GAME_CONTROL_GAME                      5
-#define GAME_CONTROL_SETUP                     6
-#define GAME_CONTROL_QUIT                      7
-#define GAME_CONTROL_PREV_LEVEL                        8
-#define GAME_CONTROL_NEXT_LEVEL                        9
-#define GAME_CONTROL_CURRENT_LEVEL             10
-#define GAME_CONTROL_FIRST_LEVEL               11
-#define GAME_CONTROL_LAST_LEVEL                        12
-#define GAME_CONTROL_LEVEL_INFO_1              13
-#define GAME_CONTROL_LEVEL_INFO_2              14
-#define GAME_CONTROL_LEVEL_NAME                        15
-#define GAME_CONTROL_LEVEL_AUTHOR              16
-#define GAME_CONTROL_LEVEL_YEAR                        17
-#define GAME_CONTROL_LEVEL_IMPORTED_FROM       18
-#define GAME_CONTROL_LEVEL_IMPORTED_BY         19
-#define GAME_CONTROL_LEVEL_TESTED_BY           20
-#define GAME_CONTROL_TITLE_1                   21
-#define GAME_CONTROL_TITLE_2                   22
-#define GAME_CONTROL_TITLE_3                   23
-
-static char str_game_text_name[10];
-static char str_game_text_current_level[10];
-static char str_game_text_first_level[10];
-static char str_game_text_last_level[10];
-
-static char *game_text_name                    = str_game_text_name;
-static char *game_text_current_level           = str_game_text_current_level;
-static char *game_text_first_level             = str_game_text_first_level;
-static char *game_text_last_level              = str_game_text_last_level;
-static char *game_text_levels                  = "Levelset";
-static char *game_text_scores                  = "Hall Of Fame";
-static char *game_text_editor                  = "Level Creator";
-static char *game_text_info                    = "Info Screen";
-static char *game_text_game                    = "Start Game";
-static char *game_text_setup                   = "Setup";
-static char *game_text_quit                    = "Quit";
-static char *game_text_level_name              = level.name;
-static char *game_text_level_author            = level.author;
-static char *game_text_level_year              = NULL;
-static char *game_text_level_imported_from     = NULL;
-static char *game_text_level_imported_by       = NULL;
-static char *game_text_level_tested_by         = NULL;
-static char *game_text_title_1                 = PROGRAM_TITLE_STRING;
-static char *game_text_title_2                 = PROGRAM_COPYRIGHT_STRING;
-static char *game_text_title_3                 = PROGRAM_GAME_BY_STRING;
+#define GAME_CONTROL_TIME_HH                   6
+#define GAME_CONTROL_TIME_MM                   7
+#define GAME_CONTROL_TIME_SS                   8
+#define GAME_CONTROL_DROP_NEXT_1               9
+#define GAME_CONTROL_DROP_NEXT_2               10
+#define GAME_CONTROL_DROP_NEXT_3               11
+#define GAME_CONTROL_DROP_NEXT_4               12
+#define GAME_CONTROL_DROP_NEXT_5               13
+#define GAME_CONTROL_DROP_NEXT_6               14
+#define GAME_CONTROL_DROP_NEXT_7               15
+#define GAME_CONTROL_DROP_NEXT_8               16
+#define GAME_CONTROL_EMC_KEYS                  17
+#define GAME_CONTROL_KEY_1                     18
+#define GAME_CONTROL_KEY_2                     19
+#define GAME_CONTROL_KEY_3                     20
+#define GAME_CONTROL_KEY_4                     21
+#define GAME_CONTROL_KEY_5                     22
+#define GAME_CONTROL_KEY_6                     23
+#define GAME_CONTROL_KEY_7                     24
+#define GAME_CONTROL_KEY_8                     25
+#define GAME_CONTROL_KEY_WHITE                 26
+#define GAME_CONTROL_KEY_WHITE_COUNT           27
+#define GAME_CONTROL_SHIELD_NORMAL             28
+#define GAME_CONTROL_SHIELD_NORMAL_TIME                29
+#define GAME_CONTROL_SHIELD_DEADLY             30
+#define GAME_CONTROL_SHIELD_DEADLY_TIME                31
+#define GAME_CONTROL_EXIT                      32
+#define GAME_CONTROL_EM_EXIT                   33
+#define GAME_CONTROL_SP_EXIT                   34
+#define GAME_CONTROL_STEEL_EXIT                        35
+#define GAME_CONTROL_EM_STEEL_EXIT             36
+#define GAME_CONTROL_EMC_MAGIC_BALL            37
+#define GAME_CONTROL_EMC_MAGIC_BALL_TIME       38
+#define GAME_CONTROL_LIGHT_SWITCH              39
+#define GAME_CONTROL_LIGHT_SWITCH_TIME         40
+#define GAME_CONTROL_TIMEGATE_SWITCH           41
+#define GAME_CONTROL_TIMEGATE_SWITCH_TIME      42
+#define GAME_CONTROL_SWITCHGATE_SWITCH         43
+#define GAME_CONTROL_EMC_LENSES                        44
+#define GAME_CONTROL_EMC_LENSES_TIME           45
+#define GAME_CONTROL_EMC_MAGNIFIER             46
+#define GAME_CONTROL_EMC_MAGNIFIER_TIME                47
+#define GAME_CONTROL_BALLOON_SWITCH            48
+#define GAME_CONTROL_DYNABOMB_NUMBER           49
+#define GAME_CONTROL_DYNABOMB_SIZE             50
+#define GAME_CONTROL_DYNABOMB_POWER            51
+#define GAME_CONTROL_PENGUINS                  52
+#define GAME_CONTROL_SOKOBAN_OBJECTS           53
+#define GAME_CONTROL_SOKOBAN_FIELDS            54
+#define GAME_CONTROL_ROBOT_WHEEL               55
+#define GAME_CONTROL_CONVEYOR_BELT_1           56
+#define GAME_CONTROL_CONVEYOR_BELT_1_SWITCH    57
+#define GAME_CONTROL_CONVEYOR_BELT_2           58
+#define GAME_CONTROL_CONVEYOR_BELT_2_SWITCH    59
+#define GAME_CONTROL_CONVEYOR_BELT_3           60
+#define GAME_CONTROL_CONVEYOR_BELT_3_SWITCH    61
+#define GAME_CONTROL_CONVEYOR_BELT_4           62
+#define GAME_CONTROL_CONVEYOR_BELT_4_SWITCH    63
+#define GAME_CONTROL_MAGIC_WALL                        64
+#define GAME_CONTROL_MAGIC_WALL_TIME           65
+#define GAME_CONTROL_BD_MAGIC_WALL             66
+#define GAME_CONTROL_DC_MAGIC_WALL             67
+#define GAME_CONTROL_PLAYER_NAME               68
+#define GAME_CONTROL_LEVEL_NAME                        69
+#define GAME_CONTROL_LEVEL_AUTHOR              70
 
 struct GameControlInfo
 {
   int nr;
 
-  struct MenuPosInfo *pos_button;
-  int button_graphic;
-
   struct TextPosInfo *pos_text;
-  char **text;
-
-  struct TextPosInfo *pos_input;
-  char **input;
+  int type;
+  void *ptr;
 };
 
 static struct GameControlInfo game_controls[] =
 {
   {
-    GAME_CONTROL_NAME,
-    &menu.game.button.name,            IMG_MENU_BUTTON,
-    &menu.game.text.name,              &game_text_name,
-    &menu.game.input.name,             &setup.player_name,
+    GAME_CONTROL_LEVEL,
+    &game.panel.level,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_LEVELS,
-    &menu.game.button.levels,          IMG_MENU_BUTTON_ENTER_MENU,
-    &menu.game.text.levels,            &game_text_levels,
-    NULL,                              NULL,
+    GAME_CONTROL_GEMS,
+    &game.panel.gems,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_SCORES,
-    &menu.game.button.scores,          IMG_MENU_BUTTON,
-    &menu.game.text.scores,            &game_text_scores,
-    NULL,                              NULL,
+    GAME_CONTROL_INVENTORY,
+    &game.panel.inventory,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_EDITOR,
-    &menu.game.button.editor,          IMG_MENU_BUTTON,
-    &menu.game.text.editor,            &game_text_editor,
-    NULL,                              NULL,
+    GAME_CONTROL_KEYS,
+    &game.panel.keys,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_INFO,
-    &menu.game.button.info,            IMG_MENU_BUTTON_ENTER_MENU,
-    &menu.game.text.info,              &game_text_info,
-    NULL,                              NULL,
+    GAME_CONTROL_SCORE,
+    &game.panel.score,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_GAME,
-    &menu.game.button.game,            IMG_MENU_BUTTON,
-    &menu.game.text.game,              &game_text_game,
-    NULL,                              NULL,
+    GAME_CONTROL_TIME,
+    &game.panel.time,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_SETUP,
-    &menu.game.button.setup,           IMG_MENU_BUTTON_ENTER_MENU,
-    &menu.game.text.setup,             &game_text_setup,
-    NULL,                              NULL,
+    GAME_CONTROL_TIME_HH,
+    &game.panel.time_hh,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_QUIT,
-    &menu.game.button.quit,            IMG_MENU_BUTTON,
-    &menu.game.text.quit,              &game_text_quit,
-    NULL,                              NULL,
+    GAME_CONTROL_TIME_MM,
+    &game.panel.time_mm,
+    TYPE_INTEGER,
   },
-#if 0
-  /* (these two buttons are real gadgets) */
   {
-    GAME_CONTROL_PREV_LEVEL,
-    &menu.game.button.prev_level,      IMG_MENU_BUTTON_PREV_LEVEL,
-    NULL,                              NULL,
-    NULL,                              NULL,
+    GAME_CONTROL_TIME_SS,
+    &game.panel.time_ss,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_NEXT_LEVEL,
-    &menu.game.button.next_level,      IMG_MENU_BUTTON_NEXT_LEVEL,
-    NULL,                              NULL,
-    NULL,                              NULL,
+    GAME_CONTROL_DROP_NEXT_1,
+    &game.panel.drop_next_1,
+    TYPE_INTEGER,
   },
-#endif
   {
-    GAME_CONTROL_CURRENT_LEVEL,
-    NULL,                              -1,
-    &menu.game.text.current_level,     &game_text_current_level,
-    NULL,                              NULL,
+    GAME_CONTROL_DROP_NEXT_2,
+    &game.panel.drop_next_2,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_FIRST_LEVEL,
-    NULL,                              -1,
-    &menu.game.text.first_level,       &game_text_first_level,
-    NULL,                              NULL,
+    GAME_CONTROL_DROP_NEXT_3,
+    &game.panel.drop_next_3,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_LAST_LEVEL,
-    NULL,                              -1,
-    &menu.game.text.last_level,                &game_text_last_level,
-    NULL,                              NULL,
+    GAME_CONTROL_DROP_NEXT_4,
+    &game.panel.drop_next_4,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_LEVEL_INFO_1,
-    NULL,                              -1,
-    &menu.game.text.level_info_1,      NULL,
-    NULL,                              NULL,
+    GAME_CONTROL_DROP_NEXT_5,
+    &game.panel.drop_next_5,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_LEVEL_INFO_2,
-    NULL,                              -1,
-    &menu.game.text.level_info_2,      NULL,
-    NULL,                              NULL,
+    GAME_CONTROL_DROP_NEXT_6,
+    &game.panel.drop_next_6,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_LEVEL_NAME,
-    NULL,                              -1,
-    &menu.game.text.level_name,                &game_text_level_name,
-    NULL,                              NULL,
+    GAME_CONTROL_DROP_NEXT_7,
+    &game.panel.drop_next_7,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_LEVEL_AUTHOR,
-    NULL,                              -1,
-    &menu.game.text.level_author,      &game_text_level_author,
-    NULL,                              NULL,
+    GAME_CONTROL_DROP_NEXT_8,
+    &game.panel.drop_next_8,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_EMC_KEYS,
+    &game.panel.emc_keys,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_KEY_1,
+    &game.panel.key_1,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_KEY_2,
+    &game.panel.key_2,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_KEY_3,
+    &game.panel.key_3,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_KEY_4,
+    &game.panel.key_4,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_KEY_5,
+    &game.panel.key_5,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_KEY_6,
+    &game.panel.key_6,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_KEY_7,
+    &game.panel.key_7,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_KEY_8,
+    &game.panel.key_8,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_KEY_WHITE,
+    &game.panel.key_white,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_KEY_WHITE_COUNT,
+    &game.panel.key_white_count,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_SHIELD_NORMAL,
+    &game.panel.shield_normal,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_SHIELD_NORMAL_TIME,
+    &game.panel.shield_normal_time,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_SHIELD_DEADLY,
+    &game.panel.shield_deadly,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_SHIELD_DEADLY_TIME,
+    &game.panel.shield_deadly_time,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_EXIT,
+    &game.panel.exit,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_EM_EXIT,
+    &game.panel.em_exit,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_SP_EXIT,
+    &game.panel.sp_exit,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_STEEL_EXIT,
+    &game.panel.steel_exit,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_EM_STEEL_EXIT,
+    &game.panel.em_steel_exit,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_EMC_MAGIC_BALL,
+    &game.panel.emc_magic_ball,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_EMC_MAGIC_BALL_TIME,
+    &game.panel.emc_magic_ball_time,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_LIGHT_SWITCH,
+    &game.panel.light_switch,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_LIGHT_SWITCH_TIME,
+    &game.panel.light_switch_time,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_TIMEGATE_SWITCH,
+    &game.panel.timegate_switch,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_LEVEL_YEAR,
-    NULL,                              -1,
-    &menu.game.text.level_year,                &game_text_level_year,
-    NULL,                              NULL,
+    GAME_CONTROL_TIMEGATE_SWITCH_TIME,
+    &game.panel.timegate_switch_time,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_LEVEL_IMPORTED_FROM,
-    NULL,                              -1,
-    &menu.game.text.level_imported_from, &game_text_level_imported_from,
-    NULL,                              NULL,
+    GAME_CONTROL_SWITCHGATE_SWITCH,
+    &game.panel.switchgate_switch,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_LEVEL_IMPORTED_BY,
-    NULL,                              -1,
-    &menu.game.text.level_imported_by, &game_text_level_imported_by,
-    NULL,                              NULL,
+    GAME_CONTROL_EMC_LENSES,
+    &game.panel.emc_lenses,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_LEVEL_TESTED_BY,
-    NULL,                              -1,
-    &menu.game.text.level_tested_by,   &game_text_level_tested_by,
-    NULL,                              NULL,
+    GAME_CONTROL_EMC_LENSES_TIME,
+    &game.panel.emc_lenses_time,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_TITLE_1,
-    NULL,                              -1,
-    &menu.game.text.title_1,           &game_text_title_1,
-    NULL,                              NULL,
+    GAME_CONTROL_EMC_MAGNIFIER,
+    &game.panel.emc_magnifier,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_TITLE_2,
-    NULL,                              -1,
-    &menu.game.text.title_2,           &game_text_title_2,
-    NULL,                              NULL,
+    GAME_CONTROL_EMC_MAGNIFIER_TIME,
+    &game.panel.emc_magnifier_time,
+    TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_TITLE_3,
-    NULL,                              -1,
-    &menu.game.text.title_3,           &game_text_title_3,
-    NULL,                              NULL,
+    GAME_CONTROL_BALLOON_SWITCH,
+    &game.panel.balloon_switch,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_DYNABOMB_NUMBER,
+    &game.panel.dynabomb_number,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_DYNABOMB_SIZE,
+    &game.panel.dynabomb_size,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_DYNABOMB_POWER,
+    &game.panel.dynabomb_power,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_PENGUINS,
+    &game.panel.penguins,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_SOKOBAN_OBJECTS,
+    &game.panel.sokoban_objects,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_SOKOBAN_FIELDS,
+    &game.panel.sokoban_fields,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_ROBOT_WHEEL,
+    &game.panel.robot_wheel,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_CONVEYOR_BELT_1,
+    &game.panel.conveyor_belt_1,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_CONVEYOR_BELT_1_SWITCH,
+    &game.panel.conveyor_belt_1_switch,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_CONVEYOR_BELT_2,
+    &game.panel.conveyor_belt_2,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_CONVEYOR_BELT_2_SWITCH,
+    &game.panel.conveyor_belt_2_switch,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_CONVEYOR_BELT_3,
+    &game.panel.conveyor_belt_3,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_CONVEYOR_BELT_3_SWITCH,
+    &game.panel.conveyor_belt_3_switch,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_CONVEYOR_BELT_4,
+    &game.panel.conveyor_belt_4,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_CONVEYOR_BELT_4_SWITCH,
+    &game.panel.conveyor_belt_4_switch,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_MAGIC_WALL,
+    &game.panel.magic_wall,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_MAGIC_WALL_TIME,
+    &game.panel.magic_wall_time,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_BD_MAGIC_WALL,
+    &game.panel.bd_magic_wall,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_DC_MAGIC_WALL,
+    &game.panel.dc_magic_wall,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_PLAYER_NAME,
+    &game.panel.player_name,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_LEVEL_NAME,
+    &game.panel.level_name,
+    TYPE_INTEGER,
+  },
+  {
+    GAME_CONTROL_LEVEL_AUTHOR,
+    &game.panel.level_author,
+    TYPE_INTEGER,
   },
 
   {
     -1,
-    NULL,                              -1,
-    NULL,                              NULL,
-    NULL,                              NULL,
+    NULL,
+    -1,
+    NULL
   }
 };
 #endif
@@ -1677,11 +1893,34 @@ void DrawGameValue_Keys(int key[MAX_NUM_KEYS])
     int dst_x = PANEL_XPOS(pos) + i * MINI_TILEX;
     int dst_y = PANEL_YPOS(pos);
 
+#if 0
+    /* masked blit with tiles from half-size scaled bitmap does not work yet
+       (no mask bitmap created for these sizes after loading and scaling) --
+       solution: load without creating mask, scale, then create final mask */
+
+    BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, src_x, src_y,
+              MINI_TILEX, MINI_TILEY, dst_x, dst_y);
+
+    if (key[i])
+    {
+      int graphic = el2edimg(base_key_graphic + i);
+      Bitmap *src_bitmap;
+      int src_x, src_y;
+
+      getMiniGraphicSource(graphic, &src_bitmap, &src_x, &src_y);
+
+      SetClipOrigin(src_bitmap, src_bitmap->stored_clip_gc,
+                   dst_x - src_x, dst_y - src_y);
+      BlitBitmapMasked(src_bitmap, drawto, src_x, src_y, MINI_TILEX, MINI_TILEY,
+                      dst_x, dst_y);
+    }
+#else
     if (key[i])
       DrawMiniGraphicExt(drawto, dst_x, dst_y, el2edimg(base_key_graphic + i));
     else
       BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, src_x, src_y,
                 MINI_TILEX, MINI_TILEY, dst_x, dst_y);
+#endif
   }
 }
 
index 9cea39c32e7388386af9bfb79b752fdff92a6a45..fcd284d5ee4c234a8d1863f2ebc719182761c8f1 100644 (file)
@@ -53,7 +53,7 @@ struct GamePanelInfo
   struct TextPosInfo key_7;
   struct TextPosInfo key_8;
   struct TextPosInfo key_white;
-  struct TextPosInfo white_keys;
+  struct TextPosInfo key_white_count;
   struct TextPosInfo shield_normal;
   struct TextPosInfo shield_normal_time;
   struct TextPosInfo shield_deadly;
@@ -64,6 +64,7 @@ struct GamePanelInfo
   struct TextPosInfo steel_exit;
   struct TextPosInfo em_steel_exit;
   struct TextPosInfo emc_magic_ball;
+  struct TextPosInfo emc_magic_ball_switch;
   struct TextPosInfo emc_magic_ball_time;
   struct TextPosInfo light_switch;
   struct TextPosInfo light_switch_time;
@@ -83,12 +84,12 @@ struct GamePanelInfo
   struct TextPosInfo sokoban_fields;
   struct TextPosInfo robot_wheel;
   struct TextPosInfo conveyor_belt_1;
-  struct TextPosInfo conveyor_belt_2;
-  struct TextPosInfo conveyor_belt_3;
-  struct TextPosInfo conveyor_belt_4;
   struct TextPosInfo conveyor_belt_1_switch;
+  struct TextPosInfo conveyor_belt_2;
   struct TextPosInfo conveyor_belt_2_switch;
+  struct TextPosInfo conveyor_belt_3;
   struct TextPosInfo conveyor_belt_3_switch;
+  struct TextPosInfo conveyor_belt_4;
   struct TextPosInfo conveyor_belt_4_switch;
   struct TextPosInfo magic_wall;
   struct TextPosInfo magic_wall_time;
@@ -97,14 +98,20 @@ struct GamePanelInfo
   struct TextPosInfo player_name;
   struct TextPosInfo level_name;
   struct TextPosInfo level_author;
-  struct TextPosInfo stop;
-  struct TextPosInfo pause;
-  struct TextPosInfo play;
-  struct TextPosInfo sound_music;
-  struct TextPosInfo sound_loops;
-  struct TextPosInfo sound_simple;
 };
+
+struct GameButtonInfo
+{
+  struct MenuPosInfo stop;
+  struct MenuPosInfo pause;
+  struct MenuPosInfo play;
+  struct MenuPosInfo sound_music;
+  struct MenuPosInfo sound_loops;
+  struct MenuPosInfo sound_simple;
+};
+
 #else
+
 struct GamePanelInfo
 {
   struct XY level;
@@ -120,6 +127,7 @@ struct GameInfo
 {
   /* values for control panel */
   struct GamePanelInfo panel;
+  struct GameButtonInfo button;
 
   /* values for engine initialization */
   int default_push_delay_fixed;