X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=24d440c7bb71e9c724be6a7282c61d8bb2a9711e;hb=7883c95567d936c3c43253a8d8ce7acc8f39ae4f;hp=95b56934b1ba724ec404442afd310387fdf2d829;hpb=55188fc81fac757089356928ae7ec26f90c4a7d0;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 95b56934..24d440c7 100644 --- a/src/screens.c +++ b/src/screens.c @@ -3980,11 +3980,12 @@ void HandleInfoScreen(int mx, int my, int dx, int dy, int button) static void HandleTypeNameExt(boolean initialize, Key key) { + static char name[MAX_PLAYER_NAME_LEN + 1]; static char last_player_name[MAX_PLAYER_NAME_LEN + 1]; struct MainControlInfo *mci = getMainControlInfo(MAIN_CONTROL_NAME); struct TextPosInfo *pos = mci->pos_input; - int startx = mSX + ALIGNED_TEXT_XPOS(pos); - int starty = mSY + ALIGNED_TEXT_YPOS(pos); + int sx = mSX + ALIGNED_TEXT_XPOS(pos); + int sy = mSY + ALIGNED_TEXT_YPOS(pos); static int xpos = 0; int font_nr = pos->font; int font_active_nr = FONT_ACTIVE(font_nr); @@ -3993,20 +3994,21 @@ static void HandleTypeNameExt(boolean initialize, Key key) boolean is_valid_key_char = (key_char != 0 && (key_char != ' ' || xpos > 0)); boolean is_active = TRUE; - DrawBackgroundForFont(startx,starty, pos->width, pos->height, font_active_nr); + DrawBackgroundForFont(sx, sy, pos->width, pos->height, font_active_nr); if (initialize) { - strcpy(last_player_name, setup.player_name); + strcpy(name, setup.player_name); + strcpy(last_player_name, name); - xpos = strlen(setup.player_name); + xpos = strlen(name); - StartTextInput(startx, starty, pos->width, pos->height); + StartTextInput(sx, sy, pos->width, pos->height); } else if (is_valid_key_char && xpos < MAX_PLAYER_NAME_LEN) { - setup.player_name[xpos] = key_char; - setup.player_name[xpos + 1] = 0; + name[xpos] = key_char; + name[xpos + 1] = 0; xpos++; } @@ -4014,39 +4016,39 @@ static void HandleTypeNameExt(boolean initialize, Key key) { xpos--; - setup.player_name[xpos] = 0; + name[xpos] = 0; } else if (key == KSYM_Return && xpos > 0) { + strcpy(setup.player_name, name); + SaveSetup(); is_active = FALSE; - - SetGameStatus(GAME_MODE_MAIN); } else if (key == KSYM_Escape) { - strcpy(setup.player_name, last_player_name); + strcpy(name, last_player_name); is_active = FALSE; - - SetGameStatus(GAME_MODE_MAIN); } if (is_active) { - pos->width = (strlen(setup.player_name) + 1) * font_width; - startx = mSX + ALIGNED_TEXT_XPOS(pos); + pos->width = (strlen(name) + 1) * font_width; + sx = mSX + ALIGNED_TEXT_XPOS(pos); - DrawText(startx, starty, setup.player_name, font_active_nr); - DrawText(startx + xpos * font_width, starty, "_", font_active_nr); + DrawText(sx, sy, name, font_active_nr); + DrawText(sx + xpos * font_width, sy, "_", font_active_nr); } else { - pos->width = strlen(setup.player_name) * font_width; - startx = mSX + ALIGNED_TEXT_XPOS(pos); + SetGameStatus(GAME_MODE_MAIN); + + pos->width = strlen(name) * font_width; + sx = mSX + ALIGNED_TEXT_XPOS(pos); - DrawText(startx, starty, setup.player_name, font_nr); + DrawText(sx, sy, name, font_nr); StopTextInput(); }