File diff r18861:a0daedca90f7 → r18862:80d0a0322356
src/newgrf_house.cpp
Show inline comments
 
@@ -306,49 +306,50 @@ static uint32 HouseGetVariable(const Res
 

	
 
			HouseID new_house = _house_mngr.GetID(parameter, hs->grf_prop.grffile->grfid);
 
			return new_house == INVALID_HOUSE_ID ? 0 : GetNumHouses(new_house, town);
 
		}
 

	
 
		/* Land info for nearby tiles. */
 
		case 0x62: return GetNearbyTileInformation(parameter, tile, object->grffile->grf_version >= 8);
 

	
 
		/* Current animation frame of nearby house tiles */
 
		case 0x63: {
 
			TileIndex testtile = GetNearbyTile(parameter, tile);
 
			return IsTileType(testtile, MP_HOUSE) ? GetAnimationFrame(testtile) : 0;
 
		}
 

	
 
		/* Cargo acceptance history of nearby stations */
 
		case 0x64: {
 
			CargoID cid = GetCargoTranslation(parameter, object->grffile);
 
			if (cid == CT_INVALID) return 0;
 

	
 
			/* Extract tile offset. */
 
			int8 x_offs = GB(GetRegister(0x100), 0, 8);
 
			int8 y_offs = GB(GetRegister(0x100), 8, 8);
 
			TileIndex testtile = TILE_MASK(tile + TileDiffXY(x_offs, y_offs));
 

	
 
			const StationList *sl = StationFinder(TileArea(testtile, 1, 1)).GetStations();
 
			StationFinder stations(TileArea(testtile, 1, 1));
 
			const StationList *sl = stations.GetStations();
 

	
 
			/* Collect acceptance stats. */
 
			uint32 res = 0;
 
			for (Station * const * st_iter = sl->Begin(); st_iter != sl->End(); st_iter++) {
 
				const Station *st = *st_iter;
 
				if (HasBit(st->goods[cid].acceptance_pickup, GoodsEntry::GES_EVER_ACCEPTED))    SetBit(res, 0);
 
				if (HasBit(st->goods[cid].acceptance_pickup, GoodsEntry::GES_LAST_MONTH))       SetBit(res, 1);
 
				if (HasBit(st->goods[cid].acceptance_pickup, GoodsEntry::GES_CURRENT_MONTH))    SetBit(res, 2);
 
				if (HasBit(st->goods[cid].acceptance_pickup, GoodsEntry::GES_ACCEPTED_BIGTICK)) SetBit(res, 3);
 
			}
 

	
 
			/* Cargo triggered CB 148? */
 
			if (HasBit(object->u.house.watched_cargo_triggers, cid)) SetBit(res, 4);
 

	
 
			return 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;