mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-03 21:06:58 +00:00
(svn r18736) -Feature [NewGRF]: implement varaction2houses vars 66 ad 67
This commit is contained in:
parent
435ef4ea8d
commit
75f717cce3
@ -113,7 +113,7 @@ struct HouseSpec {
|
||||
byte random_colour[4]; ///< 4 "random" colours
|
||||
byte probability; ///< Relative probability of appearing (16 is the standard value)
|
||||
HouseExtraFlags extra_flags; ///< some more flags
|
||||
HouseClassID class_id; ///< defines the class this house has (grf file based) @See HouseGetVariable, prop 0x44
|
||||
HouseClassID class_id; ///< defines the class this house has (not grf file based)
|
||||
byte animation_frames; ///< number of animation frames
|
||||
byte animation_speed; ///< amount of time between each of those frames
|
||||
byte processing_time; ///< Periodic refresh multiplier
|
||||
|
@ -308,6 +308,39 @@ static uint32 HouseGetVariable(const ResolverObject *object, byte variable, byte
|
||||
|
||||
/* Distance test for some house types */
|
||||
case 0x65: return GetDistanceFromNearbyHouse(parameter, tile, object->u.house.house_id);
|
||||
|
||||
/* Class and ID of nearby house tile */
|
||||
case 0x66: {
|
||||
TileIndex testtile = GetNearbyTile(parameter, tile);
|
||||
if (!IsTileType(testtile, MP_HOUSE)) return 0xFFFFFFFF;
|
||||
HouseSpec *hs = HouseSpec::Get(GetHouseType(testtile));
|
||||
/* Information about the grf local classid if the house has a class */
|
||||
uint houseclass = 0;
|
||||
if (hs->class_id != HOUSE_NO_CLASS) {
|
||||
houseclass = (hs->grffile == object->grffile ? 1 : 2) << 8;
|
||||
houseclass |= _class_mapping[hs->class_id].class_id;
|
||||
}
|
||||
/* old house type or grf-local houseid */
|
||||
uint local_houseid = 0;
|
||||
if (house_id < NEW_HOUSE_OFFSET) {
|
||||
local_houseid = house_id;
|
||||
} else {
|
||||
local_houseid = (hs->grffile == object->grffile ? 1 : 2) << 8;
|
||||
local_houseid |= hs->local_id;
|
||||
}
|
||||
return houseclass << 16 | local_houseid;
|
||||
}
|
||||
|
||||
/* GRFID of nearby house tile */
|
||||
case 0x67: {
|
||||
TileIndex testtile = GetNearbyTile(parameter, tile);
|
||||
if (!IsTileType(testtile, MP_HOUSE)) return 0xFFFFFFFF;
|
||||
HouseID house_id = GetHouseType(testtile);
|
||||
if (house_id < NEW_HOUSE_OFFSET) return 0;
|
||||
/* Checking the grffile information via HouseSpec doesn't work
|
||||
* in case the newgrf was removed. */
|
||||
return _house_mngr.mapping_ID[house_id].grfid;
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG(grf, 1, "Unhandled house property 0x%X", variable);
|
||||
|
Loading…
Reference in New Issue
Block a user