|
@@ -116,19 +116,19 @@ uint32 GetPlatformInfo(Axis axis, byte t
|
|
|
y -= length / 2;
|
|
|
x = Clamp(x, -8, 7);
|
|
|
y = Clamp(y, -8, 7);
|
|
|
SB(retval, 0, 4, y & 0xF);
|
|
|
SB(retval, 4, 4, x & 0xF);
|
|
|
} else {
|
|
|
SB(retval, 0, 4, min(15, y));
|
|
|
SB(retval, 4, 4, min(15, length - y - 1));
|
|
|
SB(retval, 8, 4, min(15, x));
|
|
|
SB(retval, 12, 4, min(15, platforms - x - 1));
|
|
|
SB(retval, 0, 4, std::min(15, y));
|
|
|
SB(retval, 4, 4, std::min(15, length - y - 1));
|
|
|
SB(retval, 8, 4, std::min(15, x));
|
|
|
SB(retval, 12, 4, std::min(15, platforms - x - 1));
|
|
|
}
|
|
|
SB(retval, 16, 4, min(15, length));
|
|
|
SB(retval, 20, 4, min(15, platforms));
|
|
|
SB(retval, 16, 4, std::min(15, length));
|
|
|
SB(retval, 20, 4, std::min(15, platforms));
|
|
|
SB(retval, 24, 4, tile);
|
|
|
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -421,13 +421,13 @@ uint32 Station::GetNewGRFVariable(const
|
|
|
default: return 0;
|
|
|
}
|
|
|
}
|
|
|
const GoodsEntry *ge = &this->goods[c];
|
|
|
|
|
|
switch (variable) {
|
|
|
case 0x60: return min(ge->cargo.TotalCount(), 4095);
|
|
|
case 0x60: return std::min(ge->cargo.TotalCount(), 4095u);
|
|
|
case 0x61: return ge->HasVehicleEverTriedLoading() ? ge->time_since_pickup : 0;
|
|
|
case 0x62: return ge->HasRating() ? ge->rating : 0xFFFFFFFF;
|
|
|
case 0x63: return ge->cargo.DaysInTransit();
|
|
|
case 0x64: return ge->HasVehicleEverTriedLoading() ? ge->last_speed | (ge->last_age << 8) : 0xFF00;
|
|
|
case 0x65: return GB(ge->status, GoodsEntry::GES_ACCEPTANCE, 1) << 3;
|
|
|
case 0x69: {
|
|
@@ -441,13 +441,13 @@ uint32 Station::GetNewGRFVariable(const
|
|
|
|
|
|
/* Handle cargo variables (deprecated) */
|
|
|
if (variable >= 0x8C && variable <= 0xEC) {
|
|
|
const GoodsEntry *g = &this->goods[GB(variable - 0x8C, 3, 4)];
|
|
|
switch (GB(variable - 0x8C, 0, 3)) {
|
|
|
case 0: return g->cargo.TotalCount();
|
|
|
case 1: return GB(min(g->cargo.TotalCount(), 4095), 0, 4) | (GB(g->status, GoodsEntry::GES_ACCEPTANCE, 1) << 7);
|
|
|
case 1: return GB(std::min(g->cargo.TotalCount(), 4095u), 0, 4) | (GB(g->status, GoodsEntry::GES_ACCEPTANCE, 1) << 7);
|
|
|
case 2: return g->time_since_pickup;
|
|
|
case 3: return g->rating;
|
|
|
case 4: return g->cargo.Source();
|
|
|
case 5: return g->cargo.DaysInTransit();
|
|
|
case 6: return g->last_speed;
|
|
|
case 7: return g->last_age;
|
|
@@ -517,13 +517,13 @@ uint32 Waypoint::GetNewGRFVariable(const
|
|
|
default:
|
|
|
cargo = st->goods[this->station_scope.cargo_type].cargo.TotalCount();
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
if (HasBit(this->station_scope.statspec->flags, SSF_DIV_BY_STATION_SIZE)) cargo /= (st->train_station.w + st->train_station.h);
|
|
|
cargo = min(0xfff, cargo);
|
|
|
cargo = std::min(0xfffu, cargo);
|
|
|
|
|
|
if (cargo > this->station_scope.statspec->cargo_threshold) {
|
|
|
if (group->num_loading > 0) {
|
|
|
uint set = ((cargo - this->station_scope.statspec->cargo_threshold) * group->num_loading) / (4096 - this->station_scope.statspec->cargo_threshold);
|
|
|
return group->loading[set];
|
|
|
}
|