X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Flibr2c2%2Ftrainrouter.cpp;h=8de191b70ef0ac6fcf5cae6e289d238e3038d35a;hb=57e0944ee8ed442e2d0aa7c9964cac00450af5e7;hp=a5e0d56543e13fab7082c5220c2b11f23ed96cce;hpb=4eea980c210c3f3bf5520c1e3d68426a4669db8a;p=r2c2.git diff --git a/source/libr2c2/trainrouter.cpp b/source/libr2c2/trainrouter.cpp index a5e0d56..8de191b 100644 --- a/source/libr2c2/trainrouter.cpp +++ b/source/libr2c2/trainrouter.cpp @@ -30,14 +30,14 @@ void TrainRouter::set_priority(int p) bool TrainRouter::set_route(const Route *r) { - train.free_noncritical_blocks(); + BlockIter fncb = train.get_first_noncritical_block(); Route *lead = 0; if(r && train.is_placed()) { const BlockAllocator &allocator = train.get_block_allocator(); TrackIter first = allocator.first().track_iter(); - TrackIter next = allocator.last().next().track_iter(); + TrackIter next = fncb.track_iter(); if(!r->has_track(*next)) { lead = Route::find(next, *r); @@ -57,7 +57,7 @@ bool TrainRouter::set_route(const Route *r) train.stop_at(0); arriving = false; - train.reserve_more(); + train.refresh_blocks_from(*fncb); const Route *route = get_route(); signal_route_changed.emit(route); @@ -144,7 +144,6 @@ void TrainRouter::tick(const Time::TimeDelta &) if(arriving && !train.get_speed()) { - train.set_active(false); signal_arrived.emit(); signal_event.emit(Message("arrived")); set_route(0);