mirror of https://github.com/OpenTTD/OpenTTD
(svn r27277) -Codechange: Make _displayed_industries a std::bitset.
parent
6dee48e018
commit
5e47c27550
|
@ -42,12 +42,12 @@
|
||||||
|
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
|
||||||
|
#include <bitset>
|
||||||
|
|
||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
bool _ignore_restrictions;
|
bool _ignore_restrictions;
|
||||||
uint64 _displayed_industries; ///< Communication from the industry chain window to the smallmap window about what industries to display.
|
std::bitset<NUM_INDUSTRYTYPES> _displayed_industries; ///< Communication from the industry chain window to the smallmap window about what industries to display.
|
||||||
|
|
||||||
assert_compile(NUM_INDUSTRYTYPES <= 64); // Make sure all industry types fit in _displayed_industries.
|
|
||||||
|
|
||||||
/** Cargo suffix type (for which window is it requested) */
|
/** Cargo suffix type (for which window is it requested) */
|
||||||
enum CargoSuffixType {
|
enum CargoSuffixType {
|
||||||
|
@ -229,7 +229,7 @@ class BuildIndustryWindow : public Window {
|
||||||
* The tests performed after the enabled allow to load the industries
|
* The tests performed after the enabled allow to load the industries
|
||||||
* In the same way they are inserted by grf (if any)
|
* In the same way they are inserted by grf (if any)
|
||||||
*/
|
*/
|
||||||
for (uint8 i = 0; i < NUM_INDUSTRYTYPES; i++) {
|
for (uint i = 0; i < NUM_INDUSTRYTYPES; i++) {
|
||||||
IndustryType ind = _sorted_industry_types[i];
|
IndustryType ind = _sorted_industry_types[i];
|
||||||
const IndustrySpec *indsp = GetIndustrySpec(ind);
|
const IndustrySpec *indsp = GetIndustrySpec(ind);
|
||||||
if (indsp->enabled) {
|
if (indsp->enabled) {
|
||||||
|
@ -2295,7 +2295,8 @@ struct IndustryCargoesWindow : public Window {
|
||||||
{
|
{
|
||||||
this->GetWidget<NWidgetCore>(WID_IC_CAPTION)->widget_data = STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION;
|
this->GetWidget<NWidgetCore>(WID_IC_CAPTION)->widget_data = STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION;
|
||||||
this->ind_cargo = it;
|
this->ind_cargo = it;
|
||||||
_displayed_industries = 1ULL << it;
|
_displayed_industries.reset();
|
||||||
|
_displayed_industries.set(it);
|
||||||
|
|
||||||
this->fields.Clear();
|
this->fields.Clear();
|
||||||
CargoesRow *row = this->fields.Append();
|
CargoesRow *row = this->fields.Append();
|
||||||
|
@ -2339,12 +2340,12 @@ struct IndustryCargoesWindow : public Window {
|
||||||
|
|
||||||
if (HasCommonValidCargo(central_sp->accepts_cargo, lengthof(central_sp->accepts_cargo), indsp->produced_cargo, lengthof(indsp->produced_cargo))) {
|
if (HasCommonValidCargo(central_sp->accepts_cargo, lengthof(central_sp->accepts_cargo), indsp->produced_cargo, lengthof(indsp->produced_cargo))) {
|
||||||
this->PlaceIndustry(1 + supp_count * num_indrows / num_supp, 0, it);
|
this->PlaceIndustry(1 + supp_count * num_indrows / num_supp, 0, it);
|
||||||
SetBit(_displayed_industries, it);
|
_displayed_industries.set(it);
|
||||||
supp_count++;
|
supp_count++;
|
||||||
}
|
}
|
||||||
if (HasCommonValidCargo(central_sp->produced_cargo, lengthof(central_sp->produced_cargo), indsp->accepts_cargo, lengthof(indsp->accepts_cargo))) {
|
if (HasCommonValidCargo(central_sp->produced_cargo, lengthof(central_sp->produced_cargo), indsp->accepts_cargo, lengthof(indsp->accepts_cargo))) {
|
||||||
this->PlaceIndustry(1 + cust_count * num_indrows / num_cust, 4, it);
|
this->PlaceIndustry(1 + cust_count * num_indrows / num_cust, 4, it);
|
||||||
SetBit(_displayed_industries, it);
|
_displayed_industries.set(it);
|
||||||
cust_count++;
|
cust_count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2373,7 +2374,7 @@ struct IndustryCargoesWindow : public Window {
|
||||||
{
|
{
|
||||||
this->GetWidget<NWidgetCore>(WID_IC_CAPTION)->widget_data = STR_INDUSTRY_CARGOES_CARGO_CAPTION;
|
this->GetWidget<NWidgetCore>(WID_IC_CAPTION)->widget_data = STR_INDUSTRY_CARGOES_CARGO_CAPTION;
|
||||||
this->ind_cargo = cid + NUM_INDUSTRYTYPES;
|
this->ind_cargo = cid + NUM_INDUSTRYTYPES;
|
||||||
_displayed_industries = 0;
|
_displayed_industries.reset();
|
||||||
|
|
||||||
this->fields.Clear();
|
this->fields.Clear();
|
||||||
CargoesRow *row = this->fields.Append();
|
CargoesRow *row = this->fields.Append();
|
||||||
|
@ -2408,12 +2409,12 @@ struct IndustryCargoesWindow : public Window {
|
||||||
|
|
||||||
if (HasCommonValidCargo(&cid, 1, indsp->produced_cargo, lengthof(indsp->produced_cargo))) {
|
if (HasCommonValidCargo(&cid, 1, indsp->produced_cargo, lengthof(indsp->produced_cargo))) {
|
||||||
this->PlaceIndustry(1 + supp_count * num_indrows / num_supp, 0, it);
|
this->PlaceIndustry(1 + supp_count * num_indrows / num_supp, 0, it);
|
||||||
SetBit(_displayed_industries, it);
|
_displayed_industries.set(it);
|
||||||
supp_count++;
|
supp_count++;
|
||||||
}
|
}
|
||||||
if (HasCommonValidCargo(&cid, 1, indsp->accepts_cargo, lengthof(indsp->accepts_cargo))) {
|
if (HasCommonValidCargo(&cid, 1, indsp->accepts_cargo, lengthof(indsp->accepts_cargo))) {
|
||||||
this->PlaceIndustry(1 + cust_count * num_indrows / num_cust, 2, it);
|
this->PlaceIndustry(1 + cust_count * num_indrows / num_cust, 2, it);
|
||||||
SetBit(_displayed_industries, it);
|
_displayed_industries.set(it);
|
||||||
cust_count++;
|
cust_count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2604,7 +2605,7 @@ struct IndustryCargoesWindow : public Window {
|
||||||
|
|
||||||
case WID_IC_IND_DROPDOWN: {
|
case WID_IC_IND_DROPDOWN: {
|
||||||
DropDownList *lst = new DropDownList;
|
DropDownList *lst = new DropDownList;
|
||||||
for (uint8 i = 0; i < NUM_INDUSTRYTYPES; i++) {
|
for (uint i = 0; i < NUM_INDUSTRYTYPES; i++) {
|
||||||
IndustryType ind = _sorted_industry_types[i];
|
IndustryType ind = _sorted_industry_types[i];
|
||||||
const IndustrySpec *indsp = GetIndustrySpec(ind);
|
const IndustrySpec *indsp = GetIndustrySpec(ind);
|
||||||
if (!indsp->enabled) continue;
|
if (!indsp->enabled) continue;
|
||||||
|
@ -2691,7 +2692,7 @@ const int IndustryCargoesWindow::VERT_TEXT_PADDING = 5; ///< Vertical padding ar
|
||||||
static void ShowIndustryCargoesWindow(IndustryType id)
|
static void ShowIndustryCargoesWindow(IndustryType id)
|
||||||
{
|
{
|
||||||
if (id >= NUM_INDUSTRYTYPES) {
|
if (id >= NUM_INDUSTRYTYPES) {
|
||||||
for (uint8 i = 0; i < NUM_INDUSTRYTYPES; i++) {
|
for (uint i = 0; i < NUM_INDUSTRYTYPES; i++) {
|
||||||
const IndustrySpec *indsp = GetIndustrySpec(_sorted_industry_types[i]);
|
const IndustrySpec *indsp = GetIndustrySpec(_sorted_industry_types[i]);
|
||||||
if (indsp->enabled) {
|
if (indsp->enabled) {
|
||||||
id = _sorted_industry_types[i];
|
id = _sorted_industry_types[i];
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
|
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
|
||||||
|
#include <bitset>
|
||||||
|
|
||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
static int _smallmap_industry_count; ///< Number of used industries
|
static int _smallmap_industry_count; ///< Number of used industries
|
||||||
|
@ -175,7 +177,7 @@ void BuildIndustriesLegend()
|
||||||
uint j = 0;
|
uint j = 0;
|
||||||
|
|
||||||
/* Add each name */
|
/* Add each name */
|
||||||
for (uint8 i = 0; i < NUM_INDUSTRYTYPES; i++) {
|
for (uint i = 0; i < NUM_INDUSTRYTYPES; i++) {
|
||||||
IndustryType ind = _sorted_industry_types[i];
|
IndustryType ind = _sorted_industry_types[i];
|
||||||
const IndustrySpec *indsp = GetIndustrySpec(ind);
|
const IndustrySpec *indsp = GetIndustrySpec(ind);
|
||||||
if (indsp->enabled) {
|
if (indsp->enabled) {
|
||||||
|
@ -1507,11 +1509,11 @@ int SmallMapWindow::GetPositionOnLegend(Point pt)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0: {
|
case 0: {
|
||||||
extern uint64 _displayed_industries;
|
extern std::bitset<NUM_INDUSTRYTYPES> _displayed_industries;
|
||||||
if (this->map_type != SMT_INDUSTRY) this->SwitchMapType(SMT_INDUSTRY);
|
if (this->map_type != SMT_INDUSTRY) this->SwitchMapType(SMT_INDUSTRY);
|
||||||
|
|
||||||
for (int i = 0; i != _smallmap_industry_count; i++) {
|
for (int i = 0; i != _smallmap_industry_count; i++) {
|
||||||
_legend_from_industries[i].show_on_map = HasBit(_displayed_industries, _legend_from_industries[i].type);
|
_legend_from_industries[i].show_on_map = _displayed_industries.test(_legend_from_industries[i].type);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue