# HG changeset patch # User peter1138 # Date 1151011869 0 # Node ID 0718dffb813fbdee1e8e1d80dccf1c4f0d8e3f83 # Parent 4debead5004dbaf38df83e2d483586c9147f927f (svn r5338) - NewGRF: add support for vehicle variable 48, vehicle type info (more mart3p) diff --git a/newgrf_engine.c b/newgrf_engine.c --- a/newgrf_engine.c +++ b/newgrf_engine.c @@ -502,6 +502,21 @@ } +static uint32 GetVehicleTypeInfo(EngineID engine_type) +{ + /* Bit 0 Vehicle type is available on the market + * Bit 1 Vehicle type is in the testing phase + * Bit 2 Exclusive testing offer for a human player active */ + const Engine *e = GetEngine(engine_type); + uint32 var = 0; + + if (e->player_avail == 0xFF) SETBIT(var, 0); + if (e->age < e->duration_phase_1) SETBIT(var, 1); + if (e->player_avail > 0 && e->player_avail != 0xFF) SETBIT(var, 2); + return var; +} + + static uint32 GetGRFParameter(EngineID engine_type, byte parameter) { const GRFFile *file = GetEngineGRF(engine_type); @@ -520,6 +535,7 @@ switch (variable) { case 0x43: return _current_player; /* Owner information */ case 0x46: return 0; /* Motion counter */ + case 0x48: return GetVehicleTypeInfo(object->u.vehicle.self_type); /* Vehicle Type Info */ case 0xC4: return _cur_year; /* Build year */ case 0xDA: return INVALID_VEHICLE; /* Next vehicle */ case 0x7F: return GetGRFParameter(object->u.vehicle.self_type, parameter); /* Read GRF parameter */ @@ -626,6 +642,8 @@ return (_cargo_classes[cid] << 16) | (_cargoc.weights[v->cargo_type] << 8) | cid; } + case 0x48: return GetVehicleTypeInfo(v->engine_type); /* Vehicle Type Info */ + /* Variables which use the parameter */ case 0x60: /* Count consist's engine ID occurance */ if (v->type != VEH_Train) return v->engine_type == parameter;