From 6065b27f40ab826707d212b31619c82b2bef79fb Mon Sep 17 00:00:00 2001 From: hackykid Date: Sun, 22 May 2005 14:10:20 +0000 Subject: [PATCH] (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 | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/engine.c b/engine.c index 85d1611277..f06d958b15 100644 --- a/engine.c +++ b/engine.c @@ -360,18 +360,20 @@ static RealSpriteGroup* ResolveVehicleSpriteGroup(SpriteGroup *spritegroup, 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) { - u = u->next; chain_before++; - } - while (u->next != NULL) { + if (dsg->variable == 0x41 && u->engine_type != veh->engine_type) + chain_before = 0; u = u->next; + } + while (u->next != NULL && (dsg->variable == 0x40 || u->next->engine_type == veh->engine_type)) { chain_after++; + u = u->next; }; value = chain_before | chain_after << 8 @@ -446,8 +448,7 @@ static RealSpriteGroup* ResolveVehicleSpriteGroup(SpriteGroup *spritegroup, 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);