@@ -41,7 +41,6 @@ static void button_build(int submenu, int param2);
41
41
static void button_undo (int param1, int param2);
42
42
static void button_messages (int param1, int param2);
43
43
static void button_help (int param1, int param2);
44
- static void button_go_to_problem (int param1, int param2);
45
44
static void button_advisors (int param1, int param2);
46
45
static void button_empire (int param1, int param2);
47
46
static void button_mission_briefing (int param1, int param2);
@@ -103,7 +102,6 @@ static image_button buttons_build_expanded[] = {
103
102
104
103
{COL1, ROW4, 35 , 45 , IB_NORMAL, GROUP_SIDEBAR_BUTTONS, 48 , button_undo, button_none, 0 , 0 , 1 },
105
104
{COL2, ROW4, 38 , 45 , IB_NORMAL, GROUP_SIDEBAR_BUTTONS, 52 , button_messages, button_help, 0 , MESSAGE_DIALOG_MESSAGES, 1 },
106
- {COL3, ROW4, 28 , 45 , IB_NORMAL, GROUP_SIDEBAR_BUTTONS, 56 , button_go_to_problem, button_none, 0 , 0 , 1 },
107
105
};
108
106
109
107
static image_button buttons_top_expanded[3 ] = {
@@ -152,15 +150,15 @@ static void draw_buttons_collapsed(int x_offset) {
152
150
image_buttons_draw ({x_offset, TOP_MENU_HEIGHT}, buttons_build_collapsed, 12 );
153
151
}
154
152
155
- static void draw_buttons_expanded (int x_offset) {
153
+ void ui::sidebar_window:: draw_buttons_expanded (int x_offset) {
156
154
buttons_build_expanded[12 ].enabled = game_can_undo ();
157
- buttons_build_expanded[ 14 ]. enabled = city_message_problem_area_count ();
155
+ ui[ " goto_problem " ]. readonly = ! city_message_problem_area_count ();
158
156
image_buttons_draw ({x_offset, TOP_MENU_HEIGHT}, buttons_overlays_collapse_sidebar, 1 );
159
157
image_buttons_draw ({x_offset, TOP_MENU_HEIGHT}, buttons_build_expanded, 15 );
160
158
image_buttons_draw ({x_offset, TOP_MENU_HEIGHT}, buttons_top_expanded, 3 );
161
159
}
162
160
163
- static void refresh_build_menu_buttons (void ) {
161
+ static void refresh_build_menu_buttons () {
164
162
int num_buttons = 12 ;
165
163
for (int i = 0 ; i < num_buttons; i++) {
166
164
buttons_build_expanded[i].enabled = 1 ;
@@ -190,6 +188,16 @@ void ui::sidebar_window::load(archive arch, pcstr section) {
190
188
191
189
void ui::sidebar_window::init () {
192
190
extra_block_size = image_get (extra_block)->size ();
191
+
192
+ ui[" goto_problem" ].onclick ([] {
193
+ int grid_offset = city_message_next_problem_area_grid_offset ();
194
+ if (grid_offset) {
195
+ camera_go_to_mappoint (tile2i (grid_offset));
196
+ window_city_show ();
197
+ } else {
198
+ window_invalidate ();
199
+ }
200
+ });
193
201
}
194
202
195
203
void ui::sidebar_window::ui_draw_foreground () {
@@ -198,9 +206,11 @@ void ui::sidebar_window::ui_draw_foreground() {
198
206
x_offset = sidebar_common_get_x_offset_expanded ();
199
207
ui.pos .x = x_offset;
200
208
209
+ ui.begin_widget (ui.pos );
201
210
ui.draw ();
202
211
const animation_t &anim = window_build_menu_image ();
203
212
ui[" build_image" ].image (image_desc{ anim.pack , anim.iid , anim.offset });
213
+ ui.end_widget ();
204
214
205
215
widget_minimap_draw ({x_offset + 12 , MINIMAP_Y_OFFSET}, MINIMAP_WIDTH, MINIMAP_HEIGHT, 1 );
206
216
@@ -218,26 +228,7 @@ void ui::sidebar_window::ui_draw_foreground() {
218
228
draw_overlay_text ();
219
229
220
230
draw_sidebar_remainder (x_offset, false );
221
- }
222
-
223
- void widget_sidebar_city_init () {
224
- g_sidebar.init ();
225
- }
226
231
227
- void widget_sidebar_city_draw_background () {
228
- OZZY_PROFILER_SECTION (" Render/Frame/Window/City/Sidebar" );
229
- if (city_view_is_sidebar_collapsed ()) {
230
- draw_collapsed_background ();
231
- } else {
232
- g_sidebar.ui_draw_foreground ();
233
- }
234
- }
235
-
236
- void widget_sidebar_city_draw_foreground_military (void ) {
237
- widget_minimap_draw ({sidebar_common_get_x_offset_expanded () + 8 , MINIMAP_Y_OFFSET}, MINIMAP_WIDTH, MINIMAP_HEIGHT, 1 );
238
- }
239
-
240
- void widget_sidebar_city_draw_foreground () {
241
232
if (building_menu_has_changed ()) {
242
233
refresh_build_menu_buttons ();
243
234
}
@@ -248,9 +239,8 @@ void widget_sidebar_city_draw_foreground() {
248
239
} else {
249
240
int x_offset = sidebar_common_get_x_offset_expanded ();
250
241
draw_buttons_expanded (x_offset);
251
- g_sidebar.draw_overlay_text ();
252
242
253
- widget_minimap_draw ({x_offset + 12 , MINIMAP_Y_OFFSET}, MINIMAP_WIDTH, MINIMAP_HEIGHT, 0 );
243
+ widget_minimap_draw ({ x_offset + 12 , MINIMAP_Y_OFFSET }, MINIMAP_WIDTH, MINIMAP_HEIGHT, 0 );
254
244
draw_number_of_messages (x_offset - 26 );
255
245
}
256
246
sidebar_extra_draw_foreground ();
@@ -259,11 +249,35 @@ void widget_sidebar_city_draw_foreground() {
259
249
draw_debug_ui (10 , 30 );
260
250
}
261
251
252
+ void widget_sidebar_city_init () {
253
+ g_sidebar.init ();
254
+ }
255
+
256
+ void widget_sidebar_city_draw_foreground () {
257
+ g_sidebar.ui_draw_foreground ();
258
+ }
259
+
260
+ void widget_sidebar_city_draw_background () {
261
+ OZZY_PROFILER_SECTION (" Render/Frame/Window/City/Sidebar" );
262
+
263
+ if (city_view_is_sidebar_collapsed ()) {
264
+ draw_collapsed_background ();
265
+ } else {
266
+ g_sidebar.ui_draw_foreground ();
267
+ }
268
+ }
269
+
270
+ void widget_sidebar_city_draw_foreground_military (void ) {
271
+ widget_minimap_draw ({sidebar_common_get_x_offset_expanded () + 8 , MINIMAP_Y_OFFSET}, MINIMAP_WIDTH, MINIMAP_HEIGHT, 1 );
272
+ }
273
+
262
274
int widget_sidebar_city_handle_mouse (const mouse* m) {
263
275
if (widget_city_has_input ()) {
264
276
return false ;
265
277
}
266
278
279
+ g_sidebar.ui_handle_mouse (m);
280
+
267
281
bool handled = false ;
268
282
int button_id;
269
283
auto & data = g_sidebar;
@@ -352,15 +366,6 @@ static void button_messages(int param1, int param2) {
352
366
static void button_help (int param1, int param2) {
353
367
window_message_dialog_show (param2, -1 , window_city_draw_all);
354
368
}
355
- static void button_go_to_problem (int param1, int param2) {
356
- int grid_offset = city_message_next_problem_area_grid_offset ();
357
- if (grid_offset) {
358
- camera_go_to_mappoint (map_point (grid_offset));
359
- window_city_show ();
360
- } else {
361
- window_invalidate ();
362
- }
363
- }
364
369
365
370
static void button_advisors (int param1, int param2) {
366
371
window_advisors_show_checked ();
0 commit comments