Skip to content

Commit 781c324

Browse files
committed
ui: build buttons from sidebar moved to js config
1 parent 3be6361 commit 781c324

File tree

3 files changed

+43
-47
lines changed

3 files changed

+43
-47
lines changed

src/scripts/ui.js

+12-3
Original file line numberDiff line numberDiff line change
@@ -839,13 +839,22 @@ sidebar_window = {
839839
show_advisors : image_button({pos:[16, 173], pack:PACK_GENERAL, id:136, offset:64, tooltip:[68, 41]}),
840840
show_empire : image_button({pos:[90, 173], pack:PACK_GENERAL, id:136, offset:68, tooltip:[68, 42]}),
841841

842+
build_house : image_button({pos:[9, 281], pack:PACK_GENERAL, id:136, offset:0, tooltip:[68, 20]}),
843+
build_road : image_button({pos:[9, 330], pack:PACK_GENERAL, id:136, offset:4, tooltip:[68, 21]}),
844+
clear_land : image_button({pos:[9, 381], pack:PACK_GENERAL, id:136, offset:8, tooltip:[68, 22]}),
845+
846+
build_food : image_button({pos:[45, 281], pack:PACK_GENERAL, id:136, offset:12, tooltip:[68, 23]}),
847+
build_industry : image_button({pos:[45, 330], pack:PACK_GENERAL, id:136, offset:16, tooltip:[68, 24]}),
848+
build_distribution : image_button({pos:[45, 381], pack:PACK_GENERAL, id:136, offset:20, tooltip:[68, 25]}),
849+
850+
build_entertainment: image_button({pos:[86, 281], pack:PACK_GENERAL, id:136, offset:24, tooltip:[68, 26]}),
851+
build_religion : image_button({pos:[86, 330], pack:PACK_GENERAL, id:136, offset:28, tooltip:[68, 27]}),
852+
build_education: image_button({pos:[86, 381], pack:PACK_GENERAL, id:136, offset:32, tooltip:[68, 28]}),
853+
842854
build_health : image_button({pos:[125, 281], pack:PACK_GENERAL, id:136, offset:36, tooltip:[68, 29]}),
843855
build_admin : image_button({pos:[125, 330], pack:PACK_GENERAL, id:136, offset:40, tooltip:[68, 30]}),
844856
build_security : image_button({pos:[125, 381], pack:PACK_GENERAL, id:136, offset:44, tooltip:[68, 31]}),
845857

846-
build_education: image_button({pos:[86, 381], pack:PACK_GENERAL, id:136, offset:32, tooltip:[68, 28]}),
847-
build_religion : image_button({pos:[86, 330], pack:PACK_GENERAL, id:136, offset:28, tooltip:[68, 27]}),
848-
849858
show_messages : image_button({pos:[46, 434], pack:PACK_GENERAL, id:136, offset:52, tooltip:[68,33]}),
850859
goto_problem : image_button({pos:[86, 434], pack:PACK_GENERAL, id:136, offset:56, tooltip:[68,34]}),
851860
show_briefing : image_button({pos:[116, 434], pack:PACK_GENERAL, id:136, offset:60, tooltip:[68,35]}),

src/widget/widget_sidebar.cpp

+30-44
Original file line numberDiff line numberDiff line change
@@ -66,26 +66,24 @@ static image_button buttons_build_collapsed[12] = {
6666
{9, CL_ROW0 + 385, 36, 48, IB_BUILD, GROUP_SIDEBAR_BUTTONS, 134, button_build, button_none, BUILDING_MENU_SECURITY, 0, 1},
6767
};
6868

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 },
8987
};
9088

9189
ui::sidebar_window g_sidebar;
@@ -125,23 +123,19 @@ static void draw_buttons_collapsed(int x_offset) {
125123
}
126124

127125
void ui::sidebar_window::draw_buttons_expanded() {
128-
buttons_build_expanded[12].enabled = game_can_undo();
126+
ui["undo_btn"].readonly = game_can_undo();
129127
ui["goto_problem"].readonly = !city_message_problem_area_count();
130128

131129
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));
133130
}
134131

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+
}
141136

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);
145139
}
146140
}
147141

@@ -180,12 +174,9 @@ void ui::sidebar_window::init() {
180174
ui["show_advisors"].onclick([] { window_advisors_show_checked(); });
181175
ui["show_empire"].onclick([] { window_empire_show_checked(); });
182176

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+
}
189180

190181
ui["undo_btn"].onclick([] {
191182
game_undo_perform();
@@ -306,11 +297,6 @@ int widget_sidebar_city_handle_mouse(const mouse* m) {
306297
data.focus_tooltip_text_id = button_id + 9;
307298
}
308299

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-
314300
handled |= (sidebar_extra_handle_mouse(m) != 0);
315301
}
316302
return handled;
@@ -320,7 +306,7 @@ int widget_sidebar_city_handle_mouse_build_menu(const mouse* m) {
320306
if (city_view_is_sidebar_collapsed()) {
321307
return image_buttons_handle_mouse(m, {sidebar_common_get_x_offset_collapsed(), 24}, buttons_build_collapsed, (int)std::size(buttons_build_collapsed), 0);
322308
} 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);
324310
}
325311
}
326312

@@ -329,7 +315,7 @@ int widget_sidebar_city_get_tooltip_text() {
329315
}
330316

331317
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));
333319
image_buttons_release_press(buttons_build_collapsed, std::size(buttons_build_collapsed));
334320
}
335321

src/widget/widget_sidebar.h

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ struct sidebar_window : public autoconfig_window_t<sidebar_window> {
2424
void draw_overlay_text();
2525
void draw_buttons_expanded();
2626
void draw_number_of_messages();
27+
void refresh_build_menu_buttons();
2728
};
2829

2930
}

0 commit comments

Comments
 (0)