added support for main menu titles in level and graphics config file
[rocksndiamonds.git] / src / screens.c
index 58a2ecba14946dcfb4b470592fb5177e42dfbd67..8c8119d6c7004edc373e086b348255877d5c6e03 100644 (file)
@@ -581,6 +581,9 @@ static char *main_text_level_year           = NULL;
 static char *main_text_level_imported_from     = NULL;
 static char *main_text_level_imported_by       = NULL;
 static char *main_text_level_tested_by         = NULL;
+static char *main_text_title_1                 = NULL;
+static char *main_text_title_2                 = NULL;
+static char *main_text_title_3                 = NULL;
 
 struct MainControlInfo
 {
@@ -730,19 +733,19 @@ static struct MainControlInfo main_controls[] =
   {
     MAIN_CONTROL_TITLE_1,
     NULL,                              -1,
-    &menu.main.text.title_1,           &setup.internal.program_title,
+    &menu.main.text.title_1,           &main_text_title_1,
     NULL,                              NULL,
   },
   {
     MAIN_CONTROL_TITLE_2,
     NULL,                              -1,
-    &menu.main.text.title_2,           &setup.internal.program_copyright,
+    &menu.main.text.title_2,           &main_text_title_2,
     NULL,                              NULL,
   },
   {
     MAIN_CONTROL_TITLE_3,
     NULL,                              -1,
-    &menu.main.text.title_3,           &setup.internal.program_company,
+    &menu.main.text.title_3,           &main_text_title_3,
     NULL,                              NULL,
   },
 
@@ -996,6 +999,8 @@ 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;
 
@@ -1014,6 +1019,22 @@ 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);
+
   /* set main control screen positions to dynamically determined values */
   for (i = 0; main_controls[i].nr != -1; i++)
   {