Index: src/lang/english.txt =================================================================== --- src/lang/english.txt (revision 10412) +++ src/lang/english.txt (working copy) @@ -272,6 +272,7 @@ STR_012E_CANCEL :{BLACK}Cancel STR_012F_OK :{BLACK}OK STR_0130_RENAME :{BLACK}Rename +STR_RANDOM_TOWN_NAME :{BLACK}Random Name STR_0131_TOO_MANY_NAMES_DEFINED :{WHITE}Too many names defined STR_0132_CHOSEN_NAME_IN_USE_ALREADY :{WHITE}Chosen name already in use @@ -1700,6 +1701,7 @@ STR_200A_TOWN_NAMES_CLICK_ON_NAME :{BLACK}Town names - click on name to centre view on town STR_200B_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centre the main view on town location STR_200C_CHANGE_TOWN_NAME :{BLACK}Change town name +STR_NEW_RANDOM_TOWN_NAME :{BLACK}New random town name STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passengers last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Mail last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA} STR_200F_TALL_OFFICE_BLOCK :Tall office block Index: src/settings_gui.cpp =================================================================== --- src/settings_gui.cpp (revision 10412) +++ src/settings_gui.cpp (working copy) @@ -184,7 +184,7 @@ break; } } - ShowDropDownMenu(w, _town_names, sel, 14, (_game_mode == GM_MENU) ? 0 : (-1) ^ (1 << sel), 0); + ShowDropDownMenu(w, _town_names, sel, 14, (_game_mode != GM_NORMAL) ? 0 : (-1) ^ (1 << sel), 0); return; } case 16: case 17: /* Setup autosave dropdown */ @@ -239,7 +239,7 @@ } break; case 14: /* Town names */ - if (_game_mode == GM_MENU) { + if (_game_mode != GM_NORMAL) { for (uint i = 0; _town_names[i] != INVALID_STRING_ID; i++) { if (_town_names[e->we.dropdown.index] == TownName(i)) { _opt_ptr->town_name = i; Index: src/town.h =================================================================== --- src/town.h (revision 10412) +++ src/town.h (working copy) @@ -201,6 +201,7 @@ void ShowTownViewWindow(TownID town); void ExpandTown(Town *t); Town *CreateRandomTown(uint attempts, TownSizeMode mode, uint size); +void RandomTownName(Town *t); enum { ROAD_REMOVE = 0, Index: src/town_cmd.cpp =================================================================== --- src/town_cmd.cpp (revision 10412) +++ src/town_cmd.cpp (working copy) @@ -2517,3 +2517,20 @@ memset(&_house_specs, 0, sizeof(_house_specs)); memcpy(&_house_specs, &_original_house_specs, sizeof(_original_house_specs)); } + +void RandomTownName(Town *t) +{ + uint32 townnameparts; + if (!CreateTownName(&townnameparts)) return; + + uint16 townnametype = SPECSTR_TOWNNAME_START + _opt.town_name; + assert(townnameparts); + + char buf1[64]; + SetDParam(0, townnameparts); + GetString(buf1, townnametype, lastof(buf1)); + + _cmd_text = buf1; + DoCommandP(0, t->index, 0, NULL, + CMD_RENAME_TOWN | CMD_MSG(STR_2008_CAN_T_RENAME_TOWN)); +} Index: src/town_gui.cpp =================================================================== --- src/town_gui.cpp (revision 10412) +++ src/town_gui.cpp (working copy) @@ -280,6 +280,10 @@ case 10: /* delete town */ DeleteTown(t); break; + + case 11: /* randomize town name */ + RandomTownName(t); + break; } break; @@ -316,22 +320,23 @@ }; static const Widget _town_view_scen_widgets[] = { -{ WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, -{ WWT_CAPTION, RESIZE_NONE, 13, 11, 172, 0, 13, STR_2005, STR_018C_WINDOW_TITLE_DRAG_THIS}, -{ WWT_STICKYBOX, RESIZE_NONE, 13, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, -{ WWT_PANEL, RESIZE_NONE, 13, 0, 259, 14, 105, 0x0, STR_NULL}, -{ WWT_INSET, RESIZE_NONE, 13, 2, 257, 16, 103, 0x0, STR_NULL}, -{ WWT_PANEL, RESIZE_NONE, 13, 0, 259, 106, 137, 0x0, STR_NULL}, -{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 0, 85, 138, 149, STR_00E4_LOCATION, STR_200B_CENTER_THE_MAIN_VIEW_ON}, -{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, -{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 173, 247, 0, 13, STR_0130_RENAME, STR_200C_CHANGE_TOWN_NAME}, -{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 86, 171, 138, 149, STR_023C_EXPAND, STR_023B_INCREASE_SIZE_OF_TOWN}, -{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 172, 259, 138, 149, STR_0290_DELETE, STR_0291_DELETE_THIS_TOWN_COMPLETELY}, +{ WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, +{ WWT_CAPTION, RESIZE_NONE, 13, 11, 246, 0, 13, STR_2005, STR_018C_WINDOW_TITLE_DRAG_THIS}, +{ WWT_STICKYBOX, RESIZE_NONE, 13, 248, 259, 0, 13, 0x0, STR_STICKY_BUTTON}, +{ WWT_PANEL, RESIZE_NONE, 13, 0, 259, 14, 105, 0x0, STR_NULL}, +{ WWT_INSET, RESIZE_NONE, 13, 2, 257, 16, 103, 0x0, STR_NULL}, +{ WWT_PANEL, RESIZE_NONE, 13, 0, 259, 106, 137, 0x0, STR_NULL}, +{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 0, 85, 138, 149, STR_00E4_LOCATION, STR_200B_CENTER_THE_MAIN_VIEW_ON}, +{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, +{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 0, 129, 150, 161, STR_0130_RENAME, STR_200C_CHANGE_TOWN_NAME}, +{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 86, 171, 138, 149, STR_023C_EXPAND, STR_023B_INCREASE_SIZE_OF_TOWN}, +{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 172, 259, 138, 149, STR_0290_DELETE, STR_0291_DELETE_THIS_TOWN_COMPLETELY}, +{ WWT_PUSHTXTBTN, RESIZE_NONE, 13, 130, 259, 150, 161, STR_RANDOM_TOWN_NAME, STR_NEW_RANDOM_TOWN_NAME}, { WIDGETS_END}, }; static const WindowDesc _town_view_scen_desc = { - WDP_AUTO, WDP_AUTO, 260, 150, + WDP_AUTO, WDP_AUTO, 260, 162, WC_TOWN_VIEW, WC_NONE, WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, _town_view_scen_widgets,