mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r1740) -Fix: [ 1112342 ] Realistic acceleration works properly with TTDPatch non-stop handling behaviour
This commit is contained in:
parent
55e1eab1a2
commit
94f6208bde
21
train_cmd.c
21
train_cmd.c
|
@ -62,6 +62,25 @@ enum AccelType {
|
|||
AM_BRAKE
|
||||
};
|
||||
|
||||
static bool TrainShouldStop(Vehicle *v, TileIndex tile)
|
||||
{
|
||||
Order *o = &v->current_order;
|
||||
assert(v->type == VEH_Train);
|
||||
assert(IsTileType(v->tile, MP_STATION));
|
||||
//When does a train drive through a station
|
||||
//first we deal with the "new nonstop handling"
|
||||
if ( _patches.new_nonstop && o->flags & OF_NON_STOP && _map2[tile] == o->station )
|
||||
return false;
|
||||
|
||||
if (v->last_station_visited == _map2[tile])
|
||||
return false;
|
||||
|
||||
if ( _map2[tile] != o->station && (o->flags & OF_NON_STOP || _patches.new_nonstop))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//new acceleration
|
||||
static int GetTrainAcceleration(Vehicle *v, bool mode)
|
||||
{
|
||||
|
@ -137,7 +156,7 @@ static int GetTrainAcceleration(Vehicle *v, bool mode)
|
|||
{0, 0}, {-1, 0}, {0, 0}, {0, 1}, {0, 0}, {1, 0}, {0, 0}, {0, -1}
|
||||
};
|
||||
|
||||
if (((v->current_order.station == _map2[v->tile]) || !(v->current_order.flags & OF_NON_STOP)) && v->last_station_visited != _map2[v->tile]) {
|
||||
if (TrainShouldStop(v, v->tile)) {
|
||||
int station_length = 0;
|
||||
TileIndex tile = v->tile;
|
||||
int delta_v;
|
||||
|
|
Loading…
Reference in New Issue