MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / DrawNewHouseTileInGUI

Function DrawNewHouseTileInGUI

src/newgrf_house.cpp:524–554  ·  view source on GitHub ↗

* Draw representation of a house tile for GUI purposes. * @param x Position x of image. * @param y Position y of image. * @param spec House spec to draw. * @param house_id House ID to draw. * @param view The house's 'view'. */

Source from the content-addressed store, hash-verified

522 * @param view The house's 'view'.
523 */
524void DrawNewHouseTileInGUI(int x, int y, const HouseSpec *spec, HouseID house_id, int view)
525{
526 HouseResolverObject object(house_id, INVALID_TILE, nullptr, CBID_NO_CALLBACK, 0, 0, true, view);
527 const auto *group = object.Resolve<TileLayoutSpriteGroup>();
528 if (group == nullptr) return;
529
530 uint8_t stage = TOWN_HOUSE_COMPLETED;
531 auto processor = group->ProcessRegisters(object, &stage);
532 auto dts = processor.GetLayout();
533
534 PaletteID palette = GetColourPalette(spec->random_colour[0]);
535 if (spec->callback_mask.Test(HouseCallbackMask::Colour)) {
536 uint16_t callback = GetHouseCallback(CBID_HOUSE_COLOUR, 0, 0, house_id, nullptr, INVALID_TILE, {}, true, view);
537 if (callback != CALLBACK_FAILED) {
538 /* If bit 14 is set, we should use a 2cc colour map, else use the callback value. */
539 palette = HasBit(callback, 14) ? GB(callback, 0, 8) + SPR_2CCMAP_BASE : callback;
540 }
541 }
542
543 SpriteID image = dts.ground.sprite;
544 PaletteID pal = dts.ground.pal;
545
546 if (HasBit(image, SPRITE_MODIFIER_CUSTOM_SPRITE)) image += stage;
547 if (HasBit(pal, SPRITE_MODIFIER_CUSTOM_SPRITE)) pal += stage;
548
549 if (GB(image, 0, SPRITE_WIDTH) != 0) {
550 DrawSprite(image, GroundSpritePaletteTransform(image, pal, palette), x, y);
551 }
552
553 DrawNewGRFTileSeqInGUI(x, y, &dts, stage, palette);
554}
555
556/* Simple wrapper for GetHouseCallback to keep the animation unified. */
557static uint16_t GetSimpleHouseCallback(CallbackID callback, uint32_t param1, uint32_t param2, const HouseSpec *spec, Town *town, TileIndex tile, CargoTypes extra_data)

Callers 1

DrawHouseInGUIFunction · 0.85

Calls 10

GetColourPaletteFunction · 0.85
GetHouseCallbackFunction · 0.85
HasBitFunction · 0.85
GBFunction · 0.85
DrawSpriteFunction · 0.85
DrawNewGRFTileSeqInGUIFunction · 0.85
GetLayoutMethod · 0.80
TestMethod · 0.80
ProcessRegistersMethod · 0.45

Tested by

no test coverage detected