@@ -66,26 +66,24 @@ static image_button buttons_build_collapsed[12] = {
66
66
{9 , CL_ROW0 + 385 , 36 , 48 , IB_BUILD, GROUP_SIDEBAR_BUTTONS, 134 , button_build, button_none, BUILDING_MENU_SECURITY, 0 , 1 },
67
67
};
68
68
69
- #define COL1 9
70
- #define COL2 COL1 + 34 + 3
71
- #define COL3 COL2 + 36 + 4
72
- #define COL4 COL3 + 34 + 5
73
-
74
- #define ROW1 251
75
- #define ROW2 ROW1 + 48 + 1
76
- #define ROW3 ROW2 + 50 + 1
77
- #define ROW4 ROW3 + 49 + 4
78
-
79
- static image_button buttons_build_expanded[] = {
80
- {COL1, ROW1, 34 , 48 , IB_BUILD, GROUP_SIDEBAR_BUTTONS, 0 , button_build, button_none, BUILDING_MENU_VACANT_HOUSE, 0 , 1 },
81
- {COL1, ROW2, 34 , 50 , IB_BUILD, GROUP_SIDEBAR_BUTTONS, 4 , button_build, button_none, BUILDING_MENU_ROAD, 0 , 1 },
82
- {COL1, ROW3, 34 , 49 , IB_BUILD, GROUP_SIDEBAR_BUTTONS, 8 , button_build, button_none, BUILDING_MENU_CLEAR_LAND, 0 , 1 },
83
-
84
- {COL2, ROW1, 36 , 48 , IB_BUILD, GROUP_SIDEBAR_BUTTONS, 12 , button_build, button_none, BUILDING_MENU_FOOD, 0 , 1 },
85
- {COL2, ROW2, 36 , 50 , IB_BUILD, GROUP_SIDEBAR_BUTTONS, 16 , button_build, button_none, BUILDING_MENU_INDUSTRY, 0 , 1 },
86
- {COL2, ROW3, 36 , 49 , IB_BUILD, GROUP_SIDEBAR_BUTTONS, 20 , button_build, button_none, BUILDING_MENU_DISTRIBUTION, 0 , 1 },
87
-
88
- {COL3, ROW1, 34 , 48 , IB_BUILD, GROUP_SIDEBAR_BUTTONS, 24 , button_build, button_none, BUILDING_MENU_ENTERTAINMENT, 0 , 1 },
69
+ struct btnid {
70
+ pcstr id;
71
+ e_building_type type;
72
+ };
73
+
74
+ const btnid button_ids[] = {
75
+ {" build_house" , BUILDING_MENU_VACANT_HOUSE},
76
+ {" build_road" , BUILDING_MENU_ROAD},
77
+ {" clear_land" , BUILDING_MENU_CLEAR_LAND},
78
+ {" build_food" , BUILDING_MENU_FOOD},
79
+ {" build_industry" , BUILDING_MENU_INDUSTRY},
80
+ {" build_distribution" , BUILDING_MENU_DISTRIBUTION},
81
+ {" build_entertainment" , BUILDING_MENU_ENTERTAINMENT},
82
+ {" build_religion" , BUILDING_MENU_RELIGION},
83
+ {" build_education" , BUILDING_MENU_EDUCATION},
84
+ {" build_health" , BUILDING_MENU_HEALTH},
85
+ {" build_security" , BUILDING_MENU_SECURITY},
86
+ {" build_admin" , BUILDING_MENU_ADMINISTRATION },
89
87
};
90
88
91
89
ui::sidebar_window g_sidebar;
@@ -125,23 +123,19 @@ static void draw_buttons_collapsed(int x_offset) {
125
123
}
126
124
127
125
void ui::sidebar_window::draw_buttons_expanded () {
128
- buttons_build_expanded[ 12 ]. enabled = game_can_undo ();
126
+ ui[ " undo_btn " ]. readonly = game_can_undo ();
129
127
ui[" goto_problem" ].readonly = !city_message_problem_area_count ();
130
128
131
129
image_buttons_draw ({x_offset, TOP_MENU_HEIGHT}, buttons_overlays_collapse_sidebar, 1 );
132
- image_buttons_draw ({x_offset, TOP_MENU_HEIGHT}, buttons_build_expanded, std::size (buttons_build_expanded));
133
130
}
134
131
135
- static void refresh_build_menu_buttons () {
136
- int num_buttons = 12 ;
137
- for (int i = 0 ; i < num_buttons; i++) {
138
- buttons_build_expanded[i].enabled = 1 ;
139
- if (building_menu_count_items (buttons_build_expanded[i].parameter1 ) <= 0 )
140
- buttons_build_expanded[i].enabled = 0 ;
132
+ void ui::sidebar_window::refresh_build_menu_buttons () {
133
+ for (const auto &btn: button_ids) {
134
+ ui[btn.id ].enabled = (building_menu_count_items (btn.type ) > 0 );
135
+ }
141
136
142
- buttons_build_collapsed[i].enabled = 1 ;
143
- if (building_menu_count_items (buttons_build_collapsed[i].parameter1 ) <= 0 )
144
- buttons_build_collapsed[i].enabled = 0 ;
137
+ for (auto &btn: buttons_build_collapsed) {
138
+ btn.enabled = (building_menu_count_items (btn.parameter1 ) > 0 );
145
139
}
146
140
}
147
141
@@ -180,12 +174,9 @@ void ui::sidebar_window::init() {
180
174
ui[" show_advisors" ].onclick ([] { window_advisors_show_checked (); });
181
175
ui[" show_empire" ].onclick ([] { window_empire_show_checked (); });
182
176
183
- ui[" build_education" ].onclick ([] { window_build_menu_show (BUILDING_MENU_EDUCATION); });
184
- ui[" build_religion" ].onclick ([] { window_build_menu_show (BUILDING_MENU_RELIGION); });
185
-
186
- ui[" build_health" ].onclick ([] { window_build_menu_show (BUILDING_MENU_HEALTH); });
187
- ui[" build_security" ].onclick ([] { window_build_menu_show (BUILDING_MENU_SECURITY); });
188
- ui[" build_admin" ].onclick ([] { window_build_menu_show (BUILDING_MENU_ADMINISTRATION); });
177
+ for (const auto &btn: button_ids) {
178
+ ui[btn.id ].onclick ([type = btn.type ] { window_build_menu_show (type); });
179
+ }
189
180
190
181
ui[" undo_btn" ].onclick ([] {
191
182
game_undo_perform ();
@@ -306,11 +297,6 @@ int widget_sidebar_city_handle_mouse(const mouse* m) {
306
297
data.focus_tooltip_text_id = button_id + 9 ;
307
298
}
308
299
309
- handled |= image_buttons_handle_mouse (m, {x_offset, 24 }, buttons_build_expanded, (int )std::size (buttons_build_expanded), &button_id);
310
- if (button_id) {
311
- data.focus_tooltip_text_id = button_id + 19 ;
312
- }
313
-
314
300
handled |= (sidebar_extra_handle_mouse (m) != 0 );
315
301
}
316
302
return handled;
@@ -320,7 +306,7 @@ int widget_sidebar_city_handle_mouse_build_menu(const mouse* m) {
320
306
if (city_view_is_sidebar_collapsed ()) {
321
307
return image_buttons_handle_mouse (m, {sidebar_common_get_x_offset_collapsed (), 24 }, buttons_build_collapsed, (int )std::size (buttons_build_collapsed), 0 );
322
308
} else {
323
- return image_buttons_handle_mouse (m, {sidebar_common_get_x_offset_expanded (), 24 }, buttons_build_expanded, (int )std::size (buttons_build_expanded), 0 );
309
+ return 0 ; // image_buttons_handle_mouse(m, { sidebar_common_get_x_offset_expanded(), 24 }, buttons_build_expanded, (int)std::size(buttons_build_expanded), 0);
324
310
}
325
311
}
326
312
@@ -329,7 +315,7 @@ int widget_sidebar_city_get_tooltip_text() {
329
315
}
330
316
331
317
void widget_sidebar_city_release_build_buttons () {
332
- image_buttons_release_press (buttons_build_expanded, std::size (buttons_build_expanded));
318
+ // image_buttons_release_press(buttons_build_expanded, std::size(buttons_build_expanded));
333
319
image_buttons_release_press (buttons_build_collapsed, std::size (buttons_build_collapsed));
334
320
}
335
321
0 commit comments