SegmentState *seg;
const SegmentInfo *segi;
long overall, remain;
- int *invert_likehere, *invert_unlikehere;
- TrainState *tra= s->trains[l->tran];
+ int *invert_likehere, *invert_unlikehere, train_inverted_here;
+ TrainState *tra= &s.trains[l->tran];
if (l->ec) return;
- segn= tra->segn;
- seg= &s->segs[segn];
+ segn= tra->foredetect;
+ seg= &s.segments[segn];
remain= overall= advance + speed * SPEED_CLEAR_MULT;
for (;;) {
segn= tloc.segn;
- seg= &s->segs[segn];
- segi= &info_segment[segn];
+ seg= &s.segments[segn];
+ segi= &info_segments[segn];
if (check_clash) {
if (seg->tr_updated) {
- *ec= safety_problem(tloc.segn, l->tran, "self-collision");
+ l->ec= safety_problem(tloc.segn, l->tran, "self-collision");
return;
}
if (seg->owned) {
- if (seg->owner != tran) {
+ if (seg->owner != l->tran) {
l->ec= safety_problem(tloc.segn, l->tran, seg->owner, "collision"
- " with %s", info_trans[seg->owner].pname);
+ " with %s", info_trains[seg->owner].pname);
return;
}
seg_clear_stale(seg);
}
seg->owned= 1;
- seg->owner_backwards= tloc.backwards ^ backwards;
+ seg->tr_backwards= tloc.backwards ^ backwards;
seg->tr_updated= 1;
- seg->tran= l->tran;
+ seg->owner= l->tran;
train_inverted_here= seg->seg_inverted ^ seg->tr_backwards;
invert_likehere= &l->invert_count[train_inverted_here];