288 static void TownViewWndProc(Window *w, WindowEvent *e) |
289 static void TownViewWndProc(Window *w, WindowEvent *e) |
289 { |
290 { |
290 Town *t = GetTown(w->window_number); |
291 Town *t = GetTown(w->window_number); |
291 |
292 |
292 switch (e->event) { |
293 switch (e->event) { |
293 case WE_CREATE: |
294 case WE_CREATE: { |
|
295 bool ingame = _game_mode != GM_EDITOR; |
294 if (t->larger_town) w->widget[TVW_CAPTION].data = STR_CITY; |
296 if (t->larger_town) w->widget[TVW_CAPTION].data = STR_CITY; |
295 break; |
297 w->SetWidgetHiddenState(TVW_DELETE, ingame); // hide delete button on game mode |
|
298 w->SetWidgetHiddenState(TVW_EXPAND, ingame); // hide expand button on game mode |
|
299 w->SetWidgetHiddenState(TVW_SHOWAUTORITY, !ingame); // hide autority button on editor mode |
|
300 |
|
301 if (ingame) { |
|
302 /* resize caption bar */ |
|
303 w->widget[TVW_CAPTION].right = w->widget[TVW_STICKY].left -1; |
|
304 /* move the rename from top on scenario to bottom in game */ |
|
305 w->widget[TVW_CHANGENAME].top = w->widget[TVW_EXPAND].top; |
|
306 w->widget[TVW_CHANGENAME].bottom = w->widget[TVW_EXPAND].bottom; |
|
307 w->widget[TVW_CHANGENAME].right = w->widget[TVW_STICKY].right; |
|
308 } |
|
309 } break; |
296 |
310 |
297 case WE_PAINT: |
311 case WE_PAINT: |
298 /* disable renaming town in network games if you are not the server */ |
312 /* disable renaming town in network games if you are not the server */ |
299 w->SetWidgetDisabledState(TVW_CHANGENAME, _networking && !_network_server); |
313 w->SetWidgetDisabledState(TVW_CHANGENAME, _networking && !_network_server); |
300 |
314 |
351 } |
365 } |
352 |
366 |
353 |
367 |
354 static const Widget _town_view_widgets[] = { |
368 static const Widget _town_view_widgets[] = { |
355 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
369 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
356 { WWT_CAPTION, RESIZE_NONE, 13, 11, 247, 0, 13, STR_2005, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
370 { WWT_CAPTION, RESIZE_NONE, 13, 11, 172, 0, 13, STR_2005, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
357 { WWT_STICKYBOX, RESIZE_NONE, 13, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, |
371 { WWT_STICKYBOX, RESIZE_NONE, 13, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, |
358 { WWT_PANEL, RESIZE_NONE, 13, 0, 259, 14, 105, 0x0, STR_NULL}, |
372 { WWT_PANEL, RESIZE_NONE, 13, 0, 259, 14, 105, 0x0, STR_NULL}, |
359 { WWT_INSET, RESIZE_NONE, 13, 2, 257, 16, 103, 0x0, STR_NULL}, |
373 { WWT_INSET, RESIZE_NONE, 13, 2, 257, 16, 103, 0x0, STR_NULL}, |
360 { WWT_PANEL, RESIZE_NONE, 13, 0, 259, 106, 137, 0x0, STR_NULL}, |
374 { WWT_PANEL, RESIZE_NONE, 13, 0, 259, 106, 137, 0x0, STR_NULL}, |
361 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 0, 85, 138, 149, STR_00E4_LOCATION, STR_200B_CENTER_THE_MAIN_VIEW_ON}, |
375 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 0, 85, 138, 149, STR_00E4_LOCATION, STR_200B_CENTER_THE_MAIN_VIEW_ON}, |
362 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 86, 171, 138, 149, STR_2020_LOCAL_AUTHORITY, STR_2021_SHOW_INFORMATION_ON_LOCAL}, |
376 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 86, 171, 138, 149, STR_2020_LOCAL_AUTHORITY, STR_2021_SHOW_INFORMATION_ON_LOCAL}, |
363 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 172, 259, 138, 149, STR_0130_RENAME, STR_200C_CHANGE_TOWN_NAME}, |
377 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 172, 247, 0, 13, STR_0130_RENAME, STR_200C_CHANGE_TOWN_NAME}, |
|
378 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 86, 171, 138, 149, STR_023C_EXPAND, STR_023B_INCREASE_SIZE_OF_TOWN}, |
|
379 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 172, 259, 138, 149, STR_0290_DELETE, STR_0291_DELETE_THIS_TOWN_COMPLETELY}, |
364 { WIDGETS_END}, |
380 { WIDGETS_END}, |
365 }; |
381 }; |
366 |
382 |
367 static const WindowDesc _town_view_desc = { |
383 static const WindowDesc _town_view_desc = { |
368 WDP_AUTO, WDP_AUTO, 260, 150, 260, 150, |
384 WDP_AUTO, WDP_AUTO, 260, 150, 260, 150, |
370 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, |
386 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, |
371 _town_view_widgets, |
387 _town_view_widgets, |
372 TownViewWndProc |
388 TownViewWndProc |
373 }; |
389 }; |
374 |
390 |
375 static const Widget _town_view_scen_widgets[] = { |
|
376 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
|
377 { WWT_CAPTION, RESIZE_NONE, 13, 11, 172, 0, 13, STR_2005, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
|
378 { WWT_STICKYBOX, RESIZE_NONE, 13, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, |
|
379 { WWT_PANEL, RESIZE_NONE, 13, 0, 259, 14, 105, 0x0, STR_NULL}, |
|
380 { WWT_INSET, RESIZE_NONE, 13, 2, 257, 16, 103, 0x0, STR_NULL}, |
|
381 { WWT_PANEL, RESIZE_NONE, 13, 0, 259, 106, 137, 0x0, STR_NULL}, |
|
382 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 0, 85, 138, 149, STR_00E4_LOCATION, STR_200B_CENTER_THE_MAIN_VIEW_ON}, |
|
383 { WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, |
|
384 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 173, 247, 0, 13, STR_0130_RENAME, STR_200C_CHANGE_TOWN_NAME}, |
|
385 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 86, 171, 138, 149, STR_023C_EXPAND, STR_023B_INCREASE_SIZE_OF_TOWN}, |
|
386 { WWT_PUSHTXTBTN, RESIZE_NONE, 13, 172, 259, 138, 149, STR_0290_DELETE, STR_0291_DELETE_THIS_TOWN_COMPLETELY}, |
|
387 { WIDGETS_END}, |
|
388 }; |
|
389 |
|
390 static const WindowDesc _town_view_scen_desc = { |
|
391 WDP_AUTO, WDP_AUTO, 260, 150, 260, 150, |
|
392 WC_TOWN_VIEW, WC_NONE, |
|
393 WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, |
|
394 _town_view_scen_widgets, |
|
395 TownViewWndProc |
|
396 }; |
|
397 |
|
398 void ShowTownViewWindow(TownID town) |
391 void ShowTownViewWindow(TownID town) |
399 { |
392 { |
400 Window *w; |
393 Window *w; |
401 |
394 |
402 if (_game_mode != GM_EDITOR) { |
395 w = AllocateWindowDescFront(&_town_view_desc, town); |
403 w = AllocateWindowDescFront(&_town_view_desc, town); |
|
404 } else { |
|
405 w = AllocateWindowDescFront(&_town_view_scen_desc, town); |
|
406 } |
|
407 |
396 |
408 if (w != NULL) { |
397 if (w != NULL) { |
409 w->flags4 |= WF_DISABLE_VP_SCROLL; |
398 w->flags4 |= WF_DISABLE_VP_SCROLL; |
410 AssignWindowViewport(w, 3, 17, 0xFE, 0x56, GetTown(town)->xy, ZOOM_LVL_TOWN); |
399 AssignWindowViewport(w, 3, 17, 0xFE, 0x56, GetTown(town)->xy, ZOOM_LVL_TOWN); |
411 } |
400 } |