diff --git a/src/main.c b/src/main.c index de9ee74..58c9646 100644 --- a/src/main.c +++ b/src/main.c @@ -181,6 +181,7 @@ int main() { int in_field_menu = -1; int selection_changed = 0; + int menu_updated = 0; selected_field_window = field_windows[selected_field]; mw_menu *cur_menu; ITEM **cur_menu_items; @@ -206,6 +207,7 @@ int main() { field_menus[SEX].selections[0] = !field_menus[SEX].selections[0]; mvwclrtobot(selected_field_window, 1, 0); waddstr(selected_field_window, field_strings[SEX][field_menus[SEX].selections[0]]); + menu_updated = 1; break; } @@ -290,27 +292,30 @@ int main() { mvwaddstr(selected_field_window, i+1, 0, field_strings[selected_field][cur_menu->selections[i]]); } - for (int i = 0; i < SKILL_COUNT; ++i) { - out_skills[i] = 0; - } - for (int i = 0; i < field_menus[SKILL_MIN].num_selections; ++i) { - out_skills[field_menus[SKILL_MIN].selections[i]] = 1; - } - for (int i = 0; i < field_menus[SKILL_MAJ].num_selections; ++i) { - out_skills[field_menus[SKILL_MAJ].selections[i]] = 2; - } - for (int i = 0; i < ATTRIBUTE_COUNT; ++i) { - out_attrs[i] = 0; - } - for (int i = 0; i < field_menus[ATTR].num_selections; ++i) { - out_attrs[field_menus[ATTR].selections[i]] = 1; - } - draw_output(win_output, field_menus[RACE].selections[0], field_menus[SEX].selections[0], field_menus[SPEC].selections[0], field_menus[SIGN].selections[0], out_attrs, out_skills); hide_panel(cur_menu->p); in_field_menu = -1; break; } } + if (menu_updated) { + for (int i = 0; i < SKILL_COUNT; ++i) { + out_skills[i] = 0; + } + for (int i = 0; i < field_menus[SKILL_MIN].num_selections; ++i) { + out_skills[field_menus[SKILL_MIN].selections[i]] = 1; + } + for (int i = 0; i < field_menus[SKILL_MAJ].num_selections; ++i) { + out_skills[field_menus[SKILL_MAJ].selections[i]] = 2; + } + for (int i = 0; i < ATTRIBUTE_COUNT; ++i) { + out_attrs[i] = 0; + } + for (int i = 0; i < field_menus[ATTR].num_selections; ++i) { + out_attrs[field_menus[ATTR].selections[i]] = 1; + } + draw_output(win_output, field_menus[RACE].selections[0], field_menus[SEX].selections[0], field_menus[SPEC].selections[0], field_menus[SIGN].selections[0], out_attrs, out_skills); + menu_updated = 0; + } update_panels(); doupdate(); }