improved code to type player name in main menu
authorHolger Schemel <info@artsoft.org>
Sat, 17 Oct 2020 15:57:44 +0000 (17:57 +0200)
committerHolger Schemel <info@artsoft.org>
Sun, 13 Dec 2020 23:57:56 +0000 (00:57 +0100)
src/events.c
src/screens.c
src/screens.h

index 2594f131037a9094af67cf36f5950acb2038fca3..f2f645933e6be727a2e8bb39a4637fffe4740e59 100644 (file)
@@ -1749,7 +1749,7 @@ void HandleButton(int mx, int my, int button, int button_nr)
       break;
 
     case GAME_MODE_PSEUDO_TYPENAME:
-      HandleTypeName(0, KSYM_Return);
+      HandleTypeName(KSYM_Return);
       break;
 
     case GAME_MODE_LEVELS:
@@ -2297,7 +2297,7 @@ void HandleKey(Key key, int key_status)
   switch (game_status)
   {
     case GAME_MODE_PSEUDO_TYPENAME:
-      HandleTypeName(0, key);
+      HandleTypeName(key);
       break;
 
     case GAME_MODE_TITLE:
index 4d5c8b18cbf992b9fa4f516fffccb433c8628c83..16a3fc1b77b8e2e57758487aa5bd2258935eaba5 100644 (file)
@@ -252,6 +252,7 @@ static void DrawChooseLevelSet(void);
 static void DrawChooseLevelNr(void);
 static void DrawInfoScreen(void);
 static void DrawSetupScreen(void);
+static void DrawTypeName(void);
 
 static void DrawInfoScreen_NotAvailable(char *, char *);
 static void DrawInfoScreen_HelpAnim(int, int, boolean);
@@ -2080,7 +2081,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
        {
          SetGameStatus(GAME_MODE_PSEUDO_TYPENAME);
 
-         HandleTypeName(strlen(setup.player_name), 0);
+         DrawTypeName();
        }
       }
       else if (pos == MAIN_CONTROL_LEVELS)
@@ -3960,7 +3961,7 @@ void HandleInfoScreen(int mx, int my, int dx, int dy, int button)
 // type name functions
 // ============================================================================
 
-void HandleTypeName(int newxpos, Key key)
+static void HandleTypeNameExt(boolean initialize, Key key)
 {
   static char last_player_name[MAX_PLAYER_NAME_LEN + 1];
   struct MainControlInfo *mci = getMainControlInfo(MAIN_CONTROL_NAME);
@@ -3977,11 +3978,11 @@ void HandleTypeName(int newxpos, Key key)
 
   DrawBackgroundForFont(startx,starty, pos->width, pos->height, font_active_nr);
 
-  if (newxpos)
+  if (initialize)
   {
     strcpy(last_player_name, setup.player_name);
 
-    xpos = newxpos;
+    xpos = strlen(setup.player_name);
 
     StartTextInput(startx, starty, pos->width, pos->height);
   }
@@ -4034,6 +4035,16 @@ void HandleTypeName(int newxpos, Key key)
   }
 }
 
+static void DrawTypeName(void)
+{
+  HandleTypeNameExt(TRUE, 0);
+}
+
+void HandleTypeName(Key key)
+{
+  HandleTypeNameExt(FALSE, key);
+}
+
 
 // ============================================================================
 // tree menu functions
index f49fd2449e8252aa473df693b6f6ecae1071febe..3cb08c1eec94846834c799118159f92dd76ea94c 100644 (file)
@@ -35,7 +35,7 @@ void HandleChooseLevelNr(int, int, int, int, int);
 void HandleHallOfFame(int, int, int, int, int);
 void HandleInfoScreen(int, int, int, int, int);
 void HandleSetupScreen(int, int, int, int, int);
-void HandleTypeName(int, Key);
+void HandleTypeName(Key);
 void HandleGameActions(void);
 
 void CreateScreenGadgets(void);