(svn r3087) Rewrite GetPlayerRailtypes() so it doesn't depend on magical numbers to sort out wagons
authortron
Tue, 25 Oct 2005 18:29:32 +0000
changeset 2554 92c3fe9f1412
parent 2553 61b874492872
child 2555 6ec2270f7ae7
(svn r3087) Rewrite GetPlayerRailtypes() so it doesn't depend on magical numbers to sort out wagons
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;