X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=95f05bf10b337eae5f82094f27ca0a2bb5d79573;hb=d8edd05c7bc6f88a893fc52e3dd7008cf6e866c5;hp=c37ca97933325565571fa739398b4c2321ff836a;hpb=70ece48a5ce56ac96a710c67a8acae9bf1f65577;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index c37ca979..95f05bf1 100644 --- a/src/screens.c +++ b/src/screens.c @@ -125,6 +125,7 @@ // other screen text constants #define STR_CHOOSE_TREE_EDIT "Edit" +#define MENU_CHOOSE_TREE_FONT(x) (FONT_TEXT_1 + (x)) // for input setup functions #define SETUPINPUT_SCREEN_POS_START 0 @@ -4020,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) { @@ -4092,8 +4098,8 @@ 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); - pos->font = FONT_TEXT_1 + node->color; + node->color = getPlayerNameColor(name); + pos->font = MENU_CHOOSE_TREE_FONT(node->color); } } @@ -4110,12 +4116,12 @@ static void setTypeNameValues(char *name, struct TextPosInfo *pos, if (strEqual(name, "")) strcpy(name, EMPTY_PLAYER_NAME); + setTypeNameValues_Name(name, pos); + // if player name not changed, no further action required if (strEqual(name, type_name_last)) return; - setTypeNameValues_Name(name, pos); - // redraw player name before (possibly) opening request dialogs drawTypeNameText(name, pos, FALSE); @@ -4307,7 +4313,8 @@ static int getAlignXOffsetFromTreeInfo(TreeInfo *ti) int num_entries = numTreeInfoInGroup(ti); boolean scrollbar_needed = (num_entries > NUM_MENU_ENTRIES_ON_SCREEN); - int text_width = max_text_size * getFontWidth(FONT_TEXT_1); + int font_nr = MENU_CHOOSE_TREE_FONT(FC_RED); + int text_width = max_text_size * getFontWidth(font_nr); int button_width = SC_MENUBUTTON_XSIZE; int scrollbar_xpos = SC_SCROLLBAR_XPOS + menu.scrollbar_xoffset; int screen_width = (scrollbar_needed ? scrollbar_xpos : SXSIZE); @@ -4327,7 +4334,8 @@ static int getAlignYOffsetFromTreeInfo(TreeInfo *ti) int num_entries = numTreeInfoInGroup(ti); int num_page_entries = MIN(num_entries, NUM_MENU_ENTRIES_ON_SCREEN); - int font_height = getFontHeight(FONT_TEXT_1); + int font_nr = MENU_CHOOSE_TREE_FONT(FC_RED); + int font_height = getFontHeight(font_nr); int text_height = font_height * num_page_entries; int page_height = font_height * NUM_MENU_ENTRIES_ON_SCREEN; int align = menu.list_setup[SETUP_MODE_CHOOSE_OTHER].valign; @@ -4390,8 +4398,6 @@ static void drawChooseTreeList(int first_entry, int num_page_entries, boolean scrollbar_needed = (num_entries > NUM_MENU_ENTRIES_ON_SCREEN); int scrollbar_xpos = SC_SCROLLBAR_XPOS + menu.scrollbar_xoffset; int screen_width = (scrollbar_needed ? scrollbar_xpos : SXSIZE); - int font_nr = FONT_TEXT_1; - int font_xoffset = getFontBitmapInfo(font_nr)->draw_xoffset; int i; char *title_string = NULL; int yoffset_sets = MENU_TITLE1_YPOS; @@ -4409,6 +4415,12 @@ static void drawChooseTreeList(int first_entry, int num_page_entries, { TreeInfo *node, *node_first; int entry_pos = first_entry + i; + + node_first = getTreeInfoFirstGroupEntry(ti); + node = getTreeInfoFromPos(node_first, entry_pos); + + int font_nr = MENU_CHOOSE_TREE_FONT(node->color); + int font_xoffset = getFontBitmapInfo(font_nr)->draw_xoffset; int xpos = MENU_SCREEN_START_XPOS; int ypos = MENU_SCREEN_START_YPOS + i; int startx = amSX + xpos * 32; @@ -4419,13 +4431,10 @@ static void drawChooseTreeList(int first_entry, int num_page_entries, int max_buffer_len = max_text_size / getFontWidth(font_nr); char buffer[max_buffer_len + 1]; - node_first = getTreeInfoFirstGroupEntry(ti); - node = getTreeInfoFromPos(node_first, entry_pos); - strncpy(buffer, node->name, max_buffer_len); buffer[max_buffer_len] = '\0'; - DrawText(startx, starty, buffer, font_nr + node->color); + DrawText(startx, starty, buffer, font_nr); if (node->parent_link) initCursor(i, IMG_MENU_BUTTON_LEAVE_MENU); @@ -4870,18 +4879,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]); @@ -6690,6 +6694,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:" },