X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fscreens.c;h=39650b5cf6a4f9aa32acd0fb999518ccbd6815c1;hp=ee1bf704771964d71238f4cd1c4001b8ca7c03b8;hb=668d05fbdb883eb630700f4df445f77abe599498;hpb=ed1210eb622ba215e8d7ffd24c7ea245811c4a3b diff --git a/src/screens.c b/src/screens.c index ee1bf704..39650b5c 100644 --- a/src/screens.c +++ b/src/screens.c @@ -2168,10 +2168,10 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) else if (pos == MAIN_CONTROL_EDITOR) { if (leveldir_current->readonly && - !strEqual(setup.player_name, "Artsoft")) - Request("This level is read only!", REQ_CONFIRM); + setup.editor.show_read_only_warning) + Request("This level is read-only!", REQ_CONFIRM | REQ_STAY_OPEN); - CloseDoor(DOOR_CLOSE_2); + CloseDoor(DOOR_CLOSE_ALL); SetGameStatus(GAME_MODE_EDITOR); @@ -4021,6 +4021,11 @@ static TreeInfo *type_name_node = NULL; static char type_name_last[MAX_PLAYER_NAME_LEN + 1] = { 0 }; static int type_name_nr = 0; +static int getPlayerNameColor(char *name) +{ + return (strEqual(name, EMPTY_PLAYER_NAME) ? FC_BLUE : FC_RED); +} + static void drawTypeNameText(char *name, struct TextPosInfo *pos, boolean active) { @@ -4093,7 +4098,7 @@ static void setTypeNameValues_Name(char *name, struct TextPosInfo *pos) setString(&node->name, name); setString(&node->name_sorting, name); - node->color = (strEqual(name, EMPTY_PLAYER_NAME) ? FC_BLUE : FC_RED); + node->color = getPlayerNameColor(name); pos->font = MENU_CHOOSE_TREE_FONT(node->color); } } @@ -4253,15 +4258,13 @@ static void HandleTypeNameExt(boolean initialize, Key key) name[xpos] = 0; } - else if (key == KSYM_Return) + else if (key == KSYM_Return || key == KSYM_Escape) { - setTypeNameValues(name, pos, TRUE); + boolean changed = (key == KSYM_Return); - active = FALSE; - } - else if (key == KSYM_Escape) - { - setTypeNameValues(name, pos, FALSE); + StopTextInput(); + + setTypeNameValues(name, pos, changed); active = FALSE; } @@ -4270,8 +4273,6 @@ static void HandleTypeNameExt(boolean initialize, Key key) if (!active) { - StopTextInput(); - SetGameStatus(game_status_last_screen); if (game_status == GAME_MODE_MAIN) @@ -4874,18 +4875,13 @@ void DrawChoosePlayerName(void) for (i = 0; i < MAX_PLAYER_NAMES; i++) { - boolean team_mode = (!network.enabled && setup.team_mode); - int tree_type = (team_mode ? TREE_TYPE_PLAYER_TEAM : TREE_TYPE_PLAYER_NAME); - TreeInfo *ti = newTreeInfo_setDefaults(tree_type); + TreeInfo *ti = newTreeInfo_setDefaults(TREE_TYPE_PLAYER_NAME); char identifier[32], name[MAX_PLAYER_NAME_LEN + 1]; int value = i; ti->node_top = &player_name; ti->sort_priority = 10000 + value; - ti->color = FC_RED; - - if (strEqual(global.user_names[i], EMPTY_PLAYER_NAME)) - ti->color = FC_BLUE; + ti->color = getPlayerNameColor(global.user_names[i]); snprintf(identifier, sizeof(identifier), "%d", value); snprintf(name, sizeof(name), "%s", global.user_names[i]); @@ -5084,9 +5080,15 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button) if (button == MB_MENU_INITIALIZE) { level_nr = mx; - first_entry = 0; highlight_position = my; + first_entry = highlight_position - (NUM_MENU_ENTRIES_ON_SCREEN + 1) / 2 + 1; + + if (first_entry < 0) + first_entry = 0; + else if (first_entry + NUM_MENU_ENTRIES_ON_SCREEN > MAX_SCORE_ENTRIES) + first_entry = MAX(0, MAX_SCORE_ENTRIES - NUM_MENU_ENTRIES_ON_SCREEN); + drawHallOfFameList(level_nr, first_entry, highlight_position); return; @@ -6694,6 +6696,7 @@ static struct TokenInfo setup_info_engines[] = { TYPE_SWITCH, &setup.forced_scroll_delay, "Scroll Delay:" }, { TYPE_ECS_AGA, &setup.prefer_aga_graphics, "Amiga Graphics Chipset:" }, { TYPE_SWITCH, &setup.prefer_lowpass_sounds,"Low-Pass Filter Sounds:" }, + { TYPE_SWITCH, &setup.prefer_extra_panel_items,"Show Dynamite and Keys:" }, { TYPE_EMPTY, NULL, "" }, { TYPE_HEADLINE, NULL, "Supaplex" }, { TYPE_SWITCH, &setup.sp_show_border_elements, "Border Elements:" }, @@ -6732,6 +6735,8 @@ static struct TokenInfo setup_info_editor[] = #endif { TYPE_SWITCH, &setup.editor.show_element_token, "Show element token:" }, { TYPE_EMPTY, NULL, "" }, + { TYPE_SWITCH, &setup.editor.show_read_only_warning, "Show read-only warning:" }, + { TYPE_EMPTY, NULL, "" }, { TYPE_LEAVE_MENU, execSetupMain, "Back" }, { 0, NULL, NULL }