rnd-20070403-1-src
authorHolger Schemel <info@artsoft.org>
Tue, 3 Apr 2007 00:01:57 +0000 (02:01 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:55:19 +0000 (10:55 +0200)
* added attribute ".tile_size" for element style game panel controls

ChangeLog
src/conf_gfx.c
src/conf_var.c
src/conftime.h
src/game.c
src/game.h
src/libgame/system.h
src/screens.c
src/tools.c
src/tools.h

index e15d9e8e8b81fc489637f4fb0826c7deed4803c8..6198cbd2173ec2b3b3ceb1e5ca2684419882db9e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2007-04-02
+       * added attribute ".tile_size" for element style game panel controls
+
 2007-04-01
        * added <space> key as additional valid key to use for confirm requester
 
index c7469e7e174838b4e0dfa007890f66f4a6acaecb..7034a099a04eefab01e783461f09ef3fdd5482f4 100644 (file)
@@ -5376,16 +5376,19 @@ struct ConfigInfo image_config[] =
   { "main.text.first_level.y",                 "98"                    },
   { "main.text.first_level.align",             "left"                  },
   { "main.text.first_level.valign",            "top"                   },
+  { "main.text.first_level.digits",            "3"                     },
   { "main.text.first_level.font",              "font.text_3"           },
   { "main.text.last_level.x",                  "488"                   },
   { "main.text.last_level.y",                  "112"                   },
   { "main.text.last_level.align",              "left"                  },
   { "main.text.last_level.valign",             "top"                   },
+  { "main.text.last_level.digits",             "3"                     },
   { "main.text.last_level.font",               "font.text_3"           },
   { "main.text.level_number.x",                        "352"                   },
   { "main.text.level_number.y",                        "96"                    },
   { "main.text.level_number.align",            "left"                  },
   { "main.text.level_number.valign",           "top"                   },
+  { "main.text.level_number.digits",           "3"                     },
   { "main.text.level_number.font",             "font.value_1"          },
   { "main.text.level_info_1.x",                        "272"                   },
   { "main.text.level_info_1.y",                        "352"                   },
@@ -5416,7 +5419,7 @@ struct ConfigInfo image_config[] =
   { "main.text.level_year.y",                  "-1"                    },
   { "main.text.level_year.align",              "left"                  },
   { "main.text.level_year.valign",             "top"                   },
-  { "main.text.level_year.chars",              "-1"                    },
+  { "main.text.level_year.digits",             "-1"                    },
   { "main.text.level_year.font",               "font.text_2"           },
   { "main.text.level_imported_from.x",         "-1"                    },
   { "main.text.level_imported_from.y",         "-1"                    },
@@ -5487,7 +5490,7 @@ struct ConfigInfo image_config[] =
   { "game.panel.level_number.y",               "20"                    },
   { "game.panel.level_number.align",           "center"                },
   { "game.panel.level_number.valign",          "top"                   },
-  { "game.panel.level_number.chars",           "-1"                    },
+  { "game.panel.level_number.digits",          "-1"                    },
   { "game.panel.level_number.font",            "font.text_2"           },
   { "game.panel.level_number.font_narrow",     "font.text_1"           },
 
@@ -5495,53 +5498,112 @@ struct ConfigInfo image_config[] =
   { "game.panel.gems.y",                       "54"                    },
   { "game.panel.gems.align",                   "center"                },
   { "game.panel.gems.valign",                  "top"                   },
-  { "game.panel.gems.chars",                   "3"                     },
+  { "game.panel.gems.digits",                  "3"                     },
   { "game.panel.gems.font",                    "font.text_2"           },
 
-  { "game.panel.inventory.x",                  "50"                    },
-  { "game.panel.inventory.y",                  "89"                    },
-  { "game.panel.inventory.align",              "center"                },
-  { "game.panel.inventory.valign",             "top"                   },
-  { "game.panel.inventory.chars",              "3"                     },
-  { "game.panel.inventory.font",               "font.text_2"           },
+  { "game.panel.inventory_count.x",            "50"                    },
+  { "game.panel.inventory_count.y",            "89"                    },
+  { "game.panel.inventory_count.align",                "center"                },
+  { "game.panel.inventory_count.valign",       "top"                   },
+  { "game.panel.inventory_count.digits",       "3"                     },
+  { "game.panel.inventory_count.font",         "font.text_2"           },
+
+  { "game.panel.inventory_first_1.x",          "-1"                    },
+  { "game.panel.inventory_first_1.y",          "-1"                    },
+  { "game.panel.inventory_first_1.tile_size",  "16"                    },
+  { "game.panel.inventory_first_2.x",          "-1"                    },
+  { "game.panel.inventory_first_2.y",          "-1"                    },
+  { "game.panel.inventory_first_2.tile_size",  "16"                    },
+  { "game.panel.inventory_first_3.x",          "-1"                    },
+  { "game.panel.inventory_first_3.y",          "-1"                    },
+  { "game.panel.inventory_first_3.tile_size",  "16"                    },
+  { "game.panel.inventory_first_4.x",          "-1"                    },
+  { "game.panel.inventory_first_4.y",          "-1"                    },
+  { "game.panel.inventory_first_4.tile_size",  "16"                    },
+  { "game.panel.inventory_first_5.x",          "-1"                    },
+  { "game.panel.inventory_first_5.y",          "-1"                    },
+  { "game.panel.inventory_first_5.tile_size",  "16"                    },
+  { "game.panel.inventory_first_6.x",          "-1"                    },
+  { "game.panel.inventory_first_6.y",          "-1"                    },
+  { "game.panel.inventory_first_6.tile_size",  "16"                    },
+  { "game.panel.inventory_first_7.x",          "-1"                    },
+  { "game.panel.inventory_first_7.y",          "-1"                    },
+  { "game.panel.inventory_first_7.tile_size",  "16"                    },
+  { "game.panel.inventory_first_8.x",          "-1"                    },
+  { "game.panel.inventory_first_8.y",          "-1"                    },
+  { "game.panel.inventory_first_8.tile_size",  "16"                    },
+
+  { "game.panel.inventory_last_1.x",           "-1"                    },
+  { "game.panel.inventory_last_1.y",           "-1"                    },
+  { "game.panel.inventory_last_1.tile_size",   "16"                    },
+  { "game.panel.inventory_last_2.x",           "-1"                    },
+  { "game.panel.inventory_last_2.y",           "-1"                    },
+  { "game.panel.inventory_last_2.tile_size",   "16"                    },
+  { "game.panel.inventory_last_3.x",           "-1"                    },
+  { "game.panel.inventory_last_3.y",           "-1"                    },
+  { "game.panel.inventory_last_3.tile_size",   "16"                    },
+  { "game.panel.inventory_last_4.x",           "-1"                    },
+  { "game.panel.inventory_last_4.y",           "-1"                    },
+  { "game.panel.inventory_last_4.tile_size",   "16"                    },
+  { "game.panel.inventory_last_5.x",           "-1"                    },
+  { "game.panel.inventory_last_5.y",           "-1"                    },
+  { "game.panel.inventory_last_5.tile_size",   "16"                    },
+  { "game.panel.inventory_last_6.x",           "-1"                    },
+  { "game.panel.inventory_last_6.y",           "-1"                    },
+  { "game.panel.inventory_last_6.tile_size",   "16"                    },
+  { "game.panel.inventory_last_7.x",           "-1"                    },
+  { "game.panel.inventory_last_7.y",           "-1"                    },
+  { "game.panel.inventory_last_7.tile_size",   "16"                    },
+  { "game.panel.inventory_last_8.x",           "-1"                    },
+  { "game.panel.inventory_last_8.y",           "-1"                    },
+  { "game.panel.inventory_last_8.tile_size",   "16"                    },
 
   { "game.panel.key_1.x",                      "18"                    },
   { "game.panel.key_1.y",                      "123"                   },
+  { "game.panel.key_1.tile_size",              "16"                    },
   { "game.panel.key_2.x",                      "34"                    },
   { "game.panel.key_2.y",                      "123"                   },
+  { "game.panel.key_2.tile_size",              "16"                    },
   { "game.panel.key_3.x",                      "50"                    },
   { "game.panel.key_3.y",                      "123"                   },
+  { "game.panel.key_3.tile_size",              "16"                    },
   { "game.panel.key_4.x",                      "66"                    },
   { "game.panel.key_4.y",                      "123"                   },
+  { "game.panel.key_4.tile_size",              "16"                    },
   { "game.panel.key_5.x",                      "-1"                    },
   { "game.panel.key_5.y",                      "-1"                    },
+  { "game.panel.key_5.tile_size",              "16"                    },
   { "game.panel.key_6.x",                      "-1"                    },
   { "game.panel.key_6.y",                      "-1"                    },
+  { "game.panel.key_6.tile_size",              "16"                    },
   { "game.panel.key_7.x",                      "-1"                    },
   { "game.panel.key_7.y",                      "-1"                    },
+  { "game.panel.key_7.tile_size",              "16"                    },
   { "game.panel.key_8.x",                      "-1"                    },
   { "game.panel.key_8.y",                      "-1"                    },
+  { "game.panel.key_8.tile_size",              "16"                    },
   { "game.panel.key_white.x",                  "-1"                    },
   { "game.panel.key_white.y",                  "-1"                    },
+  { "game.panel.key_white.tile_size",          "16"                    },
   { "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.valign",       "top"                   },
-  { "game.panel.key_white_count.chars",                "-1"                    },
+  { "game.panel.key_white_count.digits",       "-1"                    },
   { "game.panel.key_white_count.font",         "font.text_2"           },
 
   { "game.panel.score.x",                      "50"                    },
   { "game.panel.score.y",                      "159"                   },
   { "game.panel.score.align",                  "center"                },
   { "game.panel.score.valign",                 "top"                   },
-  { "game.panel.score.chars",                  "5"                     },
+  { "game.panel.score.digits",                 "5"                     },
   { "game.panel.score.font",                   "font.text_2"           },
 
   { "game.panel.time.x",                       "50"                    },
   { "game.panel.time.y",                       "194"                   },
   { "game.panel.time.align",                   "center"                },
   { "game.panel.time.valign",                  "top"                   },
-  { "game.panel.time.chars",                   "-1"                    },
+  { "game.panel.time.digits",                  "-1"                    },
   { "game.panel.time.font",                    "font.text_2"           },
   { "game.panel.time.font_narrow",             "font.text_1"           },
 
@@ -5549,180 +5611,191 @@ struct ConfigInfo image_config[] =
   { "game.panel.time_hh.y",                    "-1"                    },
   { "game.panel.time_hh.align",                        "left"                  },
   { "game.panel.time_hh.valign",               "top"                   },
-  { "game.panel.time_hh.chars",                        "-1"                    },
+  { "game.panel.time_hh.digits",               "2"                     },
   { "game.panel.time_hh.font",                 "font.text_2"           },
   { "game.panel.time_mm.x",                    "-1"                    },
   { "game.panel.time_mm.y",                    "-1"                    },
   { "game.panel.time_mm.align",                        "left"                  },
   { "game.panel.time_mm.valign",               "top"                   },
-  { "game.panel.time_mm.chars",                        "-1"                    },
+  { "game.panel.time_mm.digits",               "2"                     },
   { "game.panel.time_mm.font",                 "font.text_2"           },
   { "game.panel.time_ss.x",                    "-1"                    },
   { "game.panel.time_ss.y",                    "-1"                    },
   { "game.panel.time_ss.align",                        "left"                  },
   { "game.panel.time_ss.valign",               "top"                   },
-  { "game.panel.time_ss.chars",                        "-1"                    },
+  { "game.panel.time_ss.digits",               "2"                     },
   { "game.panel.time_ss.font",                 "font.text_2"           },
 
-  { "game.panel.drop_next_1.x",                        "-1"                    },
-  { "game.panel.drop_next_1.y",                        "-1"                    },
-  { "game.panel.drop_next_2.x",                        "-1"                    },
-  { "game.panel.drop_next_2.y",                        "-1"                    },
-  { "game.panel.drop_next_3.x",                        "-1"                    },
-  { "game.panel.drop_next_3.y",                        "-1"                    },
-  { "game.panel.drop_next_4.x",                        "-1"                    },
-  { "game.panel.drop_next_4.y",                        "-1"                    },
-  { "game.panel.drop_next_5.x",                        "-1"                    },
-  { "game.panel.drop_next_5.y",                        "-1"                    },
-  { "game.panel.drop_next_6.x",                        "-1"                    },
-  { "game.panel.drop_next_6.y",                        "-1"                    },
-  { "game.panel.drop_next_7.x",                        "-1"                    },
-  { "game.panel.drop_next_7.y",                        "-1"                    },
-  { "game.panel.drop_next_8.x",                        "-1"                    },
-  { "game.panel.drop_next_8.y",                        "-1"                    },
-
   { "game.panel.shield_normal.x",              "-1"                    },
   { "game.panel.shield_normal.y",              "-1"                    },
+  { "game.panel.shield_normal.tile_size",      "16"                    },
   { "game.panel.shield_normal_time.x",         "-1"                    },
   { "game.panel.shield_normal_time.y",         "-1"                    },
   { "game.panel.shield_normal_time.align",     "left"                  },
   { "game.panel.shield_normal_time.valign",    "top"                   },
-  { "game.panel.shield_normal_time.chars",     "-1"                    },
+  { "game.panel.shield_normal_time.digits",    "-1"                    },
   { "game.panel.shield_normal_time.font",      "font.text_2"           },
   { "game.panel.shield_deadly.x",              "-1"                    },
   { "game.panel.shield_deadly.y",              "-1"                    },
+  { "game.panel.shield_deadly.tile_size",      "16"                    },
   { "game.panel.shield_deadly_time.x",         "-1"                    },
   { "game.panel.shield_deadly_time.y",         "-1"                    },
   { "game.panel.shield_deadly_time.align",     "left"                  },
   { "game.panel.shield_deadly_time.valign",    "top"                   },
-  { "game.panel.shield_deadly_time.chars",     "-1"                    },
+  { "game.panel.shield_deadly_time.digits",    "-1"                    },
   { "game.panel.shield_deadly_time.font",      "font.text_2"           },
 
   { "game.panel.exit.x",                       "-1"                    },
   { "game.panel.exit.y",                       "-1"                    },
+  { "game.panel.exit.tile_size",               "16"                    },
   { "game.panel.em_exit.x",                    "-1"                    },
   { "game.panel.em_exit.y",                    "-1"                    },
+  { "game.panel.em_exit.tile_size",            "16"                    },
   { "game.panel.sp_exit.x",                    "-1"                    },
   { "game.panel.sp_exit.y",                    "-1"                    },
+  { "game.panel.sp_exit.tile_size",            "16"                    },
   { "game.panel.steel_exit.x",                 "-1"                    },
   { "game.panel.steel_exit.y",                 "-1"                    },
+  { "game.panel.steel_exit.tile_size",         "16"                    },
   { "game.panel.em_steel_exit.x",              "-1"                    },
   { "game.panel.em_steel_exit.y",              "-1"                    },
+  { "game.panel.em_steel_exit.tile_size",      "16"                    },
 
   { "game.panel.emc_magic_ball.x",             "-1"                    },
   { "game.panel.emc_magic_ball.y",             "-1"                    },
+  { "game.panel.emc_magic_ball.tile_size",     "16"                    },
   { "game.panel.emc_magic_ball_switch.x",      "-1"                    },
   { "game.panel.emc_magic_ball_switch.y",      "-1"                    },
+  { "game.panel.emc_magic_ball_switch.tile_size", "16"                 },
 
   { "game.panel.light_switch.x",               "-1"                    },
   { "game.panel.light_switch.y",               "-1"                    },
+  { "game.panel.light_switch.tile_size",       "16"                    },
   { "game.panel.light_switch_time.x",          "-1"                    },
   { "game.panel.light_switch_time.y",          "-1"                    },
   { "game.panel.light_switch_time.align",      "left"                  },
   { "game.panel.light_switch_time.valign",     "top"                   },
-  { "game.panel.light_switch_time.chars",      "-1"                    },
+  { "game.panel.light_switch_time.digits",     "-1"                    },
   { "game.panel.light_switch_time.font",       "font.text_2"           },
 
   { "game.panel.timegate_switch.x",            "-1"                    },
   { "game.panel.timegate_switch.y",            "-1"                    },
+  { "game.panel.timegate_switch.tile_size",    "16"                    },
   { "game.panel.timegate_switch_time.x",       "-1"                    },
   { "game.panel.timegate_switch_time.y",       "-1"                    },
   { "game.panel.timegate_switch_time.align",   "left"                  },
   { "game.panel.timegate_switch_time.valign",  "top"                   },
-  { "game.panel.timegate_switch_time.chars",   "-1"                    },
+  { "game.panel.timegate_switch_time.digits",  "-1"                    },
   { "game.panel.timegate_switch_time.font",    "font.text_2"           },
 
   { "game.panel.switchgate_switch.x",          "-1"                    },
   { "game.panel.switchgate_switch.y",          "-1"                    },
+  { "game.panel.switchgate_switch.tile_size",  "16"                    },
 
   { "game.panel.emc_lenses.x",                 "-1"                    },
   { "game.panel.emc_lenses.y",                 "-1"                    },
+  { "game.panel.emc_lenses.tile_size",         "16"                    },
   { "game.panel.emc_lenses_time.x",            "-1"                    },
   { "game.panel.emc_lenses_time.y",            "-1"                    },
   { "game.panel.emc_lenses_time.align",                "left"                  },
   { "game.panel.emc_lenses_time.valign",       "top"                   },
-  { "game.panel.emc_lenses_time.chars",                "-1"                    },
+  { "game.panel.emc_lenses_time.digits",       "-1"                    },
   { "game.panel.emc_lenses_time.font",         "font.text_2"           },
 
   { "game.panel.emc_magnifier.x",              "-1"                    },
   { "game.panel.emc_magnifier.y",              "-1"                    },
+  { "game.panel.emc_magnifier.tile_size",      "16"                    },
   { "game.panel.emc_magnifier_time.x",         "-1"                    },
   { "game.panel.emc_magnifier_time.y",         "-1"                    },
   { "game.panel.emc_magnifier_time.align",     "left"                  },
   { "game.panel.emc_magnifier_time.valign",    "top"                   },
-  { "game.panel.emc_magnifier_time.chars",     "-1"                    },
+  { "game.panel.emc_magnifier_time.digits",    "-1"                    },
   { "game.panel.emc_magnifier_time.font",      "font.text_2"           },
 
   { "game.panel.balloon_switch.x",             "-1"                    },
   { "game.panel.balloon_switch.y",             "-1"                    },
+  { "game.panel.balloon_switch.tile_size",     "16"                    },
 
   { "game.panel.dynabomb_number.x",            "-1"                    },
   { "game.panel.dynabomb_number.y",            "-1"                    },
   { "game.panel.dynabomb_number.align",                "left"                  },
   { "game.panel.dynabomb_number.valign",       "top"                   },
-  { "game.panel.dynabomb_number.chars",                "-1"                    },
+  { "game.panel.dynabomb_number.digits",       "-1"                    },
   { "game.panel.dynabomb_number.font",         "font.text_2"           },
   { "game.panel.dynabomb_size.x",              "-1"                    },
   { "game.panel.dynabomb_size.y",              "-1"                    },
   { "game.panel.dynabomb_size.align",          "left"                  },
   { "game.panel.dynabomb_size.valign",         "top"                   },
-  { "game.panel.dynabomb_size.chars",          "-1"                    },
+  { "game.panel.dynabomb_size.digits",         "-1"                    },
   { "game.panel.dynabomb_size.font",           "font.text_2"           },
   { "game.panel.dynabomb_power.x",             "-1"                    },
   { "game.panel.dynabomb_power.y",             "-1"                    },
+  { "game.panel.dynabomb_power.tile_size",     "16"                    },
 
   { "game.panel.penguins.x",                   "-1"                    },
   { "game.panel.penguins.y",                   "-1"                    },
   { "game.panel.penguins.align",               "left"                  },
   { "game.panel.penguins.valign",              "top"                   },
-  { "game.panel.penguins.chars",               "-1"                    },
+  { "game.panel.penguins.digits",              "-1"                    },
   { "game.panel.penguins.font",                        "font.text_2"           },
 
   { "game.panel.sokoban_objects.x",            "-1"                    },
   { "game.panel.sokoban_objects.y",            "-1"                    },
   { "game.panel.sokoban_objects.align",                "left"                  },
   { "game.panel.sokoban_objects.valign",       "top"                   },
-  { "game.panel.sokoban_objects.chars",                "-1"                    },
+  { "game.panel.sokoban_objects.digits",       "-1"                    },
   { "game.panel.sokoban_objects.font",         "font.text_2"           },
   { "game.panel.sokoban_fields.x",             "-1"                    },
   { "game.panel.sokoban_fields.y",             "-1"                    },
   { "game.panel.sokoban_fields.align",         "left"                  },
   { "game.panel.sokoban_fields.valign",                "top"                   },
-  { "game.panel.sokoban_fields.chars",         "-1"                    },
+  { "game.panel.sokoban_fields.digits",                "-1"                    },
   { "game.panel.sokoban_fields.font",          "font.text_2"           },
 
   { "game.panel.robot_wheel.x",                        "-1"                    },
   { "game.panel.robot_wheel.y",                        "-1"                    },
+  { "game.panel.robot_wheel.tile_size",                "16"                    },
 
   { "game.panel.conveyor_belt_1.x",            "-1"                    },
   { "game.panel.conveyor_belt_1.y",            "-1"                    },
+  { "game.panel.conveyor_belt_1.tile_size",    "16"                    },
   { "game.panel.conveyor_belt_1_switch.x",     "-1"                    },
   { "game.panel.conveyor_belt_1_switch.y",     "-1"                    },
+  { "game.panel.conveyor_belt_1_switch.tile_size", "16"                        },
   { "game.panel.conveyor_belt_2.x",            "-1"                    },
   { "game.panel.conveyor_belt_2.y",            "-1"                    },
+  { "game.panel.conveyor_belt_2.tile_size",    "16"                    },
   { "game.panel.conveyor_belt_2_switch.x",     "-1"                    },
   { "game.panel.conveyor_belt_2_switch.y",     "-1"                    },
+  { "game.panel.conveyor_belt_2_switch.tile_size", "16"                        },
   { "game.panel.conveyor_belt_3.x",            "-1"                    },
   { "game.panel.conveyor_belt_3.y",            "-1"                    },
+  { "game.panel.conveyor_belt_3.tile_size",    "16"                    },
   { "game.panel.conveyor_belt_3_switch.x",     "-1"                    },
   { "game.panel.conveyor_belt_3_switch.y",     "-1"                    },
+  { "game.panel.conveyor_belt_3_switch.tile_size", "16"                        },
   { "game.panel.conveyor_belt_4.x",            "-1"                    },
   { "game.panel.conveyor_belt_4.y",            "-1"                    },
+  { "game.panel.conveyor_belt_4.tile_size",    "16"                    },
   { "game.panel.conveyor_belt_4_switch.x",     "-1"                    },
   { "game.panel.conveyor_belt_4_switch.y",     "-1"                    },
+  { "game.panel.conveyor_belt_4_switch.tile_size", "16"                        },
 
   { "game.panel.magic_wall.x",                 "-1"                    },
   { "game.panel.magic_wall.y",                 "-1"                    },
+  { "game.panel.magic_wall.tile_size",         "16"                    },
   { "game.panel.magic_wall_time.x",            "-1"                    },
   { "game.panel.magic_wall_time.y",            "-1"                    },
   { "game.panel.magic_wall_time.align",                "left"                  },
   { "game.panel.magic_wall_time.valign",       "top"                   },
-  { "game.panel.magic_wall_time.chars",                "-1"                    },
+  { "game.panel.magic_wall_time.digits",       "-1"                    },
   { "game.panel.magic_wall_time.font",         "font.text_2"           },
   { "game.panel.bd_magic_wall.x",              "-1"                    },
   { "game.panel.bd_magic_wall.y",              "-1"                    },
+  { "game.panel.bd_magic_wall.tile_size",      "16"                    },
   { "game.panel.dc_magic_wall.x",              "-1"                    },
   { "game.panel.dc_magic_wall.y",              "-1"                    },
+  { "game.panel.dc_magic_wall.tile_size",      "16"                    },
 
   { "game.panel.player_name.x",                        "-1"                    },
   { "game.panel.player_name.y",                        "-1"                    },
index 38ab1c563d3457ec5b791e62a39c682c97f6e277..58cae465bb0a06fbee78fa75ecc571b802647be5 100644 (file)
@@ -1548,6 +1548,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "main.text.first_level.valign",
     &menu.main.text.first_level.valign
   },
+  {
+    "main.text.first_level.digits",
+    &menu.main.text.first_level.size
+  },
   {
     "main.text.first_level.font",
     &menu.main.text.first_level.font
@@ -1568,6 +1572,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "main.text.last_level.valign",
     &menu.main.text.last_level.valign
   },
+  {
+    "main.text.last_level.digits",
+    &menu.main.text.last_level.size
+  },
   {
     "main.text.last_level.font",
     &menu.main.text.last_level.font
@@ -1588,6 +1596,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "main.text.level_number.valign",
     &menu.main.text.level_number.valign
   },
+  {
+    "main.text.level_number.digits",
+    &menu.main.text.level_number.size
+  },
   {
     "main.text.level_number.font",
     &menu.main.text.level_number.font
@@ -1610,7 +1622,7 @@ struct TokenIntPtrInfo image_config_vars[] =
   },
   {
     "main.text.level_info_1.chars",
-    &menu.main.text.level_info_1.chars
+    &menu.main.text.level_info_1.size
   },
   {
     "main.text.level_info_1.font",
@@ -1634,7 +1646,7 @@ struct TokenIntPtrInfo image_config_vars[] =
   },
   {
     "main.text.level_info_2.chars",
-    &menu.main.text.level_info_2.chars
+    &menu.main.text.level_info_2.size
   },
   {
     "main.text.level_info_2.font",
@@ -1662,7 +1674,7 @@ struct TokenIntPtrInfo image_config_vars[] =
   },
   {
     "main.text.level_name.chars",
-    &menu.main.text.level_name.chars
+    &menu.main.text.level_name.size
   },
   {
     "main.text.level_name.font",
@@ -1686,7 +1698,7 @@ struct TokenIntPtrInfo image_config_vars[] =
   },
   {
     "main.text.level_author.chars",
-    &menu.main.text.level_author.chars
+    &menu.main.text.level_author.size
   },
   {
     "main.text.level_author.font",
@@ -1709,8 +1721,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &menu.main.text.level_year.valign
   },
   {
-    "main.text.level_year.chars",
-    &menu.main.text.level_year.chars
+    "main.text.level_year.digits",
+    &menu.main.text.level_year.size
   },
   {
     "main.text.level_year.font",
@@ -1734,7 +1746,7 @@ struct TokenIntPtrInfo image_config_vars[] =
   },
   {
     "main.text.level_imported_from.chars",
-    &menu.main.text.level_imported_from.chars
+    &menu.main.text.level_imported_from.size
   },
   {
     "main.text.level_imported_from.font",
@@ -1758,7 +1770,7 @@ struct TokenIntPtrInfo image_config_vars[] =
   },
   {
     "main.text.level_imported_by.chars",
-    &menu.main.text.level_imported_by.chars
+    &menu.main.text.level_imported_by.size
   },
   {
     "main.text.level_imported_by.font",
@@ -1782,7 +1794,7 @@ struct TokenIntPtrInfo image_config_vars[] =
   },
   {
     "main.text.level_tested_by.chars",
-    &menu.main.text.level_tested_by.chars
+    &menu.main.text.level_tested_by.size
   },
   {
     "main.text.level_tested_by.font",
@@ -1973,8 +1985,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.level_number.valign
   },
   {
-    "game.panel.level_number.chars",
-    &game.panel.level_number.chars
+    "game.panel.level_number.digits",
+    &game.panel.level_number.size
   },
   {
     "game.panel.level_number.font",
@@ -2001,36 +2013,228 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.gems.valign
   },
   {
-    "game.panel.gems.chars",
-    &game.panel.gems.chars
+    "game.panel.gems.digits",
+    &game.panel.gems.size
   },
   {
     "game.panel.gems.font",
     &game.panel.gems.font
   },
   {
-    "game.panel.inventory.x",
-    &game.panel.inventory.x
+    "game.panel.inventory_count.x",
+    &game.panel.inventory_count.x
+  },
+  {
+    "game.panel.inventory_count.y",
+    &game.panel.inventory_count.y
+  },
+  {
+    "game.panel.inventory_count.align",
+    &game.panel.inventory_count.align
+  },
+  {
+    "game.panel.inventory_count.valign",
+    &game.panel.inventory_count.valign
+  },
+  {
+    "game.panel.inventory_count.digits",
+    &game.panel.inventory_count.size
+  },
+  {
+    "game.panel.inventory_count.font",
+    &game.panel.inventory_count.font
+  },
+  {
+    "game.panel.inventory_first_1.x",
+    &game.panel.inventory_first_1.x
+  },
+  {
+    "game.panel.inventory_first_1.y",
+    &game.panel.inventory_first_1.y
+  },
+  {
+    "game.panel.inventory_first_1.tile_size",
+    &game.panel.inventory_first_1.size
+  },
+  {
+    "game.panel.inventory_first_2.x",
+    &game.panel.inventory_first_2.x
+  },
+  {
+    "game.panel.inventory_first_2.y",
+    &game.panel.inventory_first_2.y
+  },
+  {
+    "game.panel.inventory_first_2.tile_size",
+    &game.panel.inventory_first_2.size
+  },
+  {
+    "game.panel.inventory_first_3.x",
+    &game.panel.inventory_first_3.x
+  },
+  {
+    "game.panel.inventory_first_3.y",
+    &game.panel.inventory_first_3.y
+  },
+  {
+    "game.panel.inventory_first_3.tile_size",
+    &game.panel.inventory_first_3.size
+  },
+  {
+    "game.panel.inventory_first_4.x",
+    &game.panel.inventory_first_4.x
+  },
+  {
+    "game.panel.inventory_first_4.y",
+    &game.panel.inventory_first_4.y
+  },
+  {
+    "game.panel.inventory_first_4.tile_size",
+    &game.panel.inventory_first_4.size
+  },
+  {
+    "game.panel.inventory_first_5.x",
+    &game.panel.inventory_first_5.x
+  },
+  {
+    "game.panel.inventory_first_5.y",
+    &game.panel.inventory_first_5.y
+  },
+  {
+    "game.panel.inventory_first_5.tile_size",
+    &game.panel.inventory_first_5.size
+  },
+  {
+    "game.panel.inventory_first_6.x",
+    &game.panel.inventory_first_6.x
+  },
+  {
+    "game.panel.inventory_first_6.y",
+    &game.panel.inventory_first_6.y
+  },
+  {
+    "game.panel.inventory_first_6.tile_size",
+    &game.panel.inventory_first_6.size
   },
   {
-    "game.panel.inventory.y",
-    &game.panel.inventory.y
+    "game.panel.inventory_first_7.x",
+    &game.panel.inventory_first_7.x
   },
   {
-    "game.panel.inventory.align",
-    &game.panel.inventory.align
+    "game.panel.inventory_first_7.y",
+    &game.panel.inventory_first_7.y
   },
   {
-    "game.panel.inventory.valign",
-    &game.panel.inventory.valign
+    "game.panel.inventory_first_7.tile_size",
+    &game.panel.inventory_first_7.size
   },
   {
-    "game.panel.inventory.chars",
-    &game.panel.inventory.chars
+    "game.panel.inventory_first_8.x",
+    &game.panel.inventory_first_8.x
   },
   {
-    "game.panel.inventory.font",
-    &game.panel.inventory.font
+    "game.panel.inventory_first_8.y",
+    &game.panel.inventory_first_8.y
+  },
+  {
+    "game.panel.inventory_first_8.tile_size",
+    &game.panel.inventory_first_8.size
+  },
+  {
+    "game.panel.inventory_last_1.x",
+    &game.panel.inventory_last_1.x
+  },
+  {
+    "game.panel.inventory_last_1.y",
+    &game.panel.inventory_last_1.y
+  },
+  {
+    "game.panel.inventory_last_1.tile_size",
+    &game.panel.inventory_last_1.size
+  },
+  {
+    "game.panel.inventory_last_2.x",
+    &game.panel.inventory_last_2.x
+  },
+  {
+    "game.panel.inventory_last_2.y",
+    &game.panel.inventory_last_2.y
+  },
+  {
+    "game.panel.inventory_last_2.tile_size",
+    &game.panel.inventory_last_2.size
+  },
+  {
+    "game.panel.inventory_last_3.x",
+    &game.panel.inventory_last_3.x
+  },
+  {
+    "game.panel.inventory_last_3.y",
+    &game.panel.inventory_last_3.y
+  },
+  {
+    "game.panel.inventory_last_3.tile_size",
+    &game.panel.inventory_last_3.size
+  },
+  {
+    "game.panel.inventory_last_4.x",
+    &game.panel.inventory_last_4.x
+  },
+  {
+    "game.panel.inventory_last_4.y",
+    &game.panel.inventory_last_4.y
+  },
+  {
+    "game.panel.inventory_last_4.tile_size",
+    &game.panel.inventory_last_4.size
+  },
+  {
+    "game.panel.inventory_last_5.x",
+    &game.panel.inventory_last_5.x
+  },
+  {
+    "game.panel.inventory_last_5.y",
+    &game.panel.inventory_last_5.y
+  },
+  {
+    "game.panel.inventory_last_5.tile_size",
+    &game.panel.inventory_last_5.size
+  },
+  {
+    "game.panel.inventory_last_6.x",
+    &game.panel.inventory_last_6.x
+  },
+  {
+    "game.panel.inventory_last_6.y",
+    &game.panel.inventory_last_6.y
+  },
+  {
+    "game.panel.inventory_last_6.tile_size",
+    &game.panel.inventory_last_6.size
+  },
+  {
+    "game.panel.inventory_last_7.x",
+    &game.panel.inventory_last_7.x
+  },
+  {
+    "game.panel.inventory_last_7.y",
+    &game.panel.inventory_last_7.y
+  },
+  {
+    "game.panel.inventory_last_7.tile_size",
+    &game.panel.inventory_last_7.size
+  },
+  {
+    "game.panel.inventory_last_8.x",
+    &game.panel.inventory_last_8.x
+  },
+  {
+    "game.panel.inventory_last_8.y",
+    &game.panel.inventory_last_8.y
+  },
+  {
+    "game.panel.inventory_last_8.tile_size",
+    &game.panel.inventory_last_8.size
   },
   {
     "game.panel.key_1.x",
@@ -2040,6 +2244,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.key_1.y",
     &game.panel.key[0].y
   },
+  {
+    "game.panel.key_1.tile_size",
+    &game.panel.key[0].size
+  },
   {
     "game.panel.key_2.x",
     &game.panel.key[1].x
@@ -2048,6 +2256,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.key_2.y",
     &game.panel.key[1].y
   },
+  {
+    "game.panel.key_2.tile_size",
+    &game.panel.key[1].size
+  },
   {
     "game.panel.key_3.x",
     &game.panel.key[2].x
@@ -2056,6 +2268,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.key_3.y",
     &game.panel.key[2].y
   },
+  {
+    "game.panel.key_3.tile_size",
+    &game.panel.key[2].size
+  },
   {
     "game.panel.key_4.x",
     &game.panel.key[3].x
@@ -2064,6 +2280,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.key_4.y",
     &game.panel.key[3].y
   },
+  {
+    "game.panel.key_4.tile_size",
+    &game.panel.key[3].size
+  },
   {
     "game.panel.key_5.x",
     &game.panel.key[4].x
@@ -2072,6 +2292,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.key_5.y",
     &game.panel.key[4].y
   },
+  {
+    "game.panel.key_5.tile_size",
+    &game.panel.key[4].size
+  },
   {
     "game.panel.key_6.x",
     &game.panel.key[5].x
@@ -2080,6 +2304,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.key_6.y",
     &game.panel.key[5].y
   },
+  {
+    "game.panel.key_6.tile_size",
+    &game.panel.key[5].size
+  },
   {
     "game.panel.key_7.x",
     &game.panel.key[6].x
@@ -2088,6 +2316,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.key_7.y",
     &game.panel.key[6].y
   },
+  {
+    "game.panel.key_7.tile_size",
+    &game.panel.key[6].size
+  },
   {
     "game.panel.key_8.x",
     &game.panel.key[7].x
@@ -2096,6 +2328,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.key_8.y",
     &game.panel.key[7].y
   },
+  {
+    "game.panel.key_8.tile_size",
+    &game.panel.key[7].size
+  },
   {
     "game.panel.key_white.x",
     &game.panel.key_white.x
@@ -2104,6 +2340,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.key_white.y",
     &game.panel.key_white.y
   },
+  {
+    "game.panel.key_white.tile_size",
+    &game.panel.key_white.size
+  },
   {
     "game.panel.key_white_count.x",
     &game.panel.key_white_count.x
@@ -2121,8 +2361,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.key_white_count.valign
   },
   {
-    "game.panel.key_white_count.chars",
-    &game.panel.key_white_count.chars
+    "game.panel.key_white_count.digits",
+    &game.panel.key_white_count.size
   },
   {
     "game.panel.key_white_count.font",
@@ -2145,8 +2385,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.score.valign
   },
   {
-    "game.panel.score.chars",
-    &game.panel.score.chars
+    "game.panel.score.digits",
+    &game.panel.score.size
   },
   {
     "game.panel.score.font",
@@ -2169,8 +2409,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.time.valign
   },
   {
-    "game.panel.time.chars",
-    &game.panel.time.chars
+    "game.panel.time.digits",
+    &game.panel.time.size
   },
   {
     "game.panel.time.font",
@@ -2197,8 +2437,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.time_hh.valign
   },
   {
-    "game.panel.time_hh.chars",
-    &game.panel.time_hh.chars
+    "game.panel.time_hh.digits",
+    &game.panel.time_hh.size
   },
   {
     "game.panel.time_hh.font",
@@ -2221,8 +2461,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.time_mm.valign
   },
   {
-    "game.panel.time_mm.chars",
-    &game.panel.time_mm.chars
+    "game.panel.time_mm.digits",
+    &game.panel.time_mm.size
   },
   {
     "game.panel.time_mm.font",
@@ -2245,77 +2485,13 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.time_ss.valign
   },
   {
-    "game.panel.time_ss.chars",
-    &game.panel.time_ss.chars
+    "game.panel.time_ss.digits",
+    &game.panel.time_ss.size
   },
   {
     "game.panel.time_ss.font",
     &game.panel.time_ss.font
   },
-  {
-    "game.panel.drop_next_1.x",
-    &game.panel.drop_next_1.x
-  },
-  {
-    "game.panel.drop_next_1.y",
-    &game.panel.drop_next_1.y
-  },
-  {
-    "game.panel.drop_next_2.x",
-    &game.panel.drop_next_2.x
-  },
-  {
-    "game.panel.drop_next_2.y",
-    &game.panel.drop_next_2.y
-  },
-  {
-    "game.panel.drop_next_3.x",
-    &game.panel.drop_next_3.x
-  },
-  {
-    "game.panel.drop_next_3.y",
-    &game.panel.drop_next_3.y
-  },
-  {
-    "game.panel.drop_next_4.x",
-    &game.panel.drop_next_4.x
-  },
-  {
-    "game.panel.drop_next_4.y",
-    &game.panel.drop_next_4.y
-  },
-  {
-    "game.panel.drop_next_5.x",
-    &game.panel.drop_next_5.x
-  },
-  {
-    "game.panel.drop_next_5.y",
-    &game.panel.drop_next_5.y
-  },
-  {
-    "game.panel.drop_next_6.x",
-    &game.panel.drop_next_6.x
-  },
-  {
-    "game.panel.drop_next_6.y",
-    &game.panel.drop_next_6.y
-  },
-  {
-    "game.panel.drop_next_7.x",
-    &game.panel.drop_next_7.x
-  },
-  {
-    "game.panel.drop_next_7.y",
-    &game.panel.drop_next_7.y
-  },
-  {
-    "game.panel.drop_next_8.x",
-    &game.panel.drop_next_8.x
-  },
-  {
-    "game.panel.drop_next_8.y",
-    &game.panel.drop_next_8.y
-  },
   {
     "game.panel.shield_normal.x",
     &game.panel.shield_normal.x
@@ -2324,6 +2500,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.shield_normal.y",
     &game.panel.shield_normal.y
   },
+  {
+    "game.panel.shield_normal.tile_size",
+    &game.panel.shield_normal.size
+  },
   {
     "game.panel.shield_normal_time.x",
     &game.panel.shield_normal_time.x
@@ -2341,8 +2521,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.shield_normal_time.valign
   },
   {
-    "game.panel.shield_normal_time.chars",
-    &game.panel.shield_normal_time.chars
+    "game.panel.shield_normal_time.digits",
+    &game.panel.shield_normal_time.size
   },
   {
     "game.panel.shield_normal_time.font",
@@ -2356,6 +2536,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.shield_deadly.y",
     &game.panel.shield_deadly.y
   },
+  {
+    "game.panel.shield_deadly.tile_size",
+    &game.panel.shield_deadly.size
+  },
   {
     "game.panel.shield_deadly_time.x",
     &game.panel.shield_deadly_time.x
@@ -2373,8 +2557,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.shield_deadly_time.valign
   },
   {
-    "game.panel.shield_deadly_time.chars",
-    &game.panel.shield_deadly_time.chars
+    "game.panel.shield_deadly_time.digits",
+    &game.panel.shield_deadly_time.size
   },
   {
     "game.panel.shield_deadly_time.font",
@@ -2388,6 +2572,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.exit.y",
     &game.panel.exit.y
   },
+  {
+    "game.panel.exit.tile_size",
+    &game.panel.exit.size
+  },
   {
     "game.panel.em_exit.x",
     &game.panel.em_exit.x
@@ -2396,6 +2584,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.em_exit.y",
     &game.panel.em_exit.y
   },
+  {
+    "game.panel.em_exit.tile_size",
+    &game.panel.em_exit.size
+  },
   {
     "game.panel.sp_exit.x",
     &game.panel.sp_exit.x
@@ -2404,6 +2596,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.sp_exit.y",
     &game.panel.sp_exit.y
   },
+  {
+    "game.panel.sp_exit.tile_size",
+    &game.panel.sp_exit.size
+  },
   {
     "game.panel.steel_exit.x",
     &game.panel.steel_exit.x
@@ -2412,6 +2608,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.steel_exit.y",
     &game.panel.steel_exit.y
   },
+  {
+    "game.panel.steel_exit.tile_size",
+    &game.panel.steel_exit.size
+  },
   {
     "game.panel.em_steel_exit.x",
     &game.panel.em_steel_exit.x
@@ -2420,6 +2620,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.em_steel_exit.y",
     &game.panel.em_steel_exit.y
   },
+  {
+    "game.panel.em_steel_exit.tile_size",
+    &game.panel.em_steel_exit.size
+  },
   {
     "game.panel.emc_magic_ball.x",
     &game.panel.emc_magic_ball.x
@@ -2428,6 +2632,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.emc_magic_ball.y",
     &game.panel.emc_magic_ball.y
   },
+  {
+    "game.panel.emc_magic_ball.tile_size",
+    &game.panel.emc_magic_ball.size
+  },
   {
     "game.panel.emc_magic_ball_switch.x",
     &game.panel.emc_magic_ball_switch.x
@@ -2436,6 +2644,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.emc_magic_ball_switch.y",
     &game.panel.emc_magic_ball_switch.y
   },
+  {
+    "game.panel.emc_magic_ball_switch.tile_size",
+    &game.panel.emc_magic_ball_switch.size
+  },
   {
     "game.panel.light_switch.x",
     &game.panel.light_switch.x
@@ -2444,6 +2656,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.light_switch.y",
     &game.panel.light_switch.y
   },
+  {
+    "game.panel.light_switch.tile_size",
+    &game.panel.light_switch.size
+  },
   {
     "game.panel.light_switch_time.x",
     &game.panel.light_switch_time.x
@@ -2461,8 +2677,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.light_switch_time.valign
   },
   {
-    "game.panel.light_switch_time.chars",
-    &game.panel.light_switch_time.chars
+    "game.panel.light_switch_time.digits",
+    &game.panel.light_switch_time.size
   },
   {
     "game.panel.light_switch_time.font",
@@ -2476,6 +2692,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.timegate_switch.y",
     &game.panel.timegate_switch.y
   },
+  {
+    "game.panel.timegate_switch.tile_size",
+    &game.panel.timegate_switch.size
+  },
   {
     "game.panel.timegate_switch_time.x",
     &game.panel.timegate_switch_time.x
@@ -2493,8 +2713,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.timegate_switch_time.valign
   },
   {
-    "game.panel.timegate_switch_time.chars",
-    &game.panel.timegate_switch_time.chars
+    "game.panel.timegate_switch_time.digits",
+    &game.panel.timegate_switch_time.size
   },
   {
     "game.panel.timegate_switch_time.font",
@@ -2508,6 +2728,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.switchgate_switch.y",
     &game.panel.switchgate_switch.y
   },
+  {
+    "game.panel.switchgate_switch.tile_size",
+    &game.panel.switchgate_switch.size
+  },
   {
     "game.panel.emc_lenses.x",
     &game.panel.emc_lenses.x
@@ -2516,6 +2740,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.emc_lenses.y",
     &game.panel.emc_lenses.y
   },
+  {
+    "game.panel.emc_lenses.tile_size",
+    &game.panel.emc_lenses.size
+  },
   {
     "game.panel.emc_lenses_time.x",
     &game.panel.emc_lenses_time.x
@@ -2533,8 +2761,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.emc_lenses_time.valign
   },
   {
-    "game.panel.emc_lenses_time.chars",
-    &game.panel.emc_lenses_time.chars
+    "game.panel.emc_lenses_time.digits",
+    &game.panel.emc_lenses_time.size
   },
   {
     "game.panel.emc_lenses_time.font",
@@ -2548,6 +2776,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.emc_magnifier.y",
     &game.panel.emc_magnifier.y
   },
+  {
+    "game.panel.emc_magnifier.tile_size",
+    &game.panel.emc_magnifier.size
+  },
   {
     "game.panel.emc_magnifier_time.x",
     &game.panel.emc_magnifier_time.x
@@ -2565,8 +2797,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.emc_magnifier_time.valign
   },
   {
-    "game.panel.emc_magnifier_time.chars",
-    &game.panel.emc_magnifier_time.chars
+    "game.panel.emc_magnifier_time.digits",
+    &game.panel.emc_magnifier_time.size
   },
   {
     "game.panel.emc_magnifier_time.font",
@@ -2580,6 +2812,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.balloon_switch.y",
     &game.panel.balloon_switch.y
   },
+  {
+    "game.panel.balloon_switch.tile_size",
+    &game.panel.balloon_switch.size
+  },
   {
     "game.panel.dynabomb_number.x",
     &game.panel.dynabomb_number.x
@@ -2597,8 +2833,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.dynabomb_number.valign
   },
   {
-    "game.panel.dynabomb_number.chars",
-    &game.panel.dynabomb_number.chars
+    "game.panel.dynabomb_number.digits",
+    &game.panel.dynabomb_number.size
   },
   {
     "game.panel.dynabomb_number.font",
@@ -2621,8 +2857,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.dynabomb_size.valign
   },
   {
-    "game.panel.dynabomb_size.chars",
-    &game.panel.dynabomb_size.chars
+    "game.panel.dynabomb_size.digits",
+    &game.panel.dynabomb_size.size
   },
   {
     "game.panel.dynabomb_size.font",
@@ -2636,6 +2872,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.dynabomb_power.y",
     &game.panel.dynabomb_power.y
   },
+  {
+    "game.panel.dynabomb_power.tile_size",
+    &game.panel.dynabomb_power.size
+  },
   {
     "game.panel.penguins.x",
     &game.panel.penguins.x
@@ -2653,8 +2893,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.penguins.valign
   },
   {
-    "game.panel.penguins.chars",
-    &game.panel.penguins.chars
+    "game.panel.penguins.digits",
+    &game.panel.penguins.size
   },
   {
     "game.panel.penguins.font",
@@ -2677,8 +2917,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.sokoban_objects.valign
   },
   {
-    "game.panel.sokoban_objects.chars",
-    &game.panel.sokoban_objects.chars
+    "game.panel.sokoban_objects.digits",
+    &game.panel.sokoban_objects.size
   },
   {
     "game.panel.sokoban_objects.font",
@@ -2701,8 +2941,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.sokoban_fields.valign
   },
   {
-    "game.panel.sokoban_fields.chars",
-    &game.panel.sokoban_fields.chars
+    "game.panel.sokoban_fields.digits",
+    &game.panel.sokoban_fields.size
   },
   {
     "game.panel.sokoban_fields.font",
@@ -2716,6 +2956,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.robot_wheel.y",
     &game.panel.robot_wheel.y
   },
+  {
+    "game.panel.robot_wheel.tile_size",
+    &game.panel.robot_wheel.size
+  },
   {
     "game.panel.conveyor_belt_1.x",
     &game.panel.conveyor_belt_1.x
@@ -2724,6 +2968,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_1.y",
     &game.panel.conveyor_belt_1.y
   },
+  {
+    "game.panel.conveyor_belt_1.tile_size",
+    &game.panel.conveyor_belt_1.size
+  },
   {
     "game.panel.conveyor_belt_1_switch.x",
     &game.panel.conveyor_belt_1_switch.x
@@ -2732,6 +2980,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_1_switch.y",
     &game.panel.conveyor_belt_1_switch.y
   },
+  {
+    "game.panel.conveyor_belt_1_switch.tile_size",
+    &game.panel.conveyor_belt_1_switch.size
+  },
   {
     "game.panel.conveyor_belt_2.x",
     &game.panel.conveyor_belt_2.x
@@ -2740,6 +2992,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_2.y",
     &game.panel.conveyor_belt_2.y
   },
+  {
+    "game.panel.conveyor_belt_2.tile_size",
+    &game.panel.conveyor_belt_2.size
+  },
   {
     "game.panel.conveyor_belt_2_switch.x",
     &game.panel.conveyor_belt_2_switch.x
@@ -2748,6 +3004,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_2_switch.y",
     &game.panel.conveyor_belt_2_switch.y
   },
+  {
+    "game.panel.conveyor_belt_2_switch.tile_size",
+    &game.panel.conveyor_belt_2_switch.size
+  },
   {
     "game.panel.conveyor_belt_3.x",
     &game.panel.conveyor_belt_3.x
@@ -2756,6 +3016,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_3.y",
     &game.panel.conveyor_belt_3.y
   },
+  {
+    "game.panel.conveyor_belt_3.tile_size",
+    &game.panel.conveyor_belt_3.size
+  },
   {
     "game.panel.conveyor_belt_3_switch.x",
     &game.panel.conveyor_belt_3_switch.x
@@ -2764,6 +3028,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_3_switch.y",
     &game.panel.conveyor_belt_3_switch.y
   },
+  {
+    "game.panel.conveyor_belt_3_switch.tile_size",
+    &game.panel.conveyor_belt_3_switch.size
+  },
   {
     "game.panel.conveyor_belt_4.x",
     &game.panel.conveyor_belt_4.x
@@ -2772,6 +3040,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_4.y",
     &game.panel.conveyor_belt_4.y
   },
+  {
+    "game.panel.conveyor_belt_4.tile_size",
+    &game.panel.conveyor_belt_4.size
+  },
   {
     "game.panel.conveyor_belt_4_switch.x",
     &game.panel.conveyor_belt_4_switch.x
@@ -2780,6 +3052,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.conveyor_belt_4_switch.y",
     &game.panel.conveyor_belt_4_switch.y
   },
+  {
+    "game.panel.conveyor_belt_4_switch.tile_size",
+    &game.panel.conveyor_belt_4_switch.size
+  },
   {
     "game.panel.magic_wall.x",
     &game.panel.magic_wall.x
@@ -2788,6 +3064,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.magic_wall.y",
     &game.panel.magic_wall.y
   },
+  {
+    "game.panel.magic_wall.tile_size",
+    &game.panel.magic_wall.size
+  },
   {
     "game.panel.magic_wall_time.x",
     &game.panel.magic_wall_time.x
@@ -2805,8 +3085,8 @@ struct TokenIntPtrInfo image_config_vars[] =
     &game.panel.magic_wall_time.valign
   },
   {
-    "game.panel.magic_wall_time.chars",
-    &game.panel.magic_wall_time.chars
+    "game.panel.magic_wall_time.digits",
+    &game.panel.magic_wall_time.size
   },
   {
     "game.panel.magic_wall_time.font",
@@ -2820,6 +3100,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.bd_magic_wall.y",
     &game.panel.bd_magic_wall.y
   },
+  {
+    "game.panel.bd_magic_wall.tile_size",
+    &game.panel.bd_magic_wall.size
+  },
   {
     "game.panel.dc_magic_wall.x",
     &game.panel.dc_magic_wall.x
@@ -2828,6 +3112,10 @@ struct TokenIntPtrInfo image_config_vars[] =
     "game.panel.dc_magic_wall.y",
     &game.panel.dc_magic_wall.y
   },
+  {
+    "game.panel.dc_magic_wall.tile_size",
+    &game.panel.dc_magic_wall.size
+  },
   {
     "game.panel.player_name.x",
     &game.panel.player_name.x
@@ -2846,7 +3134,7 @@ struct TokenIntPtrInfo image_config_vars[] =
   },
   {
     "game.panel.player_name.chars",
-    &game.panel.player_name.chars
+    &game.panel.player_name.size
   },
   {
     "game.panel.player_name.font",
@@ -2870,7 +3158,7 @@ struct TokenIntPtrInfo image_config_vars[] =
   },
   {
     "game.panel.level_name.chars",
-    &game.panel.level_name.chars
+    &game.panel.level_name.size
   },
   {
     "game.panel.level_name.font",
@@ -2894,7 +3182,7 @@ struct TokenIntPtrInfo image_config_vars[] =
   },
   {
     "game.panel.level_author.chars",
-    &game.panel.level_author.chars
+    &game.panel.level_author.size
   },
   {
     "game.panel.level_author.font",
index 7337e53e017023a36650026b7786f4c23384aef1..16409a5d75c96cf5b943e631232532c393d3a297 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "2007-04-01 23:19"
+#define COMPILE_DATE_STRING "2007-04-03 01:38"
index 22008ecc5ee8c436284ef192ea0656a12245f1b2..9fb95c23bad7af9d5302e0e2acf891aea88d86df 100644 (file)
 
 #define GAME_CONTROL_LEVEL_NUMBER              0
 #define GAME_CONTROL_GEMS                      1
-#define GAME_CONTROL_INVENTORY                 2
-#define GAME_CONTROL_KEY_1                     3
-#define GAME_CONTROL_KEY_2                     4
-#define GAME_CONTROL_KEY_3                     5
-#define GAME_CONTROL_KEY_4                     6
-#define GAME_CONTROL_KEY_5                     7
-#define GAME_CONTROL_KEY_6                     8
-#define GAME_CONTROL_KEY_7                     9
-#define GAME_CONTROL_KEY_8                     10
-#define GAME_CONTROL_KEY_WHITE                 11
-#define GAME_CONTROL_KEY_WHITE_COUNT           12
-#define GAME_CONTROL_SCORE                     13
-#define GAME_CONTROL_TIME                      14
-#define GAME_CONTROL_TIME_HH                   15
-#define GAME_CONTROL_TIME_MM                   16
-#define GAME_CONTROL_TIME_SS                   17
-#define GAME_CONTROL_DROP_NEXT_1               18
-#define GAME_CONTROL_DROP_NEXT_2               19
-#define GAME_CONTROL_DROP_NEXT_3               20
-#define GAME_CONTROL_DROP_NEXT_4               21
-#define GAME_CONTROL_DROP_NEXT_5               22
-#define GAME_CONTROL_DROP_NEXT_6               23
-#define GAME_CONTROL_DROP_NEXT_7               24
-#define GAME_CONTROL_DROP_NEXT_8               25
-#define GAME_CONTROL_SHIELD_NORMAL             26
-#define GAME_CONTROL_SHIELD_NORMAL_TIME                27
-#define GAME_CONTROL_SHIELD_DEADLY             28
-#define GAME_CONTROL_SHIELD_DEADLY_TIME                29
-#define GAME_CONTROL_EXIT                      30
-#define GAME_CONTROL_EM_EXIT                   31
-#define GAME_CONTROL_SP_EXIT                   32
-#define GAME_CONTROL_STEEL_EXIT                        33
-#define GAME_CONTROL_EM_STEEL_EXIT             34
-#define GAME_CONTROL_EMC_MAGIC_BALL            35
-#define GAME_CONTROL_EMC_MAGIC_BALL_SWITCH     36
-#define GAME_CONTROL_LIGHT_SWITCH              37
-#define GAME_CONTROL_LIGHT_SWITCH_TIME         38
-#define GAME_CONTROL_TIMEGATE_SWITCH           39
-#define GAME_CONTROL_TIMEGATE_SWITCH_TIME      40
-#define GAME_CONTROL_SWITCHGATE_SWITCH         41
-#define GAME_CONTROL_EMC_LENSES                        42
-#define GAME_CONTROL_EMC_LENSES_TIME           43
-#define GAME_CONTROL_EMC_MAGNIFIER             44
-#define GAME_CONTROL_EMC_MAGNIFIER_TIME                45
-#define GAME_CONTROL_BALLOON_SWITCH            46
-#define GAME_CONTROL_DYNABOMB_NUMBER           47
-#define GAME_CONTROL_DYNABOMB_SIZE             48
-#define GAME_CONTROL_DYNABOMB_POWER            49
-#define GAME_CONTROL_PENGUINS                  50
-#define GAME_CONTROL_SOKOBAN_OBJECTS           51
-#define GAME_CONTROL_SOKOBAN_FIELDS            52
-#define GAME_CONTROL_ROBOT_WHEEL               53
-#define GAME_CONTROL_CONVEYOR_BELT_1           54
-#define GAME_CONTROL_CONVEYOR_BELT_1_SWITCH    55
-#define GAME_CONTROL_CONVEYOR_BELT_2           56
-#define GAME_CONTROL_CONVEYOR_BELT_2_SWITCH    57
-#define GAME_CONTROL_CONVEYOR_BELT_3           58
-#define GAME_CONTROL_CONVEYOR_BELT_3_SWITCH    59
-#define GAME_CONTROL_CONVEYOR_BELT_4           60
-#define GAME_CONTROL_CONVEYOR_BELT_4_SWITCH    61
-#define GAME_CONTROL_MAGIC_WALL                        62
-#define GAME_CONTROL_MAGIC_WALL_TIME           63
-#define GAME_CONTROL_BD_MAGIC_WALL             64
-#define GAME_CONTROL_DC_MAGIC_WALL             65
-#define GAME_CONTROL_PLAYER_NAME               66
-#define GAME_CONTROL_LEVEL_NAME                        67
-#define GAME_CONTROL_LEVEL_AUTHOR              68
-
-#define NUM_GAME_CONTROLS                      69
+#define GAME_CONTROL_INVENTORY_COUNT           2
+#define GAME_CONTROL_INVENTORY_FIRST_1         3
+#define GAME_CONTROL_INVENTORY_FIRST_2         4
+#define GAME_CONTROL_INVENTORY_FIRST_3         5
+#define GAME_CONTROL_INVENTORY_FIRST_4         6
+#define GAME_CONTROL_INVENTORY_FIRST_5         7
+#define GAME_CONTROL_INVENTORY_FIRST_6         8
+#define GAME_CONTROL_INVENTORY_FIRST_7         9
+#define GAME_CONTROL_INVENTORY_FIRST_8         10
+#define GAME_CONTROL_INVENTORY_LAST_1          11
+#define GAME_CONTROL_INVENTORY_LAST_2          12
+#define GAME_CONTROL_INVENTORY_LAST_3          13
+#define GAME_CONTROL_INVENTORY_LAST_4          14
+#define GAME_CONTROL_INVENTORY_LAST_5          15
+#define GAME_CONTROL_INVENTORY_LAST_6          16
+#define GAME_CONTROL_INVENTORY_LAST_7          17
+#define GAME_CONTROL_INVENTORY_LAST_8          18
+#define GAME_CONTROL_KEY_1                     19
+#define GAME_CONTROL_KEY_2                     20
+#define GAME_CONTROL_KEY_3                     21
+#define GAME_CONTROL_KEY_4                     22
+#define GAME_CONTROL_KEY_5                     23
+#define GAME_CONTROL_KEY_6                     24
+#define GAME_CONTROL_KEY_7                     25
+#define GAME_CONTROL_KEY_8                     26
+#define GAME_CONTROL_KEY_WHITE                 27
+#define GAME_CONTROL_KEY_WHITE_COUNT           28
+#define GAME_CONTROL_SCORE                     29
+#define GAME_CONTROL_TIME                      30
+#define GAME_CONTROL_TIME_HH                   31
+#define GAME_CONTROL_TIME_MM                   32
+#define GAME_CONTROL_TIME_SS                   33
+#define GAME_CONTROL_SHIELD_NORMAL             34
+#define GAME_CONTROL_SHIELD_NORMAL_TIME                35
+#define GAME_CONTROL_SHIELD_DEADLY             36
+#define GAME_CONTROL_SHIELD_DEADLY_TIME                37
+#define GAME_CONTROL_EXIT                      38
+#define GAME_CONTROL_EM_EXIT                   39
+#define GAME_CONTROL_SP_EXIT                   40
+#define GAME_CONTROL_STEEL_EXIT                        41
+#define GAME_CONTROL_EM_STEEL_EXIT             42
+#define GAME_CONTROL_EMC_MAGIC_BALL            43
+#define GAME_CONTROL_EMC_MAGIC_BALL_SWITCH     44
+#define GAME_CONTROL_LIGHT_SWITCH              45
+#define GAME_CONTROL_LIGHT_SWITCH_TIME         46
+#define GAME_CONTROL_TIMEGATE_SWITCH           47
+#define GAME_CONTROL_TIMEGATE_SWITCH_TIME      48
+#define GAME_CONTROL_SWITCHGATE_SWITCH         49
+#define GAME_CONTROL_EMC_LENSES                        50
+#define GAME_CONTROL_EMC_LENSES_TIME           51
+#define GAME_CONTROL_EMC_MAGNIFIER             52
+#define GAME_CONTROL_EMC_MAGNIFIER_TIME                53
+#define GAME_CONTROL_BALLOON_SWITCH            54
+#define GAME_CONTROL_DYNABOMB_NUMBER           55
+#define GAME_CONTROL_DYNABOMB_SIZE             56
+#define GAME_CONTROL_DYNABOMB_POWER            57
+#define GAME_CONTROL_PENGUINS                  58
+#define GAME_CONTROL_SOKOBAN_OBJECTS           59
+#define GAME_CONTROL_SOKOBAN_FIELDS            60
+#define GAME_CONTROL_ROBOT_WHEEL               61
+#define GAME_CONTROL_CONVEYOR_BELT_1           62
+#define GAME_CONTROL_CONVEYOR_BELT_1_SWITCH    63
+#define GAME_CONTROL_CONVEYOR_BELT_2           64
+#define GAME_CONTROL_CONVEYOR_BELT_2_SWITCH    65
+#define GAME_CONTROL_CONVEYOR_BELT_3           66
+#define GAME_CONTROL_CONVEYOR_BELT_3_SWITCH    67
+#define GAME_CONTROL_CONVEYOR_BELT_4           68
+#define GAME_CONTROL_CONVEYOR_BELT_4_SWITCH    69
+#define GAME_CONTROL_MAGIC_WALL                        70
+#define GAME_CONTROL_MAGIC_WALL_TIME           71
+#define GAME_CONTROL_BD_MAGIC_WALL             72
+#define GAME_CONTROL_DC_MAGIC_WALL             73
+#define GAME_CONTROL_PLAYER_NAME               74
+#define GAME_CONTROL_LEVEL_NAME                        75
+#define GAME_CONTROL_LEVEL_AUTHOR              76
+
+#define NUM_GAME_CONTROLS                      77
 
 int game_control_value[NUM_GAME_CONTROLS];
 int last_game_control_value[NUM_GAME_CONTROLS];
@@ -227,10 +235,90 @@ static struct GameControlInfo game_controls[] =
     TYPE_INTEGER,
   },
   {
-    GAME_CONTROL_INVENTORY,
-    &game.panel.inventory,
+    GAME_CONTROL_INVENTORY_COUNT,
+    &game.panel.inventory_count,
     TYPE_INTEGER,
   },
+  {
+    GAME_CONTROL_INVENTORY_FIRST_1,
+    &game.panel.inventory_first_1,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_FIRST_2,
+    &game.panel.inventory_first_2,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_FIRST_3,
+    &game.panel.inventory_first_3,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_FIRST_4,
+    &game.panel.inventory_first_4,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_FIRST_5,
+    &game.panel.inventory_first_5,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_FIRST_6,
+    &game.panel.inventory_first_6,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_FIRST_7,
+    &game.panel.inventory_first_7,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_FIRST_8,
+    &game.panel.inventory_first_8,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_LAST_1,
+    &game.panel.inventory_last_1,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_LAST_2,
+    &game.panel.inventory_last_2,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_LAST_3,
+    &game.panel.inventory_last_3,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_LAST_4,
+    &game.panel.inventory_last_4,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_LAST_5,
+    &game.panel.inventory_last_5,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_LAST_6,
+    &game.panel.inventory_last_6,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_LAST_7,
+    &game.panel.inventory_last_7,
+    TYPE_ELEMENT,
+  },
+  {
+    GAME_CONTROL_INVENTORY_LAST_8,
+    &game.panel.inventory_last_8,
+    TYPE_ELEMENT,
+  },
   {
     GAME_CONTROL_KEY_1,
     &game.panel.key[0],
@@ -306,46 +394,6 @@ static struct GameControlInfo game_controls[] =
     &game.panel.time_ss,
     TYPE_INTEGER,
   },
-  {
-    GAME_CONTROL_DROP_NEXT_1,
-    &game.panel.drop_next_1,
-    TYPE_ELEMENT,
-  },
-  {
-    GAME_CONTROL_DROP_NEXT_2,
-    &game.panel.drop_next_2,
-    TYPE_ELEMENT,
-  },
-  {
-    GAME_CONTROL_DROP_NEXT_3,
-    &game.panel.drop_next_3,
-    TYPE_ELEMENT,
-  },
-  {
-    GAME_CONTROL_DROP_NEXT_4,
-    &game.panel.drop_next_4,
-    TYPE_ELEMENT,
-  },
-  {
-    GAME_CONTROL_DROP_NEXT_5,
-    &game.panel.drop_next_5,
-    TYPE_ELEMENT,
-  },
-  {
-    GAME_CONTROL_DROP_NEXT_6,
-    &game.panel.drop_next_6,
-    TYPE_ELEMENT,
-  },
-  {
-    GAME_CONTROL_DROP_NEXT_7,
-    &game.panel.drop_next_7,
-    TYPE_ELEMENT,
-  },
-  {
-    GAME_CONTROL_DROP_NEXT_8,
-    &game.panel.drop_next_8,
-    TYPE_ELEMENT,
-  },
   {
     GAME_CONTROL_SHIELD_NORMAL,
     &game.panel.shield_normal,
@@ -1731,6 +1779,52 @@ static int get_key_element_from_nr(int key_nr)
   return key_base_element + key_nr;
 }
 
+static int get_next_drop_element(struct PlayerInfo *player)
+{
+  return (player->inventory_size > 0 ?
+         player->inventory_element[player->inventory_size - 1] :
+         player->inventory_infinite_element != EL_UNDEFINED ?
+         player->inventory_infinite_element :
+         player->dynabombs_left > 0 ?
+         EL_DYNABOMB_PLAYER_1_ACTIVE + player->index_nr :
+         EL_UNDEFINED);
+}
+
+static int get_drop_element_from_pos(struct PlayerInfo *player, int pos)
+{
+  /* pos >= 0: get element from bottom of the stack;
+     pos <  0: get element from top of the stack */
+
+  if (pos < 0)
+  {
+    int min_inventory_size = -pos;
+    int inventory_pos = player->inventory_size - min_inventory_size;
+    int min_dynabombs_left = min_inventory_size - player->inventory_size;
+
+    return (player->inventory_size >= min_inventory_size ?
+           player->inventory_element[inventory_pos] :
+           player->inventory_infinite_element != EL_UNDEFINED ?
+           player->inventory_infinite_element :
+           player->dynabombs_left >= min_dynabombs_left ?
+           EL_DYNABOMB_PLAYER_1_ACTIVE + player->index_nr :
+           EL_UNDEFINED);
+  }
+  else
+  {
+    int min_dynabombs_left = pos + 1;
+    int min_inventory_size = pos + 1 - player->dynabombs_left;
+    int inventory_pos = pos - player->dynabombs_left;
+
+    return (player->inventory_infinite_element != EL_UNDEFINED ?
+           player->inventory_infinite_element :
+           player->dynabombs_left >= min_dynabombs_left ?
+           EL_DYNABOMB_PLAYER_1_ACTIVE + player->index_nr :
+           player->inventory_size >= min_inventory_size ?
+           player->inventory_element[inventory_pos] :
+           EL_UNDEFINED);
+  }
+}
+
 void InitGameControlValues()
 {
   int i;
@@ -1746,20 +1840,29 @@ void InitGameControlValues()
 
     /* determine panel value width for later calculation of alignment */
     if (type == TYPE_INTEGER || type == TYPE_STRING)
-      pos->width = pos->chars * getFontWidth(pos->font);
+    {
+      pos->width = pos->size * getFontWidth(pos->font);
+      pos->height = getFontHeight(pos->font);
+    }
     else if (type == TYPE_ELEMENT)
-      pos->width = MINI_TILESIZE;
+    {
+      pos->width = pos->size;
+      pos->height = pos->size;
+    }
   }
 }
 
 void UpdateGameControlValues()
 {
   int i, k;
+  int time = (level.time == 0 ? TimePlayed : TimeLeft);
+  int score = (local_player->LevelSolved ? local_player->score_final :
+              local_player->score);
 
   game_control_value[GAME_CONTROL_LEVEL_NUMBER] = level_nr;
   game_control_value[GAME_CONTROL_GEMS] = local_player->gems_still_needed;
 
-  game_control_value[GAME_CONTROL_INVENTORY] = 0;
+  game_control_value[GAME_CONTROL_INVENTORY_COUNT] = 0;
   for (i = 0; i < MAX_NUM_KEYS; i++)
     game_control_value[GAME_CONTROL_KEY_1 + i] = EL_EMPTY;
   game_control_value[GAME_CONTROL_KEY_WHITE] = EL_EMPTY;
@@ -1774,7 +1877,7 @@ void UpdateGameControlValues()
          game_control_value[GAME_CONTROL_KEY_1 + k] =
            get_key_element_from_nr(k);
 
-      game_control_value[GAME_CONTROL_INVENTORY] +=
+      game_control_value[GAME_CONTROL_INVENTORY_COUNT] +=
        stored_player[i].inventory_size;
 
       if (stored_player[i].num_white_keys > 0)
@@ -1793,7 +1896,7 @@ void UpdateGameControlValues()
        game_control_value[GAME_CONTROL_KEY_1 + k] =
          get_key_element_from_nr(k);
 
-    game_control_value[GAME_CONTROL_INVENTORY] +=
+    game_control_value[GAME_CONTROL_INVENTORY_COUNT] +=
       stored_player[player_nr].inventory_size;
 
     if (stored_player[player_nr].num_white_keys > 0)
@@ -1803,21 +1906,21 @@ void UpdateGameControlValues()
       stored_player[player_nr].num_white_keys;
   }
 
-  game_control_value[GAME_CONTROL_SCORE] = (local_player->LevelSolved ?
-                                           local_player->score_final :
-                                           local_player->score);
+  for (i = 0; i < 8; i++)
+  {
+    game_control_value[GAME_CONTROL_INVENTORY_FIRST_1 + i] =
+      get_drop_element_from_pos(local_player, i);
+    game_control_value[GAME_CONTROL_INVENTORY_LAST_1 + i] =
+      get_drop_element_from_pos(local_player, -i - 1);
+  }
 
-  game_control_value[GAME_CONTROL_TIME] = (level.time == 0 ?
-                                          TimePlayed :
-                                          TimeLeft);
+  game_control_value[GAME_CONTROL_SCORE] = score;
 
-  game_control_value[GAME_CONTROL_TIME_HH] = TapeTime / 3600;
-  game_control_value[GAME_CONTROL_TIME_MM] = (TapeTime / 60) % 60;
-  game_control_value[GAME_CONTROL_TIME_SS] = TapeTime % 60;
+  game_control_value[GAME_CONTROL_TIME] = time;
 
-  /* !!! TODO !!! */
-  for (i = 0; i < 8; i++)
-    game_control_value[GAME_CONTROL_DROP_NEXT_1 + i] = EL_UNDEFINED;
+  game_control_value[GAME_CONTROL_TIME_HH] = time / 3600;
+  game_control_value[GAME_CONTROL_TIME_MM] = (time / 60) % 60;
+  game_control_value[GAME_CONTROL_TIME_SS] = time % 60;
 
   game_control_value[GAME_CONTROL_SHIELD_NORMAL] =
     (local_player->shield_normal_time_left > 0 ? EL_SHIELD_NORMAL_ACTIVE :
@@ -1931,7 +2034,7 @@ void DisplayGameControlValues()
     struct TextPosInfo *pos = game_controls[i].pos;
     int value = game_control_value[nr];
     int last_value = last_game_control_value[nr];
-    int chars = pos->chars;
+    int size = pos->size;
     int font = pos->font;
 
     if (value == last_value)
@@ -1950,24 +2053,24 @@ void DisplayGameControlValues()
     {
       if (nr == GAME_CONTROL_LEVEL_NUMBER || nr == GAME_CONTROL_TIME)
       {
-       boolean use_dynamic_chars = (pos->chars == -1 ? TRUE : FALSE);
+       boolean use_dynamic_size = (size == -1 ? TRUE : FALSE);
 
-       if (use_dynamic_chars)          /* use dynamic number of chars */
+       if (use_dynamic_size)           /* use dynamic number of digits */
        {
          int value_change = (nr == GAME_CONTROL_LEVEL_NUMBER ? 100 : 1000);
-         int chars1 = (nr == GAME_CONTROL_LEVEL_NUMBER ? 2 : 3);
-         int chars2 = chars1 + 1;
+         int size1 = (nr == GAME_CONTROL_LEVEL_NUMBER ? 2 : 3);
+         int size2 = size1 + 1;
          int font1 = pos->font;
          int font2 = pos->font_alt;
 
-         chars = (value < value_change ? chars1 : chars2);
-         font  = (value < value_change ? font1  : font2);
+         size = (value < value_change ? size1 : size2);
+         font = (value < value_change ? font1 : font2);
 
-         /* clear background if value just changed its size (dynamic chars) */
+         /* clear background if value just changed its size (dynamic digits) */
          if ((last_value < value_change) != (value < value_change))
          {
-           int width1 = chars1 * getFontWidth(font1);
-           int width2 = chars2 * getFontWidth(font2);
+           int width1 = size1 * getFontWidth(font1);
+           int width2 = size2 * getFontWidth(font2);
            int max_width = MAX(width1, width2);
            int max_height = MAX(getFontHeight(font1), getFontHeight(font2));
 
@@ -1978,10 +2081,10 @@ void DisplayGameControlValues()
          }
        }
 
-       pos->width = chars * getFontWidth(font);
+       pos->width = size * getFontWidth(font);
       }
 
-      DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, chars), font);
+      DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), int2str(value, size), font);
     }
     else if (type == TYPE_ELEMENT)
     {
@@ -1994,13 +2097,13 @@ void DisplayGameControlValues()
        int src_y = DOOR_GFX_PAGEY1 + ALIGNED_TEXT_YPOS(pos);
 
        BlitBitmap(graphic_info[IMG_GLOBAL_DOOR].bitmap, drawto, src_x, src_y,
-                  MINI_TILEX, MINI_TILEY, dst_x, dst_y);
+                  size, size, dst_x, dst_y);
       }
       else
       {
-       int graphic = el2edimg(value);
+       int graphic = el2doorimg(value);
 
-       DrawMiniGraphicExt(drawto, dst_x, dst_y, graphic);
+       DrawSizedGraphicExt(drawto, dst_x, dst_y, graphic, size);
       }
     }
     else if (type == TYPE_STRING)
@@ -2011,9 +2114,9 @@ void DisplayGameControlValues()
 
       if (s != NULL)
       {
-       char *s_cut = getStringCopyN(s, pos->chars);
+       char *s_cut = getStringCopyN(s, size);
 
-       DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), s_cut, pos->font);
+       DrawText(PANEL_XPOS(pos), PANEL_YPOS(pos), s_cut, font);
 
        free(s_cut);
       }
@@ -2032,7 +2135,7 @@ void DrawGameValue_Emeralds(int value)
   int font_nr = FONT_TEXT_2;
 #endif
   int font_width = getFontWidth(font_nr);
-  int chars = pos->chars;
+  int chars = pos->size;
 
 #if 1
   return;      /* !!! USE NEW STUFF !!! */
@@ -2048,14 +2151,14 @@ void DrawGameValue_Emeralds(int value)
 
 void DrawGameValue_Dynamite(int value)
 {
-  struct TextPosInfo *pos = &game.panel.inventory;
+  struct TextPosInfo *pos = &game.panel.inventory_count;
 #if 1
   int font_nr = pos->font;
 #else
   int font_nr = FONT_TEXT_2;
 #endif
   int font_width = getFontWidth(font_nr);
-  int chars = pos->chars;
+  int chars = pos->size;
 
 #if 1
   return;      /* !!! USE NEW STUFF !!! */
@@ -2078,7 +2181,7 @@ void DrawGameValue_Score(int value)
   int font_nr = FONT_TEXT_2;
 #endif
   int font_width = getFontWidth(font_nr);
-  int chars = pos->chars;
+  int chars = pos->size;
 
 #if 1
   return;      /* !!! USE NEW STUFF !!! */
@@ -2098,7 +2201,7 @@ void DrawGameValue_Time(int value)
   static int last_value = -1;
   int chars1 = 3;
   int chars2 = 4;
-  int chars = pos->chars;
+  int chars = pos->size;
 #if 1
   int font1_nr = pos->font;
   int font2_nr = pos->font_alt;
@@ -2148,7 +2251,7 @@ void DrawGameValue_Level(int value)
   struct TextPosInfo *pos = &game.panel.level_number;
   int chars1 = 2;
   int chars2 = 3;
-  int chars = pos->chars;
+  int chars = pos->size;
 #if 1
   int font1_nr = pos->font;
   int font2_nr = pos->font_alt;
@@ -2296,7 +2399,7 @@ void DrawGameValue_Dynamite(int value)
   int font_nr = FONT_TEXT_2;
   int xpos = (3 * 14 - 3 * getFontWidth(font_nr)) / 2;
 
-  if (PANEL_DEACTIVATED(game.panel.inventory))
+  if (PANEL_DEACTIVATED(game.panel.inventory_count))
     return;
 
   DrawText(DX_DYNAMITE + xpos, DY_DYNAMITE, int2str(value, 3), font_nr);
@@ -14045,6 +14148,9 @@ boolean DropElement(struct PlayerInfo *player)
   int dropx = player->jx, dropy = player->jy;
   int drop_direction = player->MovDir;
   int drop_side = drop_direction;
+#if 1
+  int drop_element = get_next_drop_element(player);
+#else
   int drop_element = (player->inventory_size > 0 ?
                      player->inventory_element[player->inventory_size - 1] :
                      player->inventory_infinite_element != EL_UNDEFINED ?
@@ -14052,6 +14158,7 @@ boolean DropElement(struct PlayerInfo *player)
                      player->dynabombs_left > 0 ?
                      EL_DYNABOMB_PLAYER_1_ACTIVE + player->index_nr :
                      EL_UNDEFINED);
+#endif
 
   player->is_dropping_pressed = TRUE;
 
index d02c5cedc1a52d51fef6a8f6498be71eabb11f05..98bdda1df6f56ea4d96bf515b708e02a59497f69 100644 (file)
@@ -27,7 +27,23 @@ struct GamePanelInfo
 {
   struct TextPosInfo level_number;
   struct TextPosInfo gems;
-  struct TextPosInfo inventory;
+  struct TextPosInfo inventory_count;
+  struct TextPosInfo inventory_first_1;
+  struct TextPosInfo inventory_first_2;
+  struct TextPosInfo inventory_first_3;
+  struct TextPosInfo inventory_first_4;
+  struct TextPosInfo inventory_first_5;
+  struct TextPosInfo inventory_first_6;
+  struct TextPosInfo inventory_first_7;
+  struct TextPosInfo inventory_first_8;
+  struct TextPosInfo inventory_last_1;
+  struct TextPosInfo inventory_last_2;
+  struct TextPosInfo inventory_last_3;
+  struct TextPosInfo inventory_last_4;
+  struct TextPosInfo inventory_last_5;
+  struct TextPosInfo inventory_last_6;
+  struct TextPosInfo inventory_last_7;
+  struct TextPosInfo inventory_last_8;
   struct TextPosInfo key[MAX_NUM_KEYS];
   struct TextPosInfo key_white;
   struct TextPosInfo key_white_count;
@@ -36,14 +52,6 @@ struct GamePanelInfo
   struct TextPosInfo time_hh;
   struct TextPosInfo time_mm;
   struct TextPosInfo time_ss;
-  struct TextPosInfo drop_next_1;
-  struct TextPosInfo drop_next_2;
-  struct TextPosInfo drop_next_3;
-  struct TextPosInfo drop_next_4;
-  struct TextPosInfo drop_next_5;
-  struct TextPosInfo drop_next_6;
-  struct TextPosInfo drop_next_7;
-  struct TextPosInfo drop_next_8;
   struct TextPosInfo shield_normal;
   struct TextPosInfo shield_normal_time;
   struct TextPosInfo shield_deadly;
index 8de710719aabd8b454a36c222150ee8a1013e88e..c0e5d776a10fdfec799160a73a29ae0735107276 100644 (file)
@@ -1050,7 +1050,7 @@ struct TextPosInfo
   int x, y;
   int width, height;
   int align, valign;
-  int chars;
+  int size;
   int font, font_alt;
 };
 
index 2577e79a81639b6aafae989beb4e715c62d4a44b..fb1fa83758138b38493d9fce5a54aacf2cbd98d8 100644 (file)
@@ -758,9 +758,13 @@ static void InitializeMainControls()
 
   /* set main control text values to dynamically determined values */
   sprintf(main_text_name,         "%s",   local_team_mode ? "Team:" : "Name:");
-  sprintf(main_text_first_level,  "%03d", leveldir_current->first_level);
-  sprintf(main_text_last_level,   "%03d", leveldir_current->last_level);
-  sprintf(main_text_level_number, "%s",   int2str(level_nr, 3));
+
+  strcpy(main_text_first_level,  int2str(leveldir_current->first_level,
+                                        menu.main.text.first_level.size));
+  strcpy(main_text_last_level,   int2str(leveldir_current->last_level,
+                                        menu.main.text.last_level.size));
+  strcpy(main_text_level_number, int2str(level_nr,
+                                        menu.main.text.level_number.size));
 
   main_text_level_year         = leveldir_current->year;
   main_text_level_imported_from        = leveldir_current->imported_from;
@@ -1887,7 +1891,8 @@ void HandleMainMenu_SelectLevel(int step, int direction)
 
 #if 1
     DrawText(mSX + mci->pos_text->x, mSY + mci->pos_text->y,
-            int2str(level_nr, 3), mci->pos_text->font);
+            int2str(level_nr, menu.main.text.level_number.size),
+            mci->pos_text->font);
 #else
     DrawText(mSX + 11 * 32, mSY + 3 * 32, int2str(level_nr, 3), FONT_VALUE_1);
 #endif
index 3dfdfa922cc9ff4bbe3e53135011600a232c7056..074b232b5c2251f5e7ad52ed4fa19f996b6cd932 100644 (file)
@@ -912,6 +912,55 @@ inline int getGraphicAnimationFrame(int graphic, int sync_frame)
                           sync_frame);
 }
 
+void getSizedGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y,
+                          int tilesize_raw)
+{
+  struct
+  {
+    int width_mult, width_div;
+    int height_mult, height_div;
+  }
+  offset_calc[6] =
+  {
+    { 15, 16,  2, 3    },      /* 1 x 1 */
+    { 7, 8,    2, 3    },      /* 2 x 2 */
+    { 3, 4,    2, 3    },      /* 4 x 4 */
+    { 1, 2,    2, 3    },      /* 8 x 8 */
+    { 0, 1,    2, 3    },      /* 16 x 16 */
+    { 0, 1,    0, 1    },      /* 32 x 32 */
+  };
+  int tilesize = MIN(MAX(1, tilesize_raw), TILESIZE);
+  int offset_calc_pos = log_2(tilesize);
+  Bitmap *src_bitmap = graphic_info[graphic].bitmap;
+  int width_mult  = offset_calc[offset_calc_pos].width_mult;
+  int width_div   = offset_calc[offset_calc_pos].width_div;
+  int height_mult = offset_calc[offset_calc_pos].height_mult;
+  int height_div  = offset_calc[offset_calc_pos].height_div;
+  int startx = src_bitmap->width * width_mult / width_div;
+  int starty = src_bitmap->height * height_mult / height_div;
+  int src_x = startx + graphic_info[graphic].src_x * tilesize / TILESIZE;
+  int src_y = starty + graphic_info[graphic].src_y * tilesize / TILESIZE;
+
+  *bitmap = src_bitmap;
+  *x = src_x;
+  *y = src_y;
+}
+
+void getMiniGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y)
+{
+#if 1
+  getSizedGraphicSource(graphic, bitmap, x, y, MINI_TILESIZE);
+#else
+  struct GraphicInfo *g = &graphic_info[graphic];
+  int mini_startx = 0;
+  int mini_starty = g->bitmap->height * 2 / 3;
+
+  *bitmap = g->bitmap;
+  *x = mini_startx + g->src_x / 2;
+  *y = mini_starty + g->src_y / 2;
+#endif
+}
+
 inline void getGraphicSourceExt(int graphic, int frame, Bitmap **bitmap,
                                int *x, int *y, boolean get_backside)
 {
@@ -1003,21 +1052,26 @@ void DrawGraphicThruMaskExt(DrawBuffer *d, int dst_x, int dst_y, int graphic,
   BlitBitmapMasked(src_bitmap, d, src_x, src_y, TILEX, TILEY, dst_x, dst_y);
 }
 
-void DrawMiniGraphic(int x, int y, int graphic)
+void DrawSizedGraphic(int x, int y, int graphic, int tilesize)
 {
-  DrawMiniGraphicExt(drawto, SX + x * MINI_TILEX,SY + y * MINI_TILEY, graphic);
-  MarkTileDirty(x / 2, y / 2);
+  DrawSizedGraphicExt(drawto, SX + x * tilesize, SY + y * tilesize, graphic,
+                     tilesize);
+  MarkTileDirty(x / tilesize, y / tilesize);
 }
 
-void getMiniGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y)
+void DrawSizedGraphicExt(DrawBuffer *d, int x, int y, int graphic, int tilesize)
 {
-  struct GraphicInfo *g = &graphic_info[graphic];
-  int mini_startx = 0;
-  int mini_starty = g->bitmap->height * 2 / 3;
+  Bitmap *src_bitmap;
+  int src_x, src_y;
 
-  *bitmap = g->bitmap;
-  *x = mini_startx + g->src_x / 2;
-  *y = mini_starty + g->src_y / 2;
+  getSizedGraphicSource(graphic, &src_bitmap, &src_x, &src_y, tilesize);
+  BlitBitmap(src_bitmap, d, src_x, src_y, tilesize, tilesize, x, y);
+}
+
+void DrawMiniGraphic(int x, int y, int graphic)
+{
+  DrawMiniGraphicExt(drawto, SX + x * MINI_TILEX,SY + y * MINI_TILEY, graphic);
+  MarkTileDirty(x / 2, y / 2);
 }
 
 void DrawMiniGraphicExt(DrawBuffer *d, int x, int y, int graphic)
@@ -1826,58 +1880,13 @@ void ShowEnvelope(int envelope_nr)
   BackToFront();
 }
 
-void getPreviewGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y,
-                            int tilesize)
-{
-  struct
-  {
-    int width_mult, width_div;
-    int height_mult, height_div;
-#if 1
-  }
-  offset_calc[6] =
-#else
-  offset_calc[4] =
-#endif
-  {
-    { 0, 1,    0, 1    },
-    { 0, 1,    2, 3    },
-    { 1, 2,    2, 3    },
-    { 3, 4,    2, 3    },
-#if 1
-    { 7, 8,    2, 3    },
-    { 15, 16,  2, 3    },
-#endif
-  };
-#if 1
-  int offset_calc_pos = (tilesize < MICRO_TILESIZE / 4 ||
-                        tilesize > TILESIZE ? 5 : 5 - log_2(tilesize));
-#else
-  int offset_calc_pos = (tilesize < MICRO_TILESIZE || tilesize > TILESIZE ? 3 :
-                        5 - log_2(tilesize));
-#endif
-  Bitmap *src_bitmap = graphic_info[graphic].bitmap;
-  int width_mult = offset_calc[offset_calc_pos].width_mult;
-  int width_div = offset_calc[offset_calc_pos].width_div;
-  int height_mult = offset_calc[offset_calc_pos].height_mult;
-  int height_div = offset_calc[offset_calc_pos].height_div;
-  int mini_startx = src_bitmap->width * width_mult / width_div;
-  int mini_starty = src_bitmap->height * height_mult / height_div;
-  int src_x = mini_startx + graphic_info[graphic].src_x * tilesize / TILESIZE;
-  int src_y = mini_starty + graphic_info[graphic].src_y * tilesize / TILESIZE;
-
-  *bitmap = src_bitmap;
-  *x = src_x;
-  *y = src_y;
-}
-
 void DrawPreviewElement(int dst_x, int dst_y, int element, int tilesize)
 {
   Bitmap *src_bitmap;
   int src_x, src_y;
   int graphic = el2preimg(element);
 
-  getPreviewGraphicSource(graphic, &src_bitmap, &src_x, &src_y, tilesize);
+  getSizedGraphicSource(graphic, &src_bitmap, &src_x, &src_y, tilesize);
   BlitBitmap(src_bitmap, drawto, src_x, src_y, tilesize, tilesize, dst_x,dst_y);
 }
 
@@ -1996,8 +2005,8 @@ static void DrawPreviewLevelLabelExt(int mode)
 #endif
 
 #if 1
-  if (pos->chars != -1)
-    max_len_label_text = pos->chars;
+  if (pos->size != -1)
+    max_len_label_text = pos->size;
 #endif
 
   for (i = 0; i < max_len_label_text; i++)
@@ -2106,8 +2115,8 @@ void DrawPreviewLevel(boolean restart)
 #endif
 
 #if 1
-      if (pos->chars != -1)
-       max_len_label_text = pos->chars;
+      if (pos->size != -1)
+       max_len_label_text = pos->size;
 #endif
 
       strncpy(label_text, leveldir_current->name, max_len_label_text);
@@ -5746,6 +5755,13 @@ int el2preimg(int element)
   return element_info[element].special_graphic[GFX_SPECIAL_ARG_PREVIEW];
 }
 
+int el2doorimg(int element)
+{
+  element = GFX_ELEMENT(element);
+
+  return element_info[element].special_graphic[GFX_SPECIAL_ARG_DOOR];
+}
+
 int font2baseimg(int font_nr)
 {
   return font_info[font_nr].special_graphic[GFX_SPECIAL_ARG_DEFAULT];
index 2e0762cc2c89ab4ec3a8852a5789cf56d7d63257..80f76114b4ed560f7de9164950e168f6b18cd060 100644 (file)
@@ -117,6 +117,8 @@ void DrawAllPlayers(void);
 void DrawPlayerField(int, int);
 void DrawPlayer(struct PlayerInfo *);
 
+void getSizedGraphicSource(int, Bitmap **, int *, int *, int);
+void getMiniGraphicSource(int, Bitmap **, int *, int *);
 void getGraphicSourceExt(int, int, Bitmap **, int *, int *, boolean);
 void getGraphicSource(int, int, Bitmap **, int *, int *);
 void DrawGraphic(int, int, int, int);
@@ -124,8 +126,9 @@ void DrawGraphicExt(DrawBuffer *, int, int, int, int);
 void DrawGraphicThruMask(int, int, int, int);
 void DrawGraphicThruMaskExt(DrawBuffer *, int, int, int, int);
 
+void DrawSizedGraphic(int, int, int, int);
+void DrawSizedGraphicExt(DrawBuffer *, int, int, int, int);
 void DrawMiniGraphic(int, int, int);
-void getMiniGraphicSource(int, Bitmap **, int *, int *);
 void DrawMiniGraphicExt(DrawBuffer *, int, int, int);
 
 void DrawScreenElementExt(int, int, int, int, int, int, int);
@@ -182,6 +185,7 @@ int el2baseimg(int);
 int el2img(int);
 int el2edimg(int);
 int el2preimg(int);
+int el2doorimg(int);
 int font2baseimg(int);
 
 int getBeltNrFromBeltElement(int);