+void Timetable::block_reserved(Block &block, Train *trn)
+{
+ if(&block==pending_block && trn==pending_train)
+ {
+ Row &row = rows[current_row];
+ if(row.type==TRAVEL_PAST && !pending_train)
+ {
+ pending_block = 0;
+ current_row = (current_row+1)%rows.size();
+ executing = true;
+ }
+ }
+}
+
+void Timetable::train_advanced(Block &block)
+{
+ Row &row = rows[current_row];
+ if(row.type==TRAVEL_PAST && &block==pending_block && pending_train)
+ pending_train = 0;
+}
+