mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r4896) - NewGRF: add support for vehicle property 0x25 (user defined data) used by variable 0x42.
This commit is contained in:
parent
afd69f53f5
commit
5a65e3301e
1
engine.h
1
engine.h
|
@ -30,6 +30,7 @@ typedef struct RailVehicleInfo {
|
|||
// kind of visual effect to generate for a vehicle (default, steam, diesel, electric).
|
||||
// Same goes for the callback result, which atm is only used to check if a wagon is powered.
|
||||
byte shorten_factor; // length on main map for this type is 8 - shorten_factor
|
||||
byte user_def_data; ///! Property 0x25: "User-defined bit mask" Used only for (very few) NewGRF vehicles
|
||||
} RailVehicleInfo;
|
||||
|
||||
typedef struct ShipVehicleInfo {
|
||||
|
|
5
newgrf.c
5
newgrf.c
|
@ -437,6 +437,10 @@ static bool RailVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf
|
|||
}
|
||||
break;
|
||||
|
||||
case 0x25: /* User-defined bit mask to set when checking veh. var. 42 */
|
||||
FOR_EACH_OBJECT rvi[i].user_def_data = grf_load_byte(&buf);
|
||||
break;
|
||||
|
||||
case 0x27: /* Miscellaneous flags */
|
||||
FOR_EACH_OBJECT ei[i].misc_flags = grf_load_byte(&buf);
|
||||
break;
|
||||
|
@ -454,7 +458,6 @@ static bool RailVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf
|
|||
case 0x1C: /* Refit cost */
|
||||
case 0x1F: /* Tractive effort */
|
||||
case 0x20: /* Air drag */
|
||||
case 0x25: /* User-defined bit mask to set when checking veh. var. 42 */
|
||||
case 0x26: /* Retire vehicle early */
|
||||
/* TODO */
|
||||
FOR_EACH_OBJECT grf_load_byte(&buf);
|
||||
|
|
|
@ -534,6 +534,7 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
|
|||
byte cargo_classes = 0;
|
||||
uint common_cargo_best = 0;
|
||||
uint common_cargos[NUM_GLOBAL_CID];
|
||||
byte user_def_data = 0;
|
||||
CargoID cargo;
|
||||
CargoID common_cargo_type = GC_PASSENGERS;
|
||||
|
||||
|
@ -547,6 +548,7 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
|
|||
cargo = _global_cargo_id[_opt.landscape][u->cargo_type];
|
||||
cargo_classes |= _cargo_classes[cargo];
|
||||
common_cargos[cargo]++;
|
||||
user_def_data |= RailVehInfo(u->engine_type)->user_def_data;
|
||||
}
|
||||
|
||||
/* Pick the most common cargo type */
|
||||
|
@ -557,7 +559,7 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
|
|||
}
|
||||
}
|
||||
|
||||
return cargo_classes | (common_cargo_type << 8);
|
||||
return cargo_classes | (common_cargo_type << 8) | (user_def_data << 24);
|
||||
}
|
||||
|
||||
case 0x43: /* Player information */
|
||||
|
|
|
@ -324,7 +324,7 @@ const EngineInfo orig_engine_info[] = {
|
|||
* @param j cargo_type
|
||||
* @param k ai_rank
|
||||
*/
|
||||
#define RVI(a, b, c, d, e, f, g, h, i, j, k) { a, b, c, d, e, f, g, h, h, i, j, k, 0, 0, 0, 0, 0 }
|
||||
#define RVI(a, b, c, d, e, f, g, h, i, j, k) { a, b, c, d, e, f, g, h, h, i, j, k, 0, 0, 0, 0, 0, 0 }
|
||||
#define M RVI_MULTIHEAD
|
||||
#define W RVI_WAGON
|
||||
#define S 0
|
||||
|
|
Loading…
Reference in New Issue