|
|
|
@ -257,8 +257,9 @@ public:
|
|
|
|
|
|
|
|
|
|
/* Add cargo filter buttons */
|
|
|
|
|
uint num_active = 0;
|
|
|
|
|
for (CargoID c = 0; c < NUM_CARGO; c++) {
|
|
|
|
|
if (CargoSpec::Get(c)->IsValid()) num_active++;
|
|
|
|
|
const CargoSpec *cs;
|
|
|
|
|
FOR_ALL_CARGOSPECS(cs) {
|
|
|
|
|
num_active++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this->widget_count += num_active;
|
|
|
|
@ -266,9 +267,7 @@ public:
|
|
|
|
|
this->widget[this->widget_count].type = WWT_LAST;
|
|
|
|
|
|
|
|
|
|
uint i = 0;
|
|
|
|
|
for (CargoID c = 0; c < NUM_CARGO; c++) {
|
|
|
|
|
if (!CargoSpec::Get(c)->IsValid()) continue;
|
|
|
|
|
|
|
|
|
|
FOR_ALL_CARGOSPECS(cs) {
|
|
|
|
|
Widget *wi = &this->widget[SLW_CARGOSTART + i];
|
|
|
|
|
wi->type = WWT_PANEL;
|
|
|
|
|
wi->display_flags = RESIZE_NONE;
|
|
|
|
@ -280,7 +279,7 @@ public:
|
|
|
|
|
wi->data = 0;
|
|
|
|
|
wi->tooltips = STR_USE_CTRL_TO_SELECT_MORE;
|
|
|
|
|
|
|
|
|
|
if (HasBit(this->cargo_filter, c)) this->LowerWidget(SLW_CARGOSTART + i);
|
|
|
|
|
if (HasBit(this->cargo_filter, cs->Index())) this->LowerWidget(SLW_CARGOSTART + i);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -345,11 +344,9 @@ public:
|
|
|
|
|
int xb = 2; ///< offset from left of widget
|
|
|
|
|
|
|
|
|
|
uint i = 0;
|
|
|
|
|
for (CargoID c = 0; c < NUM_CARGO; c++) {
|
|
|
|
|
const CargoSpec *cs = CargoSpec::Get(c);
|
|
|
|
|
if (!cs->IsValid()) continue;
|
|
|
|
|
|
|
|
|
|
cg_ofst = HasBit(this->cargo_filter, c) ? 2 : 1;
|
|
|
|
|
const CargoSpec *cs;
|
|
|
|
|
FOR_ALL_CARGOSPECS(cs) {
|
|
|
|
|
cg_ofst = HasBit(this->cargo_filter, cs->Index()) ? 2 : 1;
|
|
|
|
|
GfxFillRect(x + cg_ofst, y + cg_ofst, x + cg_ofst + 10 , y + cg_ofst + 7, cs->rating_colour);
|
|
|
|
|
DrawString(x + cg_ofst, x + 12 + cg_ofst, y + cg_ofst, cs->abbrev, TC_BLACK, SA_CENTER);
|
|
|
|
|
x += 14;
|
|
|
|
@ -456,8 +453,8 @@ public:
|
|
|
|
|
|
|
|
|
|
case SLW_CARGOALL: {
|
|
|
|
|
uint i = 0;
|
|
|
|
|
for (CargoID c = 0; c < NUM_CARGO; c++) {
|
|
|
|
|
if (!CargoSpec::Get(c)->IsValid()) continue;
|
|
|
|
|
const CargoSpec *cs;
|
|
|
|
|
FOR_ALL_CARGOSPECS(cs) {
|
|
|
|
|
this->LowerWidget(i + SLW_CARGOSTART);
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
@ -504,16 +501,15 @@ public:
|
|
|
|
|
default:
|
|
|
|
|
if (widget >= SLW_CARGOSTART) { // change cargo_filter
|
|
|
|
|
/* Determine the selected cargo type */
|
|
|
|
|
CargoID c;
|
|
|
|
|
int i = 0;
|
|
|
|
|
for (c = 0; c < NUM_CARGO; c++) {
|
|
|
|
|
if (!CargoSpec::Get(c)->IsValid()) continue;
|
|
|
|
|
const CargoSpec *cs;
|
|
|
|
|
FOR_ALL_CARGOSPECS(cs) {
|
|
|
|
|
if (widget - SLW_CARGOSTART == i) break;
|
|
|
|
|
i++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (_ctrl_pressed) {
|
|
|
|
|
ToggleBit(this->cargo_filter, c);
|
|
|
|
|
ToggleBit(this->cargo_filter, cs->Index());
|
|
|
|
|
this->ToggleWidgetLoweredState(widget);
|
|
|
|
|
} else {
|
|
|
|
|
for (uint i = SLW_CARGOSTART; i < this->widget_count; i++) {
|
|
|
|
@ -524,7 +520,7 @@ public:
|
|
|
|
|
this->cargo_filter = 0;
|
|
|
|
|
this->include_empty = false;
|
|
|
|
|
|
|
|
|
|
SetBit(this->cargo_filter, c);
|
|
|
|
|
SetBit(this->cargo_filter, cs->Index());
|
|
|
|
|
this->LowerWidget(widget);
|
|
|
|
|
}
|
|
|
|
|
this->SetWidgetLoweredState(SLW_CARGOALL, this->cargo_filter == _cargo_mask && this->include_empty);
|
|
|
|
@ -944,11 +940,9 @@ struct StationViewWindow : public Window {
|
|
|
|
|
DrawString(this->widget[SVW_ACCEPTLIST].left + 2, this->widget[SVW_ACCEPTLIST].right - 2, y, STR_STATION_VIEW_CARGO_RATINGS_TITLE);
|
|
|
|
|
y += 10;
|
|
|
|
|
|
|
|
|
|
for (CargoID i = 0; i < NUM_CARGO; i++) {
|
|
|
|
|
const CargoSpec *cs = CargoSpec::Get(i);
|
|
|
|
|
if (!cs->IsValid()) continue;
|
|
|
|
|
|
|
|
|
|
const GoodsEntry *ge = &st->goods[i];
|
|
|
|
|
const CargoSpec *cs;
|
|
|
|
|
FOR_ALL_CARGOSPECS(cs) {
|
|
|
|
|
const GoodsEntry *ge = &st->goods[cs->Index()];
|
|
|
|
|
if (!HasBit(ge->acceptance_pickup, GoodsEntry::PICKUP)) continue;
|
|
|
|
|
|
|
|
|
|
SetDParam(0, cs->name);
|
|
|
|
|