mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Iterate group vehicle list for UpdateAllServiceInterval, UpdateServiceInterval, TrainAccelerationModelChanged, TrainSlopeSteepnessChanged, RoadVehAccelerationModelChanged, RoadVehSlopeSteepnessChanged, CheckFreeformEdges and InvalidateShipPathCache
parent
c5dc61e0f8
commit
1f4ca2ed07
|
@ -160,13 +160,17 @@ static void UpdateAllServiceInterval(int32_t new_value)
|
||||||
|
|
||||||
if (update_vehicles) {
|
if (update_vehicles) {
|
||||||
const Company *c = Company::Get(_current_company);
|
const Company *c = Company::Get(_current_company);
|
||||||
for (Vehicle *v : Vehicle::Iterate()) {
|
for (VehicleType type = VEH_BEGIN; type < VEH_COMPANY_END; type++) {
|
||||||
if (v->owner == _current_company && v->IsPrimaryVehicle() && !v->ServiceIntervalIsCustom()) {
|
const VehicleList &vehicle_list = c->group_all[type].vehicle_list;
|
||||||
|
for (const Vehicle *vehicle : vehicle_list) {
|
||||||
|
Vehicle *v = Vehicle::Get(vehicle->index);
|
||||||
|
if (!v->ServiceIntervalIsCustom()) {
|
||||||
v->SetServiceInterval(CompanyServiceInterval(c, v->type));
|
v->SetServiceInterval(CompanyServiceInterval(c, v->type));
|
||||||
v->SetServiceIntervalIsPercent(new_value != 0);
|
v->SetServiceIntervalIsPercent(new_value != 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SetWindowClassesDirty(WC_VEHICLE_DETAILS);
|
SetWindowClassesDirty(WC_VEHICLE_DETAILS);
|
||||||
}
|
}
|
||||||
|
@ -188,8 +192,10 @@ static bool CanUpdateServiceInterval(VehicleType, int32_t &new_value)
|
||||||
static void UpdateServiceInterval(VehicleType type, int32_t new_value)
|
static void UpdateServiceInterval(VehicleType type, int32_t new_value)
|
||||||
{
|
{
|
||||||
if (_game_mode != GM_MENU && Company::IsValidID(_current_company)) {
|
if (_game_mode != GM_MENU && Company::IsValidID(_current_company)) {
|
||||||
for (Vehicle *v : Vehicle::Iterate()) {
|
const VehicleList &vehicle_list = Company::Get(_current_company)->group_all[type].vehicle_list;
|
||||||
if (v->owner == _current_company && v->type == type && v->IsPrimaryVehicle() && !v->ServiceIntervalIsCustom()) {
|
for (const Vehicle *vehicle : vehicle_list) {
|
||||||
|
Vehicle *v = Vehicle::Get(vehicle->index);
|
||||||
|
if (!v->ServiceIntervalIsCustom()) {
|
||||||
v->SetServiceInterval(new_value);
|
v->SetServiceInterval(new_value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -200,8 +206,10 @@ static void UpdateServiceInterval(VehicleType type, int32_t new_value)
|
||||||
|
|
||||||
static void TrainAccelerationModelChanged(int32_t)
|
static void TrainAccelerationModelChanged(int32_t)
|
||||||
{
|
{
|
||||||
for (Train *t : Train::Iterate()) {
|
for (const Company *c : Company::Iterate()) {
|
||||||
if (t->IsFrontEngine()) {
|
const VehicleList &vehicle_list = c->group_all[VEH_TRAIN].vehicle_list;
|
||||||
|
for (const Vehicle *v : vehicle_list) {
|
||||||
|
Train *t = Train::From(Vehicle::Get(v->index));
|
||||||
t->tcache.cached_max_curve_speed = t->GetCurveSpeedLimit();
|
t->tcache.cached_max_curve_speed = t->GetCurveSpeedLimit();
|
||||||
t->UpdateAcceleration();
|
t->UpdateAcceleration();
|
||||||
}
|
}
|
||||||
|
@ -218,8 +226,11 @@ static void TrainAccelerationModelChanged(int32_t)
|
||||||
*/
|
*/
|
||||||
static void TrainSlopeSteepnessChanged(int32_t)
|
static void TrainSlopeSteepnessChanged(int32_t)
|
||||||
{
|
{
|
||||||
for (Train *t : Train::Iterate()) {
|
for (const Company *c : Company::Iterate()) {
|
||||||
if (t->IsFrontEngine()) t->CargoChanged();
|
const VehicleList &vehicle_list = c->group_all[VEH_TRAIN].vehicle_list;
|
||||||
|
for (const Vehicle *v : vehicle_list) {
|
||||||
|
Train::From(Vehicle::Get(v->index))->CargoChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,9 +240,10 @@ static void TrainSlopeSteepnessChanged(int32_t)
|
||||||
static void RoadVehAccelerationModelChanged(int32_t)
|
static void RoadVehAccelerationModelChanged(int32_t)
|
||||||
{
|
{
|
||||||
if (_settings_game.vehicle.roadveh_acceleration_model != AM_ORIGINAL) {
|
if (_settings_game.vehicle.roadveh_acceleration_model != AM_ORIGINAL) {
|
||||||
for (RoadVehicle *rv : RoadVehicle::Iterate()) {
|
for (const Company *c : Company::Iterate()) {
|
||||||
if (rv->IsFrontEngine()) {
|
const VehicleList &vehicle_list = c->group_all[VEH_ROAD].vehicle_list;
|
||||||
rv->CargoChanged();
|
for (const Vehicle *v : vehicle_list) {
|
||||||
|
RoadVehicle::From(Vehicle::Get(v->index))->CargoChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -247,8 +259,11 @@ static void RoadVehAccelerationModelChanged(int32_t)
|
||||||
*/
|
*/
|
||||||
static void RoadVehSlopeSteepnessChanged(int32_t)
|
static void RoadVehSlopeSteepnessChanged(int32_t)
|
||||||
{
|
{
|
||||||
for (RoadVehicle *rv : RoadVehicle::Iterate()) {
|
for (const Company *c : Company::Iterate()) {
|
||||||
if (rv->IsFrontEngine()) rv->CargoChanged();
|
const VehicleList &vehicle_list = c->group_all[VEH_ROAD].vehicle_list;
|
||||||
|
for (const Vehicle *v : vehicle_list) {
|
||||||
|
RoadVehicle::From(Vehicle::Get(v->index))->CargoChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -344,13 +359,17 @@ static bool CheckFreeformEdges(int32_t &new_value)
|
||||||
{
|
{
|
||||||
if (_game_mode == GM_MENU) return true;
|
if (_game_mode == GM_MENU) return true;
|
||||||
if (new_value != 0) {
|
if (new_value != 0) {
|
||||||
for (Ship *s : Ship::Iterate()) {
|
for (const Company *c : Company::Iterate()) {
|
||||||
|
const VehicleList &vehicle_list = c->group_all[VEH_SHIP].vehicle_list;
|
||||||
|
for (const Vehicle *v : vehicle_list) {
|
||||||
|
const Ship *s = Ship::From(v);
|
||||||
/* Check if there is a ship on the northern border. */
|
/* Check if there is a ship on the northern border. */
|
||||||
if (TileX(s->tile) == 0 || TileY(s->tile) == 0) {
|
if (TileX(s->tile) == 0 || TileY(s->tile) == 0) {
|
||||||
ShowErrorMessage(STR_CONFIG_SETTING_EDGES_NOT_EMPTY, INVALID_STRING_ID, WL_ERROR);
|
ShowErrorMessage(STR_CONFIG_SETTING_EDGES_NOT_EMPTY, INVALID_STRING_ID, WL_ERROR);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
for (const BaseStation *st : BaseStation::Iterate()) {
|
for (const BaseStation *st : BaseStation::Iterate()) {
|
||||||
/* Check if there is a non-deleted buoy on the northern border. */
|
/* Check if there is a non-deleted buoy on the northern border. */
|
||||||
if (st->IsInUse() && (TileX(st->xy) == 0 || TileY(st->xy) == 0)) {
|
if (st->IsInUse() && (TileX(st->xy) == 0 || TileY(st->xy) == 0)) {
|
||||||
|
@ -456,8 +475,11 @@ static void MaxVehiclesChanged(int32_t)
|
||||||
|
|
||||||
static void InvalidateShipPathCache(int32_t)
|
static void InvalidateShipPathCache(int32_t)
|
||||||
{
|
{
|
||||||
for (Ship *s : Ship::Iterate()) {
|
for (const Company *c : Company::Iterate()) {
|
||||||
s->path.clear();
|
const VehicleList &vehicle_list = c->group_all[VEH_SHIP].vehicle_list;
|
||||||
|
for (const Vehicle *v : vehicle_list) {
|
||||||
|
Ship::From(Vehicle::Get(v->index))->path.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue