(svn r2361) - Feature: [newgrf] Implement varaction2 property 0x41 and 0xDA. These are the position in and length of chain of consecutive vehicles with the same type, and index of the next wagon in the chain (INVALID_VEHICLE if last), resp. Improves displaying of some engines in the dbsetxl.
authorhackykid
Sun, 22 May 2005 14:10:20 +0000
changeset 1855 caf6d1396112
parent 1854 8e246ac3d172
child 1856 8fd9852cb251
(svn r2361) - Feature: [newgrf] Implement varaction2 property 0x41 and 0xDA. These are the position in and length of chain of consecutive vehicles with the same type, and index of the next wagon in the chain (INVALID_VEHICLE if last), resp. Improves displaying of some engines in the dbsetxl.
engine.c
--- a/engine.c	Sun May 22 08:09:40 2005 +0000
+++ b/engine.c	Sun May 22 14:10:20 2005 +0000
@@ -360,18 +360,20 @@
 						veh = GetFirstVehicleInChain(veh);
 				}
 
-				if (dsg->variable == 0x40) {
+				if (dsg->variable == 0x40 || dsg->variable == 0x41) {
 					if (veh->type == VEH_Train) {
 						Vehicle *u = GetFirstVehicleInChain(veh);
 						byte chain_before = 0, chain_after = 0;
 
 						while (u != veh) {
+							chain_before++;
+							if (dsg->variable == 0x41 && u->engine_type != veh->engine_type)
+								chain_before = 0;
 							u = u->next;
-							chain_before++;
 						}
-						while (u->next != NULL) {
+						while (u->next != NULL && (dsg->variable == 0x40 || u->next->engine_type == veh->engine_type)) {
+							chain_after++;
 							u = u->next;
-							chain_after++;
 						};
 
 						value = chain_before | chain_after << 8
@@ -446,8 +448,7 @@
 						veh_prop(0x57, veh->profit_last_year & 0xFF);
 						veh_prop(0x58, veh->profit_last_year);
 						veh_prop(0x59, veh->profit_last_year & 0xFF);
-/*						veh_prop(0x5A, veh->next_in_chain_old);
-						veh_prop(0x5B, veh->next_in_chain_old & 0xFF);*/
+						veh_prop(0x5A, veh->next == NULL ? INVALID_VEHICLE : veh->next->index);
 						veh_prop(0x5C, veh->value);
 						veh_prop(0x5D, veh->value & 0xFFFFFF);
 						veh_prop(0x5E, veh->value & 0xFFFF);