Changeset - r14177:eb894a949258
[Not reviewed]
master
0 2 0
yexo - 14 years ago 2010-01-05 21:36:05
yexo@openttd.org
(svn r18736) -Feature [NewGRF]: implement varaction2houses vars 66 ad 67
2 files changed with 34 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/house.h
Show inline comments
 
@@ -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
src/newgrf_house.cpp
Show inline comments
 
@@ -308,6 +308,39 @@ static uint32 HouseGetVariable(const Res
 

	
 
		/* 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);
0 comments (0 inline, 0 general)