1
0
Fork 0

(svn r1214) -Feature: Stickified Industries (list & window), Smallmaps (all three), Stations (list & window) and Towns (list & window). I hope I didn't forget to update a widget somewhere :O

-Feature: With the sticky windows on and some unfortunate resizing of your game it the 'close' button might go outside of the playing field, making it impossible to close. Added an option to the Options menu that closes all windows, even if they are stickified ("Close ALL windows")
release/0.4.5
darkvater 2004-12-22 01:32:30 +00:00
parent f55303b0a8
commit 46af99b8c0
6 changed files with 113 additions and 80 deletions

View File

@ -315,11 +315,11 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
case WE_CLICK: case WE_CLICK:
switch(e->click.widget) { switch(e->click.widget) {
case 5: case 6:
i = DEREF_INDUSTRY(w->window_number); i = DEREF_INDUSTRY(w->window_number);
ScrollMainWindowToTile(i->xy + TILE_XY(1,1)); ScrollMainWindowToTile(i->xy + TILE_XY(1,1));
break; break;
case 6: case 7:
// Destroy Industry button costing money removed per request of dominik // Destroy Industry button costing money removed per request of dominik
//i = DEREF_INDUSTRY(w->window_number); //i = DEREF_INDUSTRY(w->window_number);
/* passing only i->xy is not safe if industry has a weird shape like: /* passing only i->xy is not safe if industry has a weird shape like:
@ -337,7 +337,8 @@ static void IndustryViewWndProc(Window *w, WindowEvent *e)
static const Widget _industry_view_widgets[] = { static const Widget _industry_view_widgets[] = {
{ WWT_TEXTBTN, 9, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_TEXTBTN, 9, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 9, 11, 259, 0, 13, STR_4801, STR_018C_WINDOW_TITLE_DRAG_THIS}, { WWT_CAPTION, 9, 11, 247, 0, 13, STR_4801, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 9, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, 9, 0, 259, 14, 105, 0x0, STR_NULL}, { WWT_IMGBTN, 9, 0, 259, 14, 105, 0x0, STR_NULL},
{ WWT_6, 9, 2, 257, 16, 103, 0x0, STR_NULL}, { WWT_6, 9, 2, 257, 16, 103, 0x0, STR_NULL},
{ WWT_IMGBTN, 9, 0, 259, 106, 147, 0x0, STR_NULL}, { WWT_IMGBTN, 9, 0, 259, 106, 147, 0x0, STR_NULL},
@ -351,7 +352,7 @@ static const Widget _industry_view_widgets[] = {
static const WindowDesc _industry_view_desc = { static const WindowDesc _industry_view_desc = {
-1, -1, 260, 160, -1, -1, 260, 160,
WC_INDUSTRY_VIEW,0, WC_INDUSTRY_VIEW,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
_industry_view_widgets, _industry_view_widgets,
IndustryViewWndProc IndustryViewWndProc
}; };
@ -371,7 +372,8 @@ void ShowIndustryViewWindow(int industry)
static const Widget _industry_directory_widgets[] = { static const Widget _industry_directory_widgets[] = {
{ WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 13, 11, 507, 0, 13, STR_INDUSTRYDIR_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, { WWT_CAPTION, 13, 11, 495, 0, 13, STR_INDUSTRYDIR_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 13, 496, 507, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PUSHTXTBTN, 13, 0, 100, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP}, { WWT_PUSHTXTBTN, 13, 0, 100, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 13, 101, 200, 14, 25, STR_SORT_BY_TYPE, STR_SORT_ORDER_TIP}, { WWT_PUSHTXTBTN, 13, 101, 200, 14, 25, STR_SORT_BY_TYPE, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 13, 201, 300, 14, 25, STR_SORT_BY_PRODUCTION, STR_SORT_ORDER_TIP}, { WWT_PUSHTXTBTN, 13, 201, 300, 14, 25, STR_SORT_BY_PRODUCTION, STR_SORT_ORDER_TIP},
@ -520,31 +522,31 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
case WE_CLICK: case WE_CLICK:
switch(e->click.widget) { switch(e->click.widget) {
case 2: { case 3: {
_industry_sort_order = _industry_sort_order==0 ? 1 : 0; _industry_sort_order = _industry_sort_order==0 ? 1 : 0;
_industry_sort_dirty = true; _industry_sort_dirty = true;
SetWindowDirty(w); SetWindowDirty(w);
} break; } break;
case 3: { case 4: {
_industry_sort_order = _industry_sort_order==2 ? 3 : 2; _industry_sort_order = _industry_sort_order==2 ? 3 : 2;
_industry_sort_dirty = true; _industry_sort_dirty = true;
SetWindowDirty(w); SetWindowDirty(w);
} break; } break;
case 4: { case 5: {
_industry_sort_order = _industry_sort_order==4 ? 5 : 4; _industry_sort_order = _industry_sort_order==4 ? 5 : 4;
_industry_sort_dirty = true; _industry_sort_dirty = true;
SetWindowDirty(w); SetWindowDirty(w);
} break; } break;
case 5: { case 6: {
_industry_sort_order = _industry_sort_order==6 ? 7 : 6; _industry_sort_order = _industry_sort_order==6 ? 7 : 6;
_industry_sort_dirty = true; _industry_sort_dirty = true;
SetWindowDirty(w); SetWindowDirty(w);
} break; } break;
case 7: { case 8: {
int y = (e->click.pt.y - 28) / 10; int y = (e->click.pt.y - 28) / 10;
byte p; byte p;
Industry *c; Industry *c;
@ -571,7 +573,7 @@ static void IndustryDirectoryWndProc(Window *w, WindowEvent *e)
static const WindowDesc _industry_directory_desc = { static const WindowDesc _industry_directory_desc = {
-1, -1, 508, 190, -1, -1, 508, 190,
WC_INDUSTRY_DIRECTORY,0, WC_INDUSTRY_DIRECTORY,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
_industry_directory_widgets, _industry_directory_widgets,
IndustryDirectoryWndProc IndustryDirectoryWndProc
}; };

View File

@ -742,6 +742,8 @@ STR_NEWGRF_SETTINGS :Newgrf settings
STR_NEWGRF_SETTINGS2 :Newgrf settings STR_NEWGRF_SETTINGS2 :Newgrf settings
STR_GAMEOPTMENU_0A : STR_GAMEOPTMENU_0A :
STR_GAMEOPTMENU_0B : STR_GAMEOPTMENU_0B :
STR_CLOSE_ALL_WINDOWS :Close ALL windows
STR_CLOSE_ALL_WINDOWS2 :Close ALL windows
STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Town names displayed STR_02C9_TOWN_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Town names displayed
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Town names displayed STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Town names displayed
STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Station names displayed STR_02CB_STATION_NAMES_DISPLAYED :{CHECKMARK}{SETX 12}Station names displayed

View File

@ -152,6 +152,25 @@ static void ToolbarFastForwardClick(Window *w)
SndPlayFx(SND_15_BEEP); SndPlayFx(SND_15_BEEP);
} }
/* It is possible that a stickied window gets to a position where the
* 'close' button is outside the gaming area. You cannot close it then; except
* with this function. It closes all windows calling the standard function,
* then, does a little hacked loop of closing all stickied windows. Note
* that standard windows (status bar, etc.) are not stickied, so these aren't affected */
static void CloseEveryWindow(void)
{
Window *w;
// Delete every window except for stickied ones
DeleteNonVitalWindows();
// Delete all sticked windows
for (w = _windows; w != _last_window;) {
if (w->flags4 & WF_STICKY) {
DeleteWindow(w);
w = _windows;
} else
w++;
}
}
typedef void MenuClickedProc(int index); typedef void MenuClickedProc(int index);
@ -164,13 +183,14 @@ static void MenuClickSettings(int index)
case 2: ShowPatchesSelection(); return; case 2: ShowPatchesSelection(); return;
case 3: ShowNewgrf(); return; case 3: ShowNewgrf(); return;
case 5: _display_opt ^= DO_SHOW_TOWN_NAMES; MarkWholeScreenDirty(); return; case 5: CloseEveryWindow(); return;
case 6: _display_opt ^= DO_SHOW_STATION_NAMES; MarkWholeScreenDirty(); return; case 6: _display_opt ^= DO_SHOW_TOWN_NAMES; MarkWholeScreenDirty(); return;
case 7: _display_opt ^= DO_SHOW_SIGNS; MarkWholeScreenDirty(); return; case 7: _display_opt ^= DO_SHOW_STATION_NAMES; MarkWholeScreenDirty(); return;
case 8: _display_opt ^= DO_WAYPOINTS; MarkWholeScreenDirty(); return; case 8: _display_opt ^= DO_SHOW_SIGNS; MarkWholeScreenDirty(); return;
case 9: _display_opt ^= DO_FULL_ANIMATION; MarkWholeScreenDirty(); return; case 9: _display_opt ^= DO_WAYPOINTS; MarkWholeScreenDirty(); return;
case 10: _display_opt ^= DO_FULL_DETAIL; MarkWholeScreenDirty(); return; case 10: _display_opt ^= DO_FULL_ANIMATION; MarkWholeScreenDirty(); return;
case 11: _display_opt ^= DO_TRANS_BUILDINGS; MarkWholeScreenDirty(); return; case 11: _display_opt ^= DO_FULL_DETAIL; MarkWholeScreenDirty(); return;
case 12: _display_opt ^= DO_TRANS_BUILDINGS; MarkWholeScreenDirty(); return;
} }
} }
@ -985,16 +1005,16 @@ static void ToolbarOptionsClick(Window *w)
{ {
uint16 x; uint16 x;
w = PopupMainToolbMenu(w, 43, 2, STR_02C3_GAME_OPTIONS, 12); w = PopupMainToolbMenu(w, 43, 2, STR_02C3_GAME_OPTIONS, 13);
x = (uint16)-1; x = (uint16)-1;
if (_display_opt & DO_SHOW_TOWN_NAMES) x &= ~(1<<5); if (_display_opt & DO_SHOW_TOWN_NAMES) x &= ~(1<<6);
if (_display_opt & DO_SHOW_STATION_NAMES) x &= ~(1<<6); if (_display_opt & DO_SHOW_STATION_NAMES) x &= ~(1<<7);
if (_display_opt & DO_SHOW_SIGNS) x &= ~(1<<7); if (_display_opt & DO_SHOW_SIGNS) x &= ~(1<<8);
if (_display_opt & DO_WAYPOINTS) x &= ~(1<<8); if (_display_opt & DO_WAYPOINTS) x &= ~(1<<9);
if (_display_opt & DO_FULL_ANIMATION) x &= ~(1<<9); if (_display_opt & DO_FULL_ANIMATION) x &= ~(1<<10);
if (_display_opt & DO_FULL_DETAIL) x &= ~(1<<10); if (_display_opt & DO_FULL_DETAIL) x &= ~(1<<11);
if (_display_opt & DO_TRANS_BUILDINGS) x &= ~(1<<11); if (_display_opt & DO_TRANS_BUILDINGS) x &= ~(1<<12);
WP(w,menu_d).checked_items = x; WP(w,menu_d).checked_items = x;
} }

View File

@ -13,7 +13,8 @@
static const Widget _smallmap_megabig_widgets[] = { static const Widget _smallmap_megabig_widgets[] = {
{ WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 13, 11, 592, 0, 13, STR_00B0_MAP,STR_018C_WINDOW_TITLE_DRAG_THIS}, { WWT_CAPTION, 13, 11, 580, 0, 13, STR_00B0_MAP,STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 13, 581, 592, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, 13, 593, 606, 0, 13, 0x2AA, STR_01CC_TOGGLE_LARGE_SMALL_MAP}, { WWT_IMGBTN, 13, 593, 606, 0, 13, 0x2AA, STR_01CC_TOGGLE_LARGE_SMALL_MAP},
{ WWT_IMGBTN, 13, 0, 606, 14, 407, 0x0, STR_NULL}, { WWT_IMGBTN, 13, 0, 606, 14, 407, 0x0, STR_NULL},
{ WWT_6, 13, 2, 604, 16, 405, 0x0, STR_NULL}, { WWT_6, 13, 2, 604, 16, 405, 0x0, STR_NULL},
@ -31,7 +32,8 @@ static const Widget _smallmap_megabig_widgets[] = {
static const Widget _smallmap_big_widgets[] = { static const Widget _smallmap_big_widgets[] = {
{ WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 13, 11, 431, 0, 13, STR_00B0_MAP,STR_018C_WINDOW_TITLE_DRAG_THIS}, { WWT_CAPTION, 13, 11, 419, 0, 13, STR_00B0_MAP,STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 13, 420, 431, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, 13, 432, 445, 0, 13, 0x2AA, STR_01CC_TOGGLE_LARGE_SMALL_MAP}, { WWT_IMGBTN, 13, 432, 445, 0, 13, 0x2AA, STR_01CC_TOGGLE_LARGE_SMALL_MAP},
{ WWT_IMGBTN, 13, 0, 445, 14, 257, 0x0, STR_NULL}, { WWT_IMGBTN, 13, 0, 445, 14, 257, 0x0, STR_NULL},
{ WWT_6, 13, 2, 443, 16, 255, 0x0, STR_NULL}, { WWT_6, 13, 2, 443, 16, 255, 0x0, STR_NULL},
@ -50,7 +52,8 @@ static const Widget _smallmap_big_widgets[] = {
static const Widget _smallmap_small_widgets[] = { static const Widget _smallmap_small_widgets[] = {
{ WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 13, 11, 233, 0, 13, STR_00B0_MAP,STR_018C_WINDOW_TITLE_DRAG_THIS}, { WWT_CAPTION, 13, 11, 221, 0, 13, STR_00B0_MAP,STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 13, 222, 233, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, 13, 234, 247, 0, 13, 0x2AA, STR_01CC_TOGGLE_LARGE_SMALL_MAP}, { WWT_IMGBTN, 13, 234, 247, 0, 13, 0x2AA, STR_01CC_TOGGLE_LARGE_SMALL_MAP},
{ WWT_IMGBTN, 13, 0, 225, 14, 167, 0x0, STR_NULL}, { WWT_IMGBTN, 13, 0, 225, 14, 167, 0x0, STR_NULL},
{ WWT_6, 13, 2, 223, 16, 165, 0x0, STR_NULL}, { WWT_6, 13, 2, 223, 16, 165, 0x0, STR_NULL},
@ -879,7 +882,7 @@ static void SmallMapWindowProc(Window *w, WindowEvent *e)
case WE_CLICK: case WE_CLICK:
switch(e->click.widget) { switch(e->click.widget) {
case 2: {/* big/small size */ case 3: {/* big/small size */
// const Widget *wi = w->widget; // const Widget *wi = w->widget;
DeleteWindow(w); DeleteWindow(w);
SndPlayFx(SND_15_BEEP); SndPlayFx(SND_15_BEEP);
@ -890,7 +893,7 @@ static void SmallMapWindowProc(Window *w, WindowEvent *e)
} }
} break; } break;
case 4: {/* main wnd */ case 5: {/* main wnd */
Window *w2; Window *w2;
Point pt; Point pt;
@ -903,23 +906,23 @@ static void SmallMapWindowProc(Window *w, WindowEvent *e)
WP(w2,vp_d).scrollpos_y = pt.y + ((_cursor.pos.y - w->top - 16) << 4) - (w2->viewport->virtual_height >> 1); WP(w2,vp_d).scrollpos_y = pt.y + ((_cursor.pos.y - w->top - 16) << 4) - (w2->viewport->virtual_height >> 1);
} break; } break;
case 5: /* show land contours */ case 6: /* show land contours */
case 6: /* show vehicles */ case 7: /* show vehicles */
case 7: /* show industries */ case 8: /* show industries */
case 8: /* show transport routes */ case 9: /* show transport routes */
case 9: /* show vegetation */ case 10: /* show vegetation */
case 10: /* show land owners */ case 11: /* show land owners */
w->click_state &= ~(1<<5|1<<6|1<<7|1<<8|1<<9|1<<10); w->click_state &= ~(1<<6|1<<7|1<<8|1<<9|1<<10|1<<11);
w->click_state |= 1 << e->click.widget; w->click_state |= 1 << e->click.widget;
_smallmap_type = e->click.widget - 5; _smallmap_type = e->click.widget - 6;
SetWindowDirty(w); SetWindowDirty(w);
SndPlayFx(SND_15_BEEP); SndPlayFx(SND_15_BEEP);
break; break;
case 11: /* toggle town names */ case 12: /* toggle town names */
w->click_state ^= (1 << 11); w->click_state ^= (1 << 12);
_smallmap_show_towns = (w->click_state >> 11) & 1; _smallmap_show_towns = (w->click_state >> 12) & 1;
SetWindowDirty(w); SetWindowDirty(w);
SndPlayFx(SND_15_BEEP); SndPlayFx(SND_15_BEEP);
break; break;
@ -927,7 +930,7 @@ static void SmallMapWindowProc(Window *w, WindowEvent *e)
break; break;
case WE_RCLICK: case WE_RCLICK:
if (e->click.widget == 4) { if (e->click.widget == 5) {
if (_scrolling_viewport) if (_scrolling_viewport)
return; return;
_scrolling_viewport = true; _scrolling_viewport = true;
@ -947,7 +950,7 @@ static void SmallMapWindowProc(Window *w, WindowEvent *e)
static const WindowDesc _smallmap_small_desc = { static const WindowDesc _smallmap_small_desc = {
-1,-1, 248, 212, -1,-1, 248, 212,
WC_SMALLMAP,0, WC_SMALLMAP,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
_smallmap_small_widgets, _smallmap_small_widgets,
SmallMapWindowProc SmallMapWindowProc
}; };
@ -955,7 +958,7 @@ static const WindowDesc _smallmap_small_desc = {
static const WindowDesc _smallmap_big_desc = { static const WindowDesc _smallmap_big_desc = {
-1,-1, 446, 302, -1,-1, 446, 302,
WC_SMALLMAP,0, WC_SMALLMAP,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
_smallmap_big_widgets, _smallmap_big_widgets,
SmallMapWindowProc SmallMapWindowProc
}; };
@ -963,7 +966,7 @@ static const WindowDesc _smallmap_big_desc = {
static const WindowDesc _smallmap_megabig_desc = { static const WindowDesc _smallmap_megabig_desc = {
-1,-1, 607, 452, -1,-1, 607, 452,
WC_SMALLMAP,0, WC_SMALLMAP,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
_smallmap_megabig_widgets, _smallmap_megabig_widgets,
SmallMapWindowProc SmallMapWindowProc
}; };
@ -984,7 +987,7 @@ static void DoShowSmallMap(int big)
w = AllocateWindowDescFront(_smallmap_descs[big], 0); w = AllocateWindowDescFront(_smallmap_descs[big], 0);
if (w) { if (w) {
w->click_state = (1<<5) << _smallmap_type | _smallmap_show_towns << 11; w->click_state = (1<<6) << _smallmap_type | _smallmap_show_towns << 12;
vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport; vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport;
x = (((vp->virtual_width - (big?220*32:110*32)) >> 1) + vp->virtual_left) >> 2; x = (((vp->virtual_width - (big?220*32:110*32)) >> 1) + vp->virtual_left) >> 2;

View File

@ -195,7 +195,7 @@ static void PlayerStationsWndProc(Window *w, WindowEvent *e)
} break; } break;
case WE_CLICK: { case WE_CLICK: {
switch(e->click.widget) { switch(e->click.widget) {
case 2: { case 3: {
uint32 id_v = (e->click.pt.y - 15) / 10; uint32 id_v = (e->click.pt.y - 15) / 10;
if (id_v >= w->vscroll.cap) { return;} // click out of bounds if (id_v >= w->vscroll.cap) { return;} // click out of bounds
@ -231,7 +231,8 @@ static void PlayerStationsWndProc(Window *w, WindowEvent *e)
static const Widget _player_stations_widgets[] = { static const Widget _player_stations_widgets[] = {
{ WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_CLOSEBOX, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 357, 0, 13, STR_3048_STATIONS, STR_018C_WINDOW_TITLE_DRAG_THIS}, { WWT_CAPTION, 14, 11, 345, 0, 13, STR_3048_STATIONS, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 14, 346, 357, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PANEL, 14, 0, 346, 14, 137, 0x0, STR_3057_STATION_NAMES_CLICK_ON}, { WWT_PANEL, 14, 0, 346, 14, 137, 0x0, STR_3057_STATION_NAMES_CLICK_ON},
{ WWT_SCROLLBAR, 14, 347, 357, 14, 137, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, { WWT_SCROLLBAR, 14, 347, 357, 14, 137, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WIDGETS_END}, { WIDGETS_END},
@ -240,7 +241,7 @@ static const Widget _player_stations_widgets[] = {
static const WindowDesc _player_stations_desc = { static const WindowDesc _player_stations_desc = {
-1, -1, 358, 138, -1, -1, 358, 138,
WC_STATION_LIST,0, WC_STATION_LIST,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
_player_stations_widgets, _player_stations_widgets,
PlayerStationsWndProc PlayerStationsWndProc
}; };
@ -259,7 +260,8 @@ void ShowPlayerStations(int player)
static const Widget _station_view_expanded_widgets[] = { static const Widget _station_view_expanded_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 248, 0, 13, STR_300A_0, STR_018C_WINDOW_TITLE_DRAG_THIS}, { WWT_CAPTION, 14, 11, 236, 0, 13, STR_300A_0, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 14, 237, 248, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, 14, 0, 237, 14, 65, 0x0, STR_NULL}, { WWT_IMGBTN, 14, 0, 237, 14, 65, 0x0, STR_NULL},
{ WWT_SCROLLBAR, 14, 238, 248, 14, 65, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, { WWT_SCROLLBAR, 14, 238, 248, 14, 65, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL}, { WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
@ -276,7 +278,8 @@ static const Widget _station_view_expanded_widgets[] = {
static const Widget _station_view_widgets[] = { static const Widget _station_view_widgets[] = {
{ WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_TEXTBTN, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 14, 11, 248, 0, 13, STR_300A_0, STR_018C_WINDOW_TITLE_DRAG_THIS}, { WWT_CAPTION, 14, 11, 236, 0, 13, STR_300A_0, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 14, 237, 248, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, 14, 0, 237, 14, 65, 0x0, STR_NULL}, { WWT_IMGBTN, 14, 0, 237, 14, 65, 0x0, STR_NULL},
{ WWT_SCROLLBAR, 14, 238, 248, 14, 65, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, { WWT_SCROLLBAR, 14, 238, 248, 14, 65, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
{ WWT_IMGBTN, 14, 0, 248, 66, 97, 0x0, STR_NULL}, { WWT_IMGBTN, 14, 0, 248, 66, 97, 0x0, STR_NULL},
@ -317,13 +320,13 @@ static void DrawStationViewWindow(Window *w)
} }
SetVScrollCount(w, num); SetVScrollCount(w, num);
w->disabled_state = st->owner == _local_player ? 0 : (1 << 8); w->disabled_state = st->owner == _local_player ? 0 : (1 << 9);
if (!(st->facilities & FACIL_TRAIN)) SETBIT(w->disabled_state, 9); if (!(st->facilities & FACIL_TRAIN)) SETBIT(w->disabled_state, 10);
if (!(st->facilities & FACIL_TRUCK_STOP) && if (!(st->facilities & FACIL_TRUCK_STOP) &&
!(st->facilities & FACIL_BUS_STOP)) SETBIT(w->disabled_state, 10); !(st->facilities & FACIL_BUS_STOP)) SETBIT(w->disabled_state, 11);
if (!(st->facilities & FACIL_AIRPORT)) SETBIT(w->disabled_state, 11); if (!(st->facilities & FACIL_AIRPORT)) SETBIT(w->disabled_state, 12);
if (!(st->facilities & FACIL_DOCK)) SETBIT(w->disabled_state, 12); if (!(st->facilities & FACIL_DOCK)) SETBIT(w->disabled_state, 13);
SetDParam(0, st->index); SetDParam(0, st->index);
SetDParam(1, st->facilities); SetDParam(1, st->facilities);
@ -438,11 +441,11 @@ static void StationViewWndProc(Window *w, WindowEvent *e)
case WE_CLICK: case WE_CLICK:
switch(e->click.widget) { switch(e->click.widget) {
case 6: case 7:
ScrollMainWindowToTile(DEREF_STATION(w->window_number)->xy); ScrollMainWindowToTile(DEREF_STATION(w->window_number)->xy);
break; break;
case 7: case 8:
SetWindowDirty(w); SetWindowDirty(w);
/* toggle height/widget set */ /* toggle height/widget set */
@ -452,32 +455,32 @@ static void StationViewWndProc(Window *w, WindowEvent *e)
SetWindowDirty(w); SetWindowDirty(w);
break; break;
case 8: { case 9: {
Station *st = DEREF_STATION(w->window_number); Station *st = DEREF_STATION(w->window_number);
SetDParam(0, st->town->townnametype); SetDParam(0, st->town->townnametype);
SetDParam(1, st->town->townnameparts); SetDParam(1, st->town->townnameparts);
ShowQueryString(st->string_id, STR_3030_RENAME_STATION_LOADING, 31, 180, w->window_class, w->window_number); ShowQueryString(st->string_id, STR_3030_RENAME_STATION_LOADING, 31, 180, w->window_class, w->window_number);
} break; } break;
case 9: { case 10: {
const Station *st = DEREF_STATION(w->window_number); const Station *st = DEREF_STATION(w->window_number);
ShowPlayerTrains(st->owner, w->window_number); ShowPlayerTrains(st->owner, w->window_number);
break; break;
} }
case 10: { case 11: {
const Station *st = DEREF_STATION(w->window_number); const Station *st = DEREF_STATION(w->window_number);
ShowPlayerRoadVehicles(st->owner, w->window_number); ShowPlayerRoadVehicles(st->owner, w->window_number);
break; break;
} }
case 11: { case 12: {
const Station *st = DEREF_STATION(w->window_number); const Station *st = DEREF_STATION(w->window_number);
ShowPlayerAircraft(st->owner, w->window_number); ShowPlayerAircraft(st->owner, w->window_number);
break; break;
} }
case 12: { case 13: {
const Station *st = DEREF_STATION(w->window_number); const Station *st = DEREF_STATION(w->window_number);
ShowPlayerShips(st->owner, w->window_number); ShowPlayerShips(st->owner, w->window_number);
break; break;
@ -513,7 +516,7 @@ static void StationViewWndProc(Window *w, WindowEvent *e)
static const WindowDesc _station_view_desc = { static const WindowDesc _station_view_desc = {
-1, -1, 249, 110, -1, -1, 249, 110,
WC_STATION_VIEW,0, WC_STATION_VIEW,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
_station_view_widgets, _station_view_widgets,
StationViewWndProc StationViewWndProc
}; };

View File

@ -247,20 +247,20 @@ static void TownViewWndProc(Window *w, WindowEvent *e)
case WE_CLICK: case WE_CLICK:
switch(e->click.widget) { switch(e->click.widget) {
case 5: /* scroll to location */ case 6: /* scroll to location */
ScrollMainWindowToTile(t->xy); ScrollMainWindowToTile(t->xy);
break; break;
case 6: /* town authority */ case 7: /* town authority */
ShowTownAuthorityWindow(w->window_number); ShowTownAuthorityWindow(w->window_number);
break; break;
case 7: /* rename */ case 8: /* rename */
SetDParam(0, t->townnameparts); SetDParam(0, t->townnameparts);
ShowQueryString(t->townnametype, STR_2007_RENAME_TOWN, 31, 130, w->window_class, w->window_number); ShowQueryString(t->townnametype, STR_2007_RENAME_TOWN, 31, 130, w->window_class, w->window_number);
break; break;
case 8: /* expand town */ case 9: /* expand town */
ExpandTown(t); ExpandTown(t);
break; break;
case 9: /* delete town */ case 10: /* delete town */
DeleteTown(t); DeleteTown(t);
break; break;
} }
@ -279,7 +279,8 @@ static void TownViewWndProc(Window *w, WindowEvent *e)
static const Widget _town_view_widgets[] = { static const Widget _town_view_widgets[] = {
{ WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 13, 11, 259, 0, 13, STR_2005, STR_018C_WINDOW_TITLE_DRAG_THIS}, { WWT_CAPTION, 13, 11, 247, 0, 13, STR_2005, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 13, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, 13, 0, 259, 14, 105, 0x0, STR_NULL}, { WWT_IMGBTN, 13, 0, 259, 14, 105, 0x0, STR_NULL},
{ WWT_6, 13, 2, 257, 16, 103, 0x0, STR_NULL}, { WWT_6, 13, 2, 257, 16, 103, 0x0, STR_NULL},
{ WWT_IMGBTN, 13, 0, 259, 106, 137, 0x0, STR_NULL}, { WWT_IMGBTN, 13, 0, 259, 106, 137, 0x0, STR_NULL},
@ -292,20 +293,21 @@ static const Widget _town_view_widgets[] = {
static const WindowDesc _town_view_desc = { static const WindowDesc _town_view_desc = {
-1, -1, 260, 150, -1, -1, 260, 150,
WC_TOWN_VIEW,0, WC_TOWN_VIEW,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
_town_view_widgets, _town_view_widgets,
TownViewWndProc TownViewWndProc
}; };
static const Widget _town_view_scen_widgets[] = { static const Widget _town_view_scen_widgets[] = {
{ WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 13, 11, 184, 0, 13, STR_2005, STR_018C_WINDOW_TITLE_DRAG_THIS}, { WWT_CAPTION, 13, 11, 172, 0, 13, STR_2005, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 13, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_IMGBTN, 13, 0, 259, 14, 105, 0x0, STR_NULL}, { WWT_IMGBTN, 13, 0, 259, 14, 105, 0x0, STR_NULL},
{ WWT_6, 13, 2, 257, 16, 103, 0x0, STR_NULL}, { WWT_6, 13, 2, 257, 16, 103, 0x0, STR_NULL},
{ WWT_IMGBTN, 13, 0, 259, 106, 137, 0x0, STR_NULL}, { WWT_IMGBTN, 13, 0, 259, 106, 137, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, 13, 0, 85, 138, 149, STR_00E4_LOCATION, STR_200B_CENTER_THE_MAIN_VIEW_ON}, { WWT_PUSHTXTBTN, 13, 0, 85, 138, 149, STR_00E4_LOCATION, STR_200B_CENTER_THE_MAIN_VIEW_ON},
{ WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL}, { WWT_EMPTY, 0, 0, 0, 0, 0, 0x0, STR_NULL},
{ WWT_PUSHTXTBTN, 13, 185, 259, 0, 13, STR_0130_RENAME, STR_200C_CHANGE_TOWN_NAME}, { WWT_PUSHTXTBTN, 13, 173, 247, 0, 13, STR_0130_RENAME, STR_200C_CHANGE_TOWN_NAME},
{ WWT_PUSHTXTBTN, 13, 86, 171, 138, 149, STR_023C_EXPAND, STR_023B_INCREASE_SIZE_OF_TOWN}, { WWT_PUSHTXTBTN, 13, 86, 171, 138, 149, STR_023C_EXPAND, STR_023B_INCREASE_SIZE_OF_TOWN},
{ WWT_PUSHTXTBTN, 13, 172, 259, 138, 149, STR_0290_DELETE, STR_0291_DELETE_THIS_TOWN_COMPLETELY}, { WWT_PUSHTXTBTN, 13, 172, 259, 138, 149, STR_0290_DELETE, STR_0291_DELETE_THIS_TOWN_COMPLETELY},
{ WIDGETS_END}, { WIDGETS_END},
@ -314,7 +316,7 @@ static const Widget _town_view_scen_widgets[] = {
static const WindowDesc _town_view_scen_desc = { static const WindowDesc _town_view_scen_desc = {
-1, -1, 260, 150, -1, -1, 260, 150,
WC_TOWN_VIEW,0, WC_TOWN_VIEW,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
_town_view_scen_widgets, _town_view_scen_widgets,
TownViewWndProc TownViewWndProc
}; };
@ -339,7 +341,8 @@ void ShowTownViewWindow(uint town)
static const Widget _town_directory_widgets[] = { static const Widget _town_directory_widgets[] = {
{ WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, { WWT_TEXTBTN, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, 13, 11, 207, 0, 13, STR_2000_TOWNS, STR_018C_WINDOW_TITLE_DRAG_THIS}, { WWT_CAPTION, 13, 11, 195, 0, 13, STR_2000_TOWNS, STR_018C_WINDOW_TITLE_DRAG_THIS},
{ WWT_STICKYBOX, 13, 196, 207, 0, 13, 0x0, STR_STICKY_BUTTON},
{ WWT_PUSHTXTBTN, 13, 0, 98, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP}, { WWT_PUSHTXTBTN, 13, 0, 98, 14, 25, STR_SORT_BY_NAME, STR_SORT_ORDER_TIP},
{ WWT_PUSHTXTBTN, 13, 99, 196, 14, 25, STR_SORT_BY_POPULATION,STR_SORT_ORDER_TIP}, { WWT_PUSHTXTBTN, 13, 99, 196, 14, 25, STR_SORT_BY_POPULATION,STR_SORT_ORDER_TIP},
{ WWT_IMGBTN, 13, 0, 196, 26, 189, 0x0, STR_200A_TOWN_NAMES_CLICK_ON_NAME}, { WWT_IMGBTN, 13, 0, 196, 26, 189, 0x0, STR_200A_TOWN_NAMES_CLICK_ON_NAME},
@ -440,19 +443,19 @@ static void TownDirectoryWndProc(Window *w, WindowEvent *e)
case WE_CLICK: case WE_CLICK:
switch(e->click.widget) { switch(e->click.widget) {
case 2: { /* Sort by Name ascending/descending */ case 3: { /* Sort by Name ascending/descending */
_town_sort_order = (_town_sort_order == 0) ? 1 : 0; _town_sort_order = (_town_sort_order == 0) ? 1 : 0;
_town_sort_dirty = true; _town_sort_dirty = true;
SetWindowDirty(w); SetWindowDirty(w);
} break; } break;
case 3: { /* Sort by Population ascending/descending */ case 4: { /* Sort by Population ascending/descending */
_town_sort_order = (_town_sort_order == 2) ? 3 : 2; _town_sort_order = (_town_sort_order == 2) ? 3 : 2;
_town_sort_dirty = true; _town_sort_dirty = true;
SetWindowDirty(w); SetWindowDirty(w);
} break; } break;
case 4: { /* Click on Town Matrix */ case 5: { /* Click on Town Matrix */
uint16 id_v = (e->click.pt.y - 28) / 10; uint16 id_v = (e->click.pt.y - 28) / 10;
if (id_v >= w->vscroll.cap) { return;} // click out of bounds if (id_v >= w->vscroll.cap) { return;} // click out of bounds
@ -480,7 +483,7 @@ static void TownDirectoryWndProc(Window *w, WindowEvent *e)
static const WindowDesc _town_directory_desc = { static const WindowDesc _town_directory_desc = {
-1, -1, 208, 190, -1, -1, 208, 190,
WC_TOWN_DIRECTORY,0, WC_TOWN_DIRECTORY,0,
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
_town_directory_widgets, _town_directory_widgets,
TownDirectoryWndProc TownDirectoryWndProc
}; };