# HG changeset patch # User tron # Date 1130264972 0 # Node ID 92c3fe9f14126e56c161499875a0e8f913870607 # Parent 61b874492872e26c92ddfba59b0096e361d2b52c (svn r3087) Rewrite GetPlayerRailtypes() so it doesn't depend on magical numbers to sort out wagons diff -r 61b874492872 -r 92c3fe9f1412 players.c --- a/players.c Mon Oct 24 20:12:39 2005 +0000 +++ b/players.c Tue Oct 25 18:29:32 2005 +0000 @@ -617,20 +617,18 @@ byte GetPlayerRailtypes(PlayerID p) { - Engine *e; - int rt = 0; - int i; + byte rt = 0; + uint i; - for(e = _engines, i = 0; i != lengthof(_engines); e++, i++) { - if (!HASBIT(e->player_avail, p)) - continue; + for (i = 0; i != TOTAL_NUM_ENGINES; i++) { + const Engine* e = GetEngine(i); - /* Skip all wagons */ - if ((i >= 27 && i < 54) || (i >= 57 && i < 84) || (i >= 89 && i < 116)) - continue; - - assert(e->railtype < RAILTYPE_END); - SETBIT(rt, e->railtype); + if (e->type == VEH_Train && + HASBIT(e->player_avail, p) && + !(RailVehInfo(i)->flags & RVI_WAGON)) { + assert(e->railtype < RAILTYPE_END); + SETBIT(rt, e->railtype); + } } return rt;