Index: industry_gui.cpp =================================================================== --- industry_gui.cpp (revision 25178) +++ industry_gui.cpp (working copy) @@ -109,7 +109,9 @@ } } -IndustryType _sorted_industry_types[NUM_INDUSTRYTYPES]; ///< Industry types sorted by name. +IndustryType _sorted_industry_types[NUM_INDUSTRYTYPES]; ///< Industry types sorted by name. +static SmallVector _sorted_enabled_industry_types; ///< Subgroup of enabled (and sorted) industry types. +static uint64 _industry_filter_enabled; ///< Bit mask of the enabled industry types. /** Sort industry types by their name. */ static int CDECL IndustryTypeNameSorter(const IndustryType *a, const IndustryType *b) @@ -142,6 +144,17 @@ /* Sort industry types by name. */ QSortT(_sorted_industry_types, NUM_INDUSTRYTYPES, &IndustryTypeNameSorter); + + /* Build the bitmask/collection of all the enabled industry types */ + _industry_filter_enabled = 0; + _sorted_enabled_industry_types.Clear(); + for (IndustryType i = 0; i < NUM_INDUSTRYTYPES; i++) { + IndustryType ind = _sorted_industry_types[i]; + if (GetIndustrySpec(ind)->enabled) { + SetBit(_industry_filter_enabled, ind); + *_sorted_enabled_industry_types.Append() = ind; + } + } } /** @@ -1024,6 +1037,32 @@ AllocateWindowDescFront(&_industry_view_desc, industry); } +/** + * Make a horizontal row of industry type buttons, starting at widget #WID_ID_TYPE_START. + * @param biggest_index Pointer to store biggest used widget number of the buttons. + * @return Horizontal row. + */ +static NWidgetBase *IndustryTypeWidgets(int *biggest_index) +{ + NWidgetHorizontal *container = new NWidgetHorizontal(); + + for (size_t i = 0; i < _sorted_enabled_industry_types.Length(); i++) { + IndustryType ind = _sorted_enabled_industry_types[i]; + const IndustrySpec *indsp = GetIndustrySpec(ind); + assert(indsp->enabled); + + NWidgetBackground *panel = new NWidgetBackground(WWT_PANEL, COLOUR_BROWN, WID_ID_TYPE_START + i); + panel->SetMinimalSize(16, 11); + panel->SetResize(0, 0); + panel->SetFill(0, 1); + panel->SetDataTip(0, STR_INDUSTRY_DIRECTORY_USE_CTRL_TO_SELECT_MORE); + container->Add(panel); + } + + *biggest_index = WID_ID_TYPE_START + _sorted_enabled_industry_types.Length(); + return container; +} + /** Widget definition of the industry directory gui */ static const NWidgetPart _nested_industry_directory_widgets[] = { NWidget(NWID_HORIZONTAL), @@ -1037,7 +1076,9 @@ NWidget(NWID_HORIZONTAL), NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_ID_DROPDOWN_ORDER), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), NWidget(WWT_DROPDOWN, COLOUR_BROWN, WID_ID_DROPDOWN_CRITERIA), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA), - NWidget(WWT_PANEL, COLOUR_BROWN), SetResize(1, 0), EndContainer(), + NWidget(WWT_PANEL, COLOUR_BROWN), SetMinimalSize(25, 11), SetResize(1, 0), EndContainer(), + NWidget(WWT_PUSHBTN, COLOUR_BROWN, WID_ID_TYPESALL), SetMinimalSize(16, 11), SetDataTip(0x0, STR_INDUSTRY_DIRECTORY_SELECT_ALL_TYPES), SetFill(0, 1), + NWidgetFunction(IndustryTypeWidgets), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN, WID_ID_INDUSTRY_LIST), SetDataTip(0x0, STR_INDUSTRY_DIRECTORY_LIST_CAPTION), SetResize(1, 1), SetScrollbar(WID_ID_SCROLLBAR), EndContainer(), EndContainer(), @@ -1059,6 +1100,7 @@ /* Runtime saved values */ static Listing last_sorting; static const Industry *last_industry; + static uint64 industry_filter; /* Constants for sorting stations */ static const StringID sorter_names[]; @@ -1075,7 +1117,9 @@ const Industry *i; FOR_ALL_INDUSTRIES(i) { - *this->industries.Append() = i; + if (HasBit(this->industry_filter, i->type)) { + *this->industries.Append() = i; + } } this->industries.Compact(); @@ -1207,12 +1251,39 @@ } } + /** + * Enable/disable all industry type filters. + * @param enable True to lower and enable all industry type filters, false to raise/disable. + */ + void ToggleIndustryFilters(bool enable) + { + for (size_t i = 0; i < _sorted_enabled_industry_types.Length(); i++) { + NWidgetBackground* panel = this->GetWidget(WID_ID_TYPE_START + i); + panel->SetLowered(enable); + } + + this->industry_filter = enable ? _industry_filter_enabled : 0; + } + public: IndustryDirectoryWindow(const WindowDesc *desc, WindowNumber number) : Window() { this->CreateNestedTree(desc); this->vscroll = this->GetScrollbar(WID_ID_SCROLLBAR); + // if the industry filter has disabled industries selected + // it means the industry set has changed, so we need to re-initialize + if (this->industry_filter & ~_industry_filter_enabled) { + this->industry_filter = _industry_filter_enabled; + } + + for (size_t i = 0; i < _sorted_enabled_industry_types.Length(); i++) { + IndustryType ind = _sorted_enabled_industry_types[i]; + if (HasBit(this->industry_filter, ind)) { + this->LowerWidget(WID_ID_TYPE_START + i); + } + } + this->industries.SetListing(this->last_sorting); this->industries.SetSortFuncs(IndustryDirectoryWindow::sorter_funcs); this->industries.ForceRebuild(); @@ -1253,6 +1324,24 @@ } break; } + + case WID_ID_TYPESALL: { + int it_ofst = this->IsWidgetLowered(widget) ? 2 : 1; + DrawString(r.left + it_ofst, r.right + it_ofst, r.top + it_ofst, STR_ABBREV_ALL, TC_BLACK, SA_HOR_CENTER); + break; + } + + default: + if (widget >= WID_ID_TYPE_START) + { + IndustryType ind = _sorted_enabled_industry_types[widget - WID_ID_TYPE_START]; + const IndustrySpec *indsp = GetIndustrySpec(ind); + int it_ofst = HasBit(this->industry_filter, ind) ? 2 : 1;; + GfxFillRect(r.left + it_ofst, r.top + it_ofst, r.right - 2 + it_ofst, r.bottom - 2 + it_ofst, indsp->map_colour); + TextColour tc = GetContrastColour(indsp->map_colour); + DrawString(r.left + it_ofst, r.right + it_ofst, r.top + it_ofst, indsp->abbrev, tc, SA_HOR_CENTER); + } + break; } } @@ -1290,6 +1379,25 @@ *size = maxdim(*size, d); break; } + + case WID_ID_TYPESALL: { + Dimension d = GetStringBoundingBox(STR_ABBREV_ALL); + d.width += padding.width + 2; + d.height += padding.height; + *size = maxdim(*size, d); + break; + } + + default: + if (widget >= WID_ID_TYPE_START) { + IndustryType ind = _sorted_enabled_industry_types[widget - WID_ID_TYPE_START]; + const IndustrySpec* indsp = GetIndustrySpec(ind); + Dimension d = GetStringBoundingBox(indsp->abbrev); + d.width += padding.width + 2; + d.height += padding.height; + *size = maxdim(*size, d); + } + break; } } @@ -1317,6 +1425,34 @@ } break; } + + case WID_ID_TYPESALL: { + ToggleIndustryFilters(true); + + this->industries.ForceRebuild(); + this->BuildSortIndustriesList(); + this->SetDirty(); + break; + } + + default: + if (widget >= WID_ID_TYPE_START) + { + IndustryType ind = _sorted_enabled_industry_types[widget - WID_ID_TYPE_START]; + if (_ctrl_pressed) { + ToggleBit(this->industry_filter, ind); + this->ToggleWidgetLoweredState(widget); + } else { + ToggleIndustryFilters(false); + SetBit(this->industry_filter, ind); + this->LowerWidget(widget); + } + + this->industries.ForceRebuild(); + this->BuildSortIndustriesList(); + this->SetDirty(); + } + break; } } @@ -1363,6 +1499,7 @@ Listing IndustryDirectoryWindow::last_sorting = {false, 0}; const Industry *IndustryDirectoryWindow::last_industry = NULL; +uint64 IndustryDirectoryWindow::industry_filter = UINT64_MAX; /* Available station sorting functions. */ GUIIndustryList::SortFunction * const IndustryDirectoryWindow::sorter_funcs[] = { Index: industrytype.h =================================================================== --- industrytype.h (revision 25178) +++ industrytype.h (working copy) @@ -120,6 +120,7 @@ IndustryBehaviour behaviour; ///< How this industry will behave, and how others entities can use it byte map_colour; ///< colour used for the small map StringID name; ///< Displayed name of the industry + StringID abbrev; ///< Abbreviation of the industry name StringID new_industry_text; ///< Message appearing when the industry is built StringID closure_text; ///< Message appearing when the industry closes StringID production_up_text; ///< Message appearing when the industry's production is increasing Index: lang/english.txt =================================================================== --- lang/english.txt (revision 25178) +++ lang/english.txt (working copy) @@ -3091,6 +3091,8 @@ STR_INDUSTRY_DIRECTORY_ITEM_TWO :{ORANGE}{INDUSTRY}{BLACK} ({CARGO_LONG}{RAW_STRING}/{CARGO_LONG}{RAW_STRING}){YELLOW} ({COMMA}%/{COMMA}% transported) STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY} STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industry names - click on name to centre main view on industry. Ctrl+Click opens a new viewport on industry location +STR_INDUSTRY_DIRECTORY_SELECT_ALL_TYPES :{BLACK}Select all industry types +STR_INDUSTRY_DIRECTORY_USE_CTRL_TO_SELECT_MORE :{BLACK}Hold Ctrl to select more than one item # Industry view STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY} @@ -4310,6 +4312,45 @@ STR_INDUSTRY_NAME_TOFFEE_QUARRY :Toffee Quarry STR_INDUSTRY_NAME_SUGAR_MINE :Sugar Mine +# two/three letter industry name abbreviations +STR_ABBREV_COAL_MINE :{TINY_FONT}CM +STR_ABBREV_POWER_STATION :{TINY_FONT}POW +STR_ABBREV_SAWMILL :{TINY_FONT}SAW +STR_ABBREV_FOREST :{TINY_FONT}FOR +STR_ABBREV_OIL_REFINERY :{TINY_FONT}REF +STR_ABBREV_OIL_RIG :{TINY_FONT}RIG +STR_ABBREV_FACTORY :{TINY_FONT}FAC +STR_ABBREV_PRINTING_WORKS :{TINY_FONT}PRW +STR_ABBREV_STEEL_MILL :{TINY_FONT}STL +STR_ABBREV_FARM :{TINY_FONT}FAR +STR_ABBREV_COPPER_ORE_MINE :{TINY_FONT}ORE +STR_ABBREV_OIL_WELLS :{TINY_FONT}OIL +STR_ABBREV_BANK :{TINY_FONT}BNK +STR_ABBREV_FOOD_PROCESSING_PLANT :{TINY_FONT}FDP +STR_ABBREV_PAPER_MILL :{TINY_FONT}PAP +STR_ABBREV_GOLD_MINE :{TINY_FONT}GLD +STR_ABBREV_BANK_TROPIC_ARCTIC :{TINY_FONT}BNK +STR_ABBREV_DIAMOND_MINE :{TINY_FONT}DIA +STR_ABBREV_IRON_ORE_MINE :{TINY_FONT}ORE +STR_ABBREV_FRUIT_PLANTATION :{TINY_FONT}FRT +STR_ABBREV_RUBBER_PLANTATION :{TINY_FONT}RUB +STR_ABBREV_WATER_SUPPLY :{TINY_FONT}WSP +STR_ABBREV_WATER_TOWER :{TINY_FONT}WTW +STR_ABBREV_FACTORY_2 :{TINY_FONT}FAC +STR_ABBREV_FARM_2 :{TINY_FONT}FAR +STR_ABBREV_LUMBER_MILL :{TINY_FONT}LUM +STR_ABBREV_COTTON_CANDY_FOREST :{TINY_FONT}CCF +STR_ABBREV_CANDY_FACTORY :{TINY_FONT}SWT +STR_ABBREV_BATTERY_FARM :{TINY_FONT}BAT +STR_ABBREV_COLA_WELLS :{TINY_FONT}CLW +STR_ABBREV_TOY_SHOP :{TINY_FONT}TSH +STR_ABBREV_TOY_FACTORY :{TINY_FONT}TFC +STR_ABBREV_PLASTIC_FOUNTAINS :{TINY_FONT}PLA +STR_ABBREV_FIZZY_DRINK_FACTORY :{TINY_FONT}FIZ +STR_ABBREV_BUBBLE_GENERATOR :{TINY_FONT}BUB +STR_ABBREV_TOFFEE_QUARRY :{TINY_FONT}TOF +STR_ABBREV_SUGAR_MINE :{TINY_FONT}SUG + ############ WARNING, using range 0x6000 for strings that are stored in the savegame ############ These strings may never get a new id, or savegames will break! ##id 0x6000 Index: table/build_industry.h =================================================================== --- table/build_industry.h (revision 25178) +++ table/build_industry.h (working copy) @@ -1181,9 +1181,9 @@ */ #define MI(tbl, sndc, snd, d, pc, ai1, ai2, ai3, ai4, ag1, ag2, ag3, ag4, col, \ - c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, intx, s1, s2, s3) \ + c1, c2, c3, proc, p1, r1, p2, r2, m, a1, im1, a2, im2, a3, im3, pr, clim, bev, in, abb, intx, s1, s2, s3) \ {tbl, lengthof(tbl), d, 0, pc, {c1, c2, c3}, proc, {p1, p2}, {r1, r2}, m, \ - {a1, a2, a3}, {{im1, 0}, {im2, 0}, {im3, 0}}, pr, clim, bev, col, in, intx, s1, s2, s3, STR_UNDEFINED, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \ + {a1, a2, a3}, {{im1, 0}, {im2, 0}, {im3, 0}}, pr, clim, bev, col, in, abb, intx, s1, s2, s3, STR_UNDEFINED, {ai1, ai2, ai3, ai4}, {ag1, ag2, ag3, ag4}, \ sndc, snd, 0, 0, true, GRFFileProps(INVALID_INDUSTRYTYPE)} /* Format: tile table count and sounds table @@ -1203,7 +1203,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC, INDUSTRYBEH_CAN_SUBSIDENCE, - STR_INDUSTRY_NAME_COAL_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_COAL_MINE, STR_ABBREV_COAL_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_COAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_power_station, 0, NULL, @@ -1213,7 +1213,7 @@ CT_COAL, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_POWER_STATION, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_POWER_STATION, STR_ABBREV_POWER_STATION, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_sawmill, 1, _sawmill_sounds, @@ -1223,7 +1223,7 @@ CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_SAWMILL, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_SAWMILL, STR_ABBREV_SAWMILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_forest, 0, NULL, @@ -1233,7 +1233,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_FOREST, STR_NEWS_INDUSTRY_PLANTED, + STR_INDUSTRY_NAME_FOREST, STR_ABBREV_FOREST, STR_NEWS_INDUSTRY_PLANTED, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_oil_refinery, 0, NULL, @@ -1243,7 +1243,7 @@ CT_OIL, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC, INDUSTRYBEH_AIRPLANE_ATTACKS, - STR_INDUSTRY_NAME_OIL_REFINERY, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_OIL_REFINERY, STR_ABBREV_OIL_REFINERY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_oil_rig, 0, NULL, @@ -1253,7 +1253,7 @@ CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE, INDUSTRYBEH_BUILT_ONWATER | INDUSTRYBEH_AFTER_1960 | INDUSTRYBEH_AI_AIRSHIP_ROUTES, - STR_INDUSTRY_NAME_OIL_RIG, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_OIL_RIG, STR_ABBREV_OIL_RIG, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_factory, 1, _factory_sounds, @@ -1263,7 +1263,7 @@ CT_LIVESTOCK, 256, CT_GRAIN, 256, CT_STEEL, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE, INDUSTRYBEH_CHOPPER_ATTACKS, - STR_INDUSTRY_NAME_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_FACTORY, STR_ABBREV_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_printing_works, 1, _factory_sounds, @@ -1273,7 +1273,7 @@ CT_PAPER, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_PRINTING_WORKS, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_PRINTING_WORKS, STR_ABBREV_PRINTING_WORKS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_steel_mill, 0, NULL, @@ -1283,7 +1283,7 @@ CT_IRON_ORE, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TEMPERATE, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_STEEL_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_STEEL_MILL, STR_ABBREV_STEEL_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_farm, 3, _farm_sounds, @@ -1293,7 +1293,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TEMPERATE | 1 << LT_ARCTIC, INDUSTRYBEH_PLANT_FIELDS | INDUSTRYBEH_PLANT_ON_BUILT, - STR_INDUSTRY_NAME_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_FARM, STR_ABBREV_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_copper_mine, 0, NULL, @@ -1303,7 +1303,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_COPPER_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_COPPER_ORE_MINE, STR_ABBREV_COPPER_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_oil_well, 0, NULL, @@ -1313,7 +1313,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE | 1 << LT_ARCTIC | 1 << LT_TROPIC, INDUSTRYBEH_DONT_INCR_PROD | INDUSTRYBEH_BEFORE_1950, - STR_INDUSTRY_NAME_OIL_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_OIL_WELLS, STR_ABBREV_OIL_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_OIL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_bank, 0, NULL, @@ -1323,7 +1323,7 @@ CT_VALUABLES, 0, CT_INVALID, 0, CT_INVALID, 0, INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TEMPERATE, INDUSTRYBEH_TOWN1200_MORE, - STR_INDUSTRY_NAME_BANK, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_BANK, STR_ABBREV_BANK, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_food_process, 0, NULL, @@ -1333,7 +1333,7 @@ CT_FRUIT, 256, CT_MAIZE, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC | 1 << LT_TROPIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT, STR_ABBREV_FOOD_PROCESSING_PLANT, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_paper_mill, 1, _sawmill_sounds, @@ -1343,7 +1343,7 @@ CT_WOOD, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_ARCTIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_PAPER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_PAPER_MILL, STR_ABBREV_PAPER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_gold_mine, 0, NULL, @@ -1353,7 +1353,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_ARCTIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_GOLD_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_GOLD_MINE, STR_ABBREV_GOLD_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_bank2, 0, NULL, @@ -1363,7 +1363,7 @@ CT_GOLD, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_BLACK_HOLE, 1 << LT_ARCTIC | 1 << LT_TROPIC, INDUSTRYBEH_ONLY_INTOWN, - STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC, STR_ABBREV_BANK_TROPIC_ARCTIC, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_diamond_mine, 0, NULL, @@ -1373,7 +1373,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_DIAMOND_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_DIAMOND_MINE, STR_ABBREV_DIAMOND_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_iron_mine, 0, NULL, @@ -1383,7 +1383,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TEMPERATE, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_IRON_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_IRON_ORE_MINE, STR_ABBREV_IRON_ORE_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_fruit_plantation, 0, NULL, @@ -1393,7 +1393,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_FRUIT_PLANTATION, STR_NEWS_INDUSTRY_PLANTED, + STR_INDUSTRY_NAME_FRUIT_PLANTATION, STR_ABBREV_FRUIT_PLANTATION, STR_NEWS_INDUSTRY_PLANTED, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_rubber_plantation, 0, NULL, @@ -1403,7 +1403,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_RUBBER_PLANTATION, STR_NEWS_INDUSTRY_PLANTED, + STR_INDUSTRY_NAME_RUBBER_PLANTATION, STR_ABBREV_RUBBER_PLANTATION, STR_NEWS_INDUSTRY_PLANTED, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_water_supply, 0, NULL, @@ -1413,7 +1413,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TROPIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_WATER_SUPPLY, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_WATER_SUPPLY, STR_ABBREV_WATER_SUPPLY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_water_tower, 0, NULL, @@ -1423,7 +1423,7 @@ CT_WATER, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TROPIC, INDUSTRYBEH_ONLY_INTOWN, - STR_INDUSTRY_NAME_WATER_TOWER, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_WATER_TOWER, STR_ABBREV_WATER_TOWER, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_factory2, 1, _factory_sounds, @@ -1433,7 +1433,7 @@ CT_RUBBER, 256, CT_COPPER_ORE, 256, CT_WOOD, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_FACTORY_2, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_FACTORY_2, STR_ABBREV_FACTORY_2, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_farm2, 0, NULL, @@ -1443,7 +1443,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TROPIC, INDUSTRYBEH_PLANT_FIELDS | INDUSTRYBEH_PLANT_ON_BUILT, - STR_INDUSTRY_NAME_FARM_2, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_FARM_2, STR_ABBREV_FARM_2, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_lumber_mill, 0, NULL, @@ -1453,7 +1453,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TROPIC, INDUSTRYBEH_CUT_TREES, - STR_INDUSTRY_NAME_LUMBER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_LUMBER_MILL, STR_ABBREV_LUMBER_MILL, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_LACK_OF_TREES, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_cotton_candy, 0, NULL, @@ -1463,8 +1463,8 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_COTTON_CANDY_FOREST, STR_NEWS_INDUSTRY_PLANTED, - STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), + STR_INDUSTRY_NAME_COTTON_CANDY_FOREST, STR_ABBREV_COTTON_CANDY_FOREST, STR_NEWS_INDUSTRY_PLANTED, + STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_candy_factory, 0, NULL, 206, 0xFFFFFFFF, 0, 0, 0, 3, 0, 0, 0, 5, 174, @@ -1473,7 +1473,7 @@ CT_SUGAR, 256, CT_TOFFEE, 256, CT_COTTON_CANDY, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_CANDY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_CANDY_FACTORY, STR_ABBREV_CANDY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_battery_farm, 0, NULL, @@ -1483,7 +1483,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_ORGANIC, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_BATTERY_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_BATTERY_FARM, STR_ABBREV_BATTERY_FARM, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_FARM, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM), MI(_tile_table_cola_wells, 0, NULL, @@ -1493,7 +1493,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_COLA_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_COLA_WELLS, STR_ABBREV_COLA_WELLS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_toy_shop, 0, NULL, @@ -1503,7 +1503,7 @@ CT_TOYS, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_BLACK_HOLE, 1 << LT_TOYLAND, INDUSTRYBEH_ONLY_NEARTOWN, - STR_INDUSTRY_NAME_TOY_SHOP, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_TOY_SHOP, STR_ABBREV_TOY_SHOP, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_toy_factory, 0, NULL, @@ -1513,7 +1513,7 @@ CT_PLASTIC, 256, CT_BATTERIES, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_TOY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_TOY_FACTORY, STR_ABBREV_TOY_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_plastic_fountain, 1, _plastic_mine_sounds, @@ -1523,7 +1523,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_PLASTIC_FOUNTAINS, STR_ABBREV_PLASTIC_FOUNTAINS, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_fizzy_drink, 0, NULL, @@ -1533,7 +1533,7 @@ CT_COLA, 256, CT_BUBBLES, 256, CT_INVALID, 256, INDUSTRYLIFE_PROCESSING, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_FIZZY_DRINK_FACTORY, STR_ABBREV_FIZZY_DRINK_FACTORY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_SUPPLY_PROBLEMS, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_bubble_generator, 0, NULL, @@ -1543,7 +1543,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_BUBBLE_GENERATOR, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_BUBBLE_GENERATOR, STR_ABBREV_BUBBLE_GENERATOR, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_toffee_quarry, 0, NULL, @@ -1553,7 +1553,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_TOFFEE_QUARRY, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_TOFFEE_QUARRY, STR_ABBREV_TOFFEE_QUARRY, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), MI(_tile_table_sugar_mine, 0, NULL, @@ -1563,7 +1563,7 @@ CT_INVALID, 256, CT_INVALID, 256, CT_INVALID, 256, INDUSTRYLIFE_EXTRACTIVE, 1 << LT_TOYLAND, INDUSTRYBEH_NONE, - STR_INDUSTRY_NAME_SUGAR_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, + STR_INDUSTRY_NAME_SUGAR_MINE, STR_ABBREV_SUGAR_MINE, STR_NEWS_INDUSTRY_CONSTRUCTION, STR_NEWS_INDUSTRY_CLOSURE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_INCREASE_GENERAL, STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL), }; #undef MI Index: widgets/industry_widget.h =================================================================== --- widgets/industry_widget.h (revision 25178) +++ widgets/industry_widget.h (working copy) @@ -36,6 +36,8 @@ WID_ID_DROPDOWN_CRITERIA, ///< Dropdown for the criteria of the sort. WID_ID_INDUSTRY_LIST, ///< Industry list. WID_ID_SCROLLBAR, ///< Scrollbar of the list. + WID_ID_TYPESALL, ///< Toggle all industry types button. + WID_ID_TYPE_START, ///< Widget numbers used for list of industry types (not present in _industry_directory_widgets). }; /** Widgets of the #IndustryCargoesWindow class */