X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Ftrainrouter.cpp;h=100842b6001fc44ebbf32a06e08ed0331f346189;hb=32739f060d1c025756b3ed702da1cbbdd6793064;hp=8de191b70ef0ac6fcf5cae6e289d238e3038d35a;hpb=110a865e1a175f304ecaaa7a31b6985cf0c12a99;p=r2c2.git diff --git a/source/libr2c2/trainrouter.cpp b/source/libr2c2/trainrouter.cpp index 8de191b..100842b 100644 --- a/source/libr2c2/trainrouter.cpp +++ b/source/libr2c2/trainrouter.cpp @@ -14,7 +14,7 @@ namespace R2C2 { TrainRouter::TrainRouter(Train &t): TrainAI(t), priority(0), - arriving(false), + arriving(0), dest_zone(0), dest_block(0), update_pending(false) @@ -55,7 +55,7 @@ bool TrainRouter::set_route(const Route *r) if(r) routes.push_back(r); train.stop_at(0); - arriving = false; + arriving = 0; train.refresh_blocks_from(*fncb); @@ -142,12 +142,14 @@ void TrainRouter::tick(const Time::TimeDelta &) if(update_pending) create_plans(train.get_layout()); - if(arriving && !train.get_speed()) + if(arriving==1 && !train.get_speed()) { signal_arrived.emit(); signal_event.emit(Message("arrived")); - set_route(0); + arriving = 2; } + else if(arriving==2 && !train.get_block_allocator().is_active()) + set_route(0); } void TrainRouter::save(list &st) const @@ -223,7 +225,7 @@ void TrainRouter::train_advanced(Block &block) { b_iter = b_iter.next(); if(b_iter && !is_on_route(*b_iter)) - arriving = true; + arriving = 1; } }