renamed function
[rocksndiamonds.git] / src / files.c
index ed885a434bbbaaf99cb00e41d8cb93f5d27dda6d..0a674b4ce7ac2441415f211f113d2882f0559ec3 100644 (file)
@@ -9175,7 +9175,7 @@ static struct TokenInfo options_setup_tokens[] =
   },
 };
 
-static char *get_corrected_login_name(char *login_name)
+static char *get_corrected_player_name(char *login_name)
 {
   // needed because player name must be a fixed length string
   char *login_name_new = checked_malloc(MAX_PLAYER_NAME_LEN + 1);
@@ -9192,9 +9192,10 @@ static char *get_corrected_login_name(char *login_name)
 
 static void setSetupInfoToDefaults(struct SetupInfo *si)
 {
+  char *player_name = (user.nr == 0 ? getLoginName() : EMPTY_PLAYER_NAME);
   int i;
 
-  si->player_name = get_corrected_login_name(getLoginName());
+  si->player_name = get_corrected_player_name(player_name);
 
   si->multiple_users = TRUE;
 
@@ -9657,6 +9658,43 @@ static void decodeSetupFileHash_EditorCascade(SetupFileHash *setup_file_hash)
                              editor_cascade_setup_tokens[i].text));
 }
 
+void LoadUserNames(void)
+{
+  int last_user_nr = user.nr;
+  int i;
+
+  if (global.user_names != NULL)
+  {
+    for (i = 0; i < MAX_PLAYER_NAMES; i++)
+      checked_free(global.user_names[i]);
+
+    checked_free(global.user_names);
+  }
+
+  global.user_names = checked_calloc(MAX_PLAYER_NAMES * sizeof(char *));
+
+  for (i = 0; i < MAX_PLAYER_NAMES; i++)
+  {
+    user.nr = i;
+
+    SetupFileHash *setup_file_hash = loadSetupFileHash(getSetupFilename());
+
+    if (setup_file_hash)
+    {
+      char *player_name = getHashEntry(setup_file_hash, "player_name");
+
+      global.user_names[i] = get_corrected_player_name(player_name);
+
+      freeSetupFileHash(setup_file_hash);
+    }
+
+    if (global.user_names[i] == NULL)
+      global.user_names[i] = getStringCopy(EMPTY_PLAYER_NAME);
+  }
+
+  user.nr = last_user_nr;
+}
+
 void LoadSetupFromFilename(char *filename)
 {
   SetupFileHash *setup_file_hash = loadSetupFileHash(filename);
@@ -9678,7 +9716,7 @@ static void LoadSetup_SpecialPostProcessing(void)
   char *player_name_new;
 
   // needed to work around problems with fixed length strings
-  player_name_new = get_corrected_login_name(setup.player_name);
+  player_name_new = get_corrected_player_name(setup.player_name);
   free(setup.player_name);
   setup.player_name = player_name_new;