| 462 | } |
| 463 | |
| 464 | static void DrawTileLayout(const TileInfo *ti, const DrawTileSpriteSpan &dts, uint8_t stage, HouseID house_id) |
| 465 | { |
| 466 | const HouseSpec *hs = HouseSpec::Get(house_id); |
| 467 | PaletteID palette = GetColourPalette(hs->random_colour[TileHash2Bit(ti->x, ti->y)]); |
| 468 | if (hs->callback_mask.Test(HouseCallbackMask::Colour)) { |
| 469 | uint16_t callback = GetHouseCallback(CBID_HOUSE_COLOUR, 0, 0, house_id, Town::GetByTile(ti->tile), ti->tile); |
| 470 | if (callback != CALLBACK_FAILED) { |
| 471 | /* If bit 14 is set, we should use a 2cc colour map, else use the callback value. */ |
| 472 | palette = HasBit(callback, 14) ? GB(callback, 0, 8) + SPR_2CCMAP_BASE : callback; |
| 473 | } |
| 474 | } |
| 475 | |
| 476 | SpriteID image = dts.ground.sprite; |
| 477 | PaletteID pal = dts.ground.pal; |
| 478 | |
| 479 | if (HasBit(image, SPRITE_MODIFIER_CUSTOM_SPRITE)) image += stage; |
| 480 | if (HasBit(pal, SPRITE_MODIFIER_CUSTOM_SPRITE)) pal += stage; |
| 481 | |
| 482 | if (GB(image, 0, SPRITE_WIDTH) != 0) { |
| 483 | DrawGroundSprite(image, GroundSpritePaletteTransform(image, pal, palette)); |
| 484 | } |
| 485 | |
| 486 | DrawNewGRFTileSeq(ti, &dts, TO_HOUSES, stage, palette); |
| 487 | } |
| 488 | |
| 489 | void DrawNewHouseTile(TileInfo *ti, HouseID house_id) |
| 490 | { |
no test coverage detected