rnd-20030312-1-src
[rocksndiamonds.git] / src / files.c
index a0e203572a7b13ad69de974a15fbe51f6e0c96f5..2f031820dcfc2d60c458b2676ddd6c0e05b6a08d 100644 (file)
@@ -90,7 +90,7 @@ static void setLevelInfoToDefaults()
        level.yam_content[i][x][y] =
          (i < STD_ELEMENT_CONTENTS ? EL_ROCK : EL_EMPTY);
 
-  Feld[0][0] = Ur[0][0] = EL_PLAYER1;
+  Feld[0][0] = Ur[0][0] = EL_PLAYER_1;
   Feld[STD_LEV_FIELDX-1][STD_LEV_FIELDY-1] =
     Ur[STD_LEV_FIELDX-1][STD_LEV_FIELDY-1] = EL_EXIT_CLOSED;
 
@@ -143,9 +143,9 @@ static int checkLevelElement(int element)
     element = EL_CHAR_QUESTION;
   }
   else if (element == EL_PLAYER_OBSOLETE)
-    element = EL_PLAYER1;
+    element = EL_PLAYER_1;
   else if (element == EL_KEY_OBSOLETE)
-    element = EL_KEY1;
+    element = EL_KEY_1;
 
   return element;
 }
@@ -1379,14 +1379,27 @@ void SaveScore(int level_nr)
 
 #define NUM_PLAYER_SETUP_TOKENS                        16
 
+/* system setup */
+#define SETUP_TOKEN_SYSTEM_SDL_AUDIODRIVER     0
+#define SETUP_TOKEN_SYSTEM_AUDIO_FRAGMENT_SIZE 1
+
+#define NUM_SYSTEM_SETUP_TOKENS                        2
+
+/* options setup */
+#define SETUP_TOKEN_OPTIONS_VERBOSE            0
+
+#define NUM_OPTIONS_SETUP_TOKENS               1
+
+
 static struct SetupInfo si;
 static struct SetupEditorInfo sei;
 static struct SetupShortcutInfo ssi;
 static struct SetupInputInfo sii;
+static struct SetupSystemInfo syi;
+static struct OptionInfo soi;
 
 static struct TokenInfo global_setup_tokens[] =
 {
-  /* global setup */
   { TYPE_STRING, &si.player_name,      "player_name"                   },
   { TYPE_SWITCH, &si.sound,            "sound"                         },
   { TYPE_SWITCH, &si.sound_loops,      "repeating_sound_loops"         },
@@ -1413,7 +1426,6 @@ static struct TokenInfo global_setup_tokens[] =
 
 static struct TokenInfo editor_setup_tokens[] =
 {
-  /* shortcut setup */
   { TYPE_SWITCH, &sei.el_boulderdash,  "editor.el_boulderdash"         },
   { TYPE_SWITCH, &sei.el_emerald_mine, "editor.el_emerald_mine"        },
   { TYPE_SWITCH, &sei.el_more,         "editor.el_more"                },
@@ -1427,7 +1439,6 @@ static struct TokenInfo editor_setup_tokens[] =
 
 static struct TokenInfo shortcut_setup_tokens[] =
 {
-  /* shortcut setup */
   { TYPE_KEY_X11, &ssi.save_game,      "shortcut.save_game"            },
   { TYPE_KEY_X11, &ssi.load_game,      "shortcut.load_game"            },
   { TYPE_KEY_X11, &ssi.toggle_pause,   "shortcut.toggle_pause"         }
@@ -1435,7 +1446,6 @@ static struct TokenInfo shortcut_setup_tokens[] =
 
 static struct TokenInfo player_setup_tokens[] =
 {
-  /* player setup */
   { TYPE_BOOLEAN, &sii.use_joystick,   ".use_joystick"                 },
   { TYPE_STRING,  &sii.joy.device_name,        ".joy.device_name"              },
   { TYPE_INTEGER, &sii.joy.xleft,      ".joy.xleft"                    },
@@ -1454,6 +1464,17 @@ static struct TokenInfo player_setup_tokens[] =
   { TYPE_KEY_X11, &sii.key.bomb,       ".key.place_bomb"               }
 };
 
+static struct TokenInfo system_setup_tokens[] =
+{
+  { TYPE_STRING,  &syi.sdl_audiodriver,        "system.sdl_audiodriver"        },
+  { TYPE_INTEGER, &syi.audio_fragment_size,"system.audio_fragment_size"        }
+};
+
+static struct TokenInfo options_setup_tokens[] =
+{
+  { TYPE_BOOLEAN, &soi.verbose,                "options.verbose"               }
+};
+
 static void setSetupInfoToDefaults(struct SetupInfo *si)
 {
   int i;
@@ -1518,6 +1539,11 @@ static void setSetupInfoToDefaults(struct SetupInfo *si)
     si->input[i].key.snap  = (i == 0 ? DEFAULT_KEY_SNAP  : KSYM_UNDEFINED);
     si->input[i].key.bomb  = (i == 0 ? DEFAULT_KEY_BOMB  : KSYM_UNDEFINED);
   }
+
+  si->system.sdl_audiodriver = getStringCopy(ARG_DEFAULT);
+  si->system.audio_fragment_size = DEFAULT_AUDIO_FRAGMENT_SIZE;
+
+  si->options.verbose = FALSE;
 }
 
 static void decodeSetupFileList(struct SetupFileList *setup_file_list)
@@ -1566,6 +1592,20 @@ static void decodeSetupFileList(struct SetupFileList *setup_file_list)
     }
     setup.input[pnr] = sii;
   }
+
+  /* system setup */
+  syi = setup.system;
+  for (i=0; i<NUM_SYSTEM_SETUP_TOKENS; i++)
+    setSetupInfo(system_setup_tokens, i,
+                getTokenValue(setup_file_list, system_setup_tokens[i].text));
+  setup.system = syi;
+
+  /* options setup */
+  soi = setup.options;
+  for (i=0; i<NUM_OPTIONS_SETUP_TOKENS; i++)
+    setSetupInfo(options_setup_tokens, i,
+                getTokenValue(setup_file_list, options_setup_tokens[i].text));
+  setup.options = soi;
 }
 
 void LoadSetup()
@@ -1658,6 +1698,18 @@ void SaveSetup()
       fprintf(file, "%s\n", getSetupLine(player_setup_tokens, prefix, i));
   }
 
+  /* system setup */
+  syi = setup.system;
+  fprintf(file, "\n");
+  for (i=0; i<NUM_SYSTEM_SETUP_TOKENS; i++)
+    fprintf(file, "%s\n", getSetupLine(system_setup_tokens, "", i));
+
+  /* options setup */
+  soi = setup.options;
+  fprintf(file, "\n");
+  for (i=0; i<NUM_OPTIONS_SETUP_TOKENS; i++)
+    fprintf(file, "%s\n", getSetupLine(options_setup_tokens, "", i));
+
   fclose(file);
 
   SetFilePermissions(filename, PERMS_PRIVATE);
@@ -1702,19 +1754,44 @@ void LoadSpecialMenuDesignSettings()
   char *value;
 
   /* !!! CHANGE THIS !!! (redundant initialization) !!! */
-  gfx.menu_main_hide_static_text = FALSE;
   global.num_toons = 20;
+  global.menu_draw_xoffset = 0;
+  global.menu_draw_yoffset = 0;
+  global.menu_draw_xoffset_MAIN = 0;
+  global.menu_draw_yoffset_MAIN = 0;
+  global.door_step_offset = 2;
+  global.door_step_delay = 10;
 
   if ((setup_file_list = loadSetupFileList(filename)) == NULL)
     return;
 
-  value = getTokenValue(setup_file_list, "menu.main.hide_static_text");
-  if (value != NULL)
-    gfx.menu_main_hide_static_text = get_boolean_from_string(value);
-
   value = getTokenValue(setup_file_list, "global.num_toons");
   if (value != NULL)
     global.num_toons = get_integer_from_string(value);
 
+  value = getTokenValue(setup_file_list, "menu.draw_xoffset");
+  if (value != NULL)
+    global.menu_draw_xoffset = get_integer_from_string(value);
+
+  value = getTokenValue(setup_file_list, "menu.draw_yoffset");
+  if (value != NULL)
+    global.menu_draw_yoffset = get_integer_from_string(value);
+
+  value = getTokenValue(setup_file_list, "menu.draw_xoffset.MAIN");
+  if (value != NULL)
+    global.menu_draw_xoffset_MAIN = get_integer_from_string(value);
+
+  value = getTokenValue(setup_file_list, "menu.draw_yoffset.MAIN");
+  if (value != NULL)
+    global.menu_draw_yoffset_MAIN = get_integer_from_string(value);
+
+  value = getTokenValue(setup_file_list, "door.step_offset");
+  if (value != NULL)
+    global.door_step_offset = get_integer_from_string(value);
+
+  value = getTokenValue(setup_file_list, "door.step_delay");
+  if (value != NULL)
+    global.door_step_delay = get_integer_from_string(value);
+
   freeSetupFileList(setup_file_list);
 }