src/town_gui.cpp
branchNewGRF_ports
changeset 10211 c1391c8ed5c6
parent 10210 a2131f7a315d
child 10242 52b4a9006029
equal deleted inserted replaced
10210:a2131f7a315d 10211:c1391c8ed5c6
   276 }
   276 }
   277 
   277 
   278 
   278 
   279 enum TownViewWidget {
   279 enum TownViewWidget {
   280 	TVW_CAPTION = 1,
   280 	TVW_CAPTION = 1,
       
   281 	TVW_STICKY,
   281 	TVW_CENTERVIEW = 6,
   282 	TVW_CENTERVIEW = 6,
   282 	TVW_SHOWAUTORITY,
   283 	TVW_SHOWAUTORITY,
   283 	TVW_CHANGENAME,
   284 	TVW_CHANGENAME,
   284 	TVW_EXPAND,
   285 	TVW_EXPAND,
   285 	TVW_DELETE,
   286 	TVW_DELETE,
   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 	}