fixed some level editor element descriptions
[rocksndiamonds.git] / src / screens.c
index 8c8119d6c7004edc373e086b348255877d5c6e03..098939eb62383223979920ef043e15be49c30d07 100644 (file)
 #define MENU_INFO_FONT_TEXT            FONT_TEXT_3
 #define MENU_INFO_FONT_FOOT            FONT_TEXT_4
 #define MENU_INFO_SPACE_HEAD           (menu.headline2_spacing_info[info_mode])
-#define MENU_SCREEN_INFO_XSTART                16
-#define MENU_SCREEN_INFO_YSTART1       100
+#define MENU_SCREEN_INFO_SPACE_LEFT    (menu.left_spacing_info[info_mode])
+#define MENU_SCREEN_INFO_SPACE_RIGHT   (menu.right_spacing_info[info_mode])
+#define MENU_SCREEN_INFO_SPACE_TOP     (menu.top_spacing_info[info_mode])
+#define MENU_SCREEN_INFO_SPACE_BOTTOM  (menu.bottom_spacing_info[info_mode])
+#define MENU_SCREEN_INFO_YSTART1       MENU_SCREEN_INFO_SPACE_TOP
 #define MENU_SCREEN_INFO_YSTART2       (MENU_SCREEN_INFO_YSTART1 +            \
                                         getMenuTextStep(MENU_INFO_SPACE_HEAD, \
                                                         MENU_INFO_FONT_TITLE))
 #define MENU_SCREEN_INFO_YSTEP         (TILEY + 4)
-#define MENU_SCREEN_INFO_YBOTTOM       (SYSIZE - 20)
+#define MENU_SCREEN_INFO_YBOTTOM       (SYSIZE - MENU_SCREEN_INFO_SPACE_BOTTOM)
 #define MENU_SCREEN_INFO_YSIZE         (MENU_SCREEN_INFO_YBOTTOM -     \
                                         MENU_SCREEN_INFO_YSTART2 -     \
                                         TILEY / 2)
@@ -303,7 +306,7 @@ static struct
   char *text;
 } scaling_types_list[] =
 {
-  {    SCALING_QUALITY_NEAREST, "None"         },
+  {    SCALING_QUALITY_NEAREST, "Off"          },
   {    SCALING_QUALITY_LINEAR,  "Linear"       },
   {    SCALING_QUALITY_BEST,    "Anisotropic"  },
 
@@ -421,6 +424,7 @@ static struct
   char *text;
 } touch_controls_list[] =
 {
+  {    TOUCH_CONTROL_OFF,              "Off"                   },
   {    TOUCH_CONTROL_VIRTUAL_BUTTONS,  "Virtual Buttons"       },
   {    TOUCH_CONTROL_WIPE_GESTURES,    "Wipe Gestures"         },
   {    TOUCH_CONTROL_FOLLOW_FINGER,    "Follow Finger"         },
@@ -999,8 +1003,6 @@ static boolean visibleTextPos(struct TextPosInfo *pos)
 
 static void InitializeMainControls()
 {
-  TreeInfo *graphics_current =
-    getArtworkTreeInfoForUserLevelSet(ARTWORK_TYPE_GRAPHICS);
   boolean local_team_mode = (!options.network && setup.team_mode);
   int i;
 
@@ -1019,21 +1021,9 @@ static void InitializeMainControls()
   main_text_level_imported_by  = leveldir_current->imported_by;
   main_text_level_tested_by    = leveldir_current->tested_by;
 
-  main_text_title_1 = (leveldir_current->program_title ?
-                      leveldir_current->program_title :
-                      graphics_current->program_title ?
-                      graphics_current->program_title :
-                      setup.internal.program_title);
-  main_text_title_2 = (leveldir_current->program_copyright ?
-                      leveldir_current->program_copyright :
-                      graphics_current->program_copyright ?
-                      graphics_current->program_copyright :
-                      setup.internal.program_copyright);
-  main_text_title_3 = (leveldir_current->program_company ?
-                      leveldir_current->program_company :
-                      graphics_current->program_company ?
-                      graphics_current->program_company :
-                      setup.internal.program_company);
+  main_text_title_1 = getConfigProgramTitleString();
+  main_text_title_2 = getConfigProgramCopyrightString();
+  main_text_title_3 = getConfigProgramCompanyString();
 
   /* set main control screen positions to dynamically determined values */
   for (i = 0; main_controls[i].nr != -1; i++)
@@ -1343,9 +1333,8 @@ static void drawChooseTreeCursor(int ypos, boolean active)
 
 void DrawHeadline()
 {
-  DrawTextSCentered(MENU_TITLE1_YPOS, FONT_TITLE_1, getProgramTitleString());
-  DrawTextSCentered(MENU_TITLE2_YPOS, FONT_TITLE_2,
-                   setup.internal.program_copyright);
+  DrawTextSCentered(MENU_TITLE1_YPOS, FONT_TITLE_1, main_text_title_1);
+  DrawTextSCentered(MENU_TITLE2_YPOS, FONT_TITLE_2, main_text_title_2);
 }
 
 void DrawTitleScreenImage(int nr, boolean initial)
@@ -2614,9 +2603,9 @@ void DrawInfoScreen_NotAvailable(char *text_title, char *text_error)
   int font_foot  = MENU_INFO_FONT_FOOT;
   int spacing_title = menu.headline1_spacing_info[info_mode];
   int ystep_title = getMenuTextStep(spacing_title, font_title);
-  int ystart1 = mSY - SY + 100;
+  int ystart1 = mSY - SY + MENU_SCREEN_INFO_YSTART1;
   int ystart2 = ystart1 + ystep_title;
-  int ybottom = mSY - SY + SYSIZE - 20;
+  int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
 
   SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO);
 
@@ -2640,7 +2629,7 @@ void DrawInfoScreen_HelpAnim(int start, int max_anims, boolean init)
   static int infoscreen_frame[MAX_INFO_ELEMENTS_ON_SCREEN];
   int font_title = MENU_INFO_FONT_TITLE;
   int font_foot  = MENU_INFO_FONT_FOOT;
-  int xstart = mSX + MENU_SCREEN_INFO_XSTART;
+  int xstart  = mSX + MENU_SCREEN_INFO_SPACE_LEFT;
   int ystart1 = mSY - SY + MENU_SCREEN_INFO_YSTART1;
   int ystart2 = mSY + MENU_SCREEN_INFO_YSTART2;
   int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
@@ -2770,11 +2759,12 @@ void DrawInfoScreen_HelpText(int element, int action, int direction, int ypos)
   int font_width = getFontWidth(font_nr);
   int font_height = getFontHeight(font_nr);
   int yoffset = (TILEX - 2 * font_height) / 2;
-  int xstart = mSX + MINI_TILEX + TILEX + MINI_TILEX;
+  int xstart = mSX + MENU_SCREEN_INFO_SPACE_LEFT + TILEX + MINI_TILEX;
   int ystart = mSY + MENU_SCREEN_INFO_YSTART2 + yoffset;
   int ystep = TILEY + 4;
-  int pad_x = xstart - SX;
-  int max_chars_per_line = (SXSIZE - pad_x - MINI_TILEX) / font_width;
+  int pad_left = xstart - SX;
+  int pad_right = MENU_SCREEN_INFO_SPACE_RIGHT;
+  int max_chars_per_line = (SXSIZE - pad_left - pad_right) / font_width;
   int max_lines_per_text = 2;    
   char *text = NULL;
 
@@ -2933,8 +2923,8 @@ void HandleInfoScreen_Music(int button)
   int spacing_head  = menu.headline2_spacing_info[info_mode];
   int ystep_title = getMenuTextStep(spacing_title, font_title);
   int ystep_head  = getMenuTextStep(spacing_head,  font_head);
-  int ystart = mSY - SY + 100;
-  int ybottom = mSY - SY + SYSIZE - 20;
+  int ystart  = mSY - SY + MENU_SCREEN_INFO_YSTART1;
+  int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
 
   if (button == MB_MENU_INITIALIZE)
   {
@@ -3095,8 +3085,8 @@ static void DrawInfoScreen_CreditsScreen(int screen_nr)
   int ystep_head  = getMenuTextStep(spacing_head,  font_head);
   int ystep_para  = getMenuTextStep(spacing_para,  font_text);
   int ystep_line  = getMenuTextStep(spacing_line,  font_text);
-  int ystart = mSY - SY + 100;
-  int ybottom = mSY - SY + SYSIZE - 20;
+  int ystart  = mSY - SY + MENU_SCREEN_INFO_YSTART1;
+  int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
 
   ClearField();
   DrawHeadline();
@@ -3396,8 +3386,8 @@ void DrawInfoScreen_Program()
   int ystep_head  = getMenuTextStep(spacing_head,  font_head);
   int ystep_para  = getMenuTextStep(spacing_para,  font_text);
   int ystep_line  = getMenuTextStep(spacing_line,  font_text);
-  int ystart = mSY - SY + 100;
-  int ybottom = mSY - SY + SYSIZE - 20;
+  int ystart  = mSY - SY + MENU_SCREEN_INFO_YSTART1;
+  int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
 
   SetMainBackgroundImageIfDefined(IMG_BACKGROUND_INFO_PROGRAM);
 
@@ -3482,8 +3472,8 @@ void DrawInfoScreen_Version()
   int ystep_head  = getMenuTextStep(spacing_head,  font_head);
   int ystep_para  = getMenuTextStep(spacing_para,  font_text);
   int ystep_line  = getMenuTextStep(spacing_line,  font_text);
-  int ystart  = mSY - SY + 100;
-  int ybottom = mSY - SY + SYSIZE - 20;
+  int ystart  = mSY - SY + MENU_SCREEN_INFO_YSTART1;
+  int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
   int xstart1 = mSX - SX + 2 * xstep;
   int xstart2 = mSX - SX + 18 * xstep;
   int xstart3 = mSX - SX + 28 * xstep;
@@ -3669,8 +3659,8 @@ void DrawInfoScreen_LevelSet()
   struct TitleMessageInfo *tmi = &readme;
   char *filename = getLevelSetInfoFilename();
   char *title = "Level Set Information:";
-  int ystart = mSY - SY + 100;
-  int ybottom = mSY - SY + SYSIZE - 20;
+  int ystart  = mSY - SY + MENU_SCREEN_INFO_YSTART1;
+  int ybottom = mSY - SY + MENU_SCREEN_INFO_YBOTTOM;
 
   if (filename == NULL)
   {
@@ -3702,7 +3692,7 @@ void DrawInfoScreen_LevelSet()
 
   /* if height set to "-1", automatically determine by playfield height */
   if (tmi->height == -1)
-    tmi->height = SYSIZE - 20 - tmi->y - 10;
+    tmi->height = MENU_SCREEN_INFO_YBOTTOM - tmi->y - 10;
 
   /* if chars set to "-1", automatically determine by text and font width */
   if (tmi->chars == -1)
@@ -7105,6 +7095,9 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button)
 
 void HandleGameActions()
 {
+  if (game.restart_game_message != NULL)
+    RequestRestartGame(game.restart_game_message);
+
   if (game_status != GAME_MODE_PLAYING)
     return;