(svn r3087) Rewrite GetPlayerRailtypes() so it doesn't depend on magical numbers to sort out wagons
--- 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;