OpenTTD Source 20260711-master-g3fb3006dff
newgrf_house.h File Reference

Functions related to NewGRF houses. More...

#include "newgrf_callbacks.h"
#include "tile_cmd.h"
#include "house_type.h"
#include "newgrf_spritegroup.h"
#include "newgrf_town.h"

Go to the source code of this file.

Data Structures

struct  HouseScopeResolver
 Scope resolver for houses. More...
struct  HouseResolverObject
 Resolver object to be used for houses (feature 07 spritegroups). More...
struct  HouseClassMapping
 Makes class IDs unique to each GRF file. More...

Functions

void ResetHouseClassIDs ()
HouseClassID AllocateHouseClassID (uint8_t grf_class_id, GrfID grfid)
 Allocate a house class for the given NewGRF and ID.
void InitializeBuildingCounts ()
 Initialise global building counts and all town building counts.
void InitializeBuildingCounts (Town *t)
 Initialise building counts for a town.
void IncreaseBuildingCount (Town *t, HouseID house_id)
 IncreaseBuildingCount() Increase the count of a building when it has been added by a town.
void DecreaseBuildingCount (Town *t, HouseID house_id)
 DecreaseBuildingCount() Decrease the number of a building when it is deleted.
std::span< const uint > GetBuildingHouseIDCounts ()
 Get read-only span of total HouseID building counts.
void DrawNewHouseTile (TileInfo *ti, HouseID house_id)
void DrawNewHouseTileInGUI (int x, int y, const HouseSpec *spec, HouseID house_id, int view)
 Draw representation of a house tile for GUI purposes.
void AnimateNewHouseTile (TileIndex tile)
void TriggerHouseAnimation_ConstructionStageChanged (TileIndex tile, bool first_call)
void TriggerHouseAnimation_WatchedCargoAccepted (TileIndex tile, CargoTypes trigger_cargoes)
 Run watched cargo accepted callback for a house.
uint16_t GetHouseCallback (CallbackID callback, uint32_t param1, uint32_t param2, HouseID house_id, Town *town, TileIndex tile, std::span< int32_t > regs100={}, bool not_yet_constructed=false, uint8_t initial_random_bits=0, CargoTypes watched_cargo_triggers={}, int view=0)
 Get the result of a house callback.
bool CanDeleteHouse (TileIndex tile)
bool NewHouseTileLoop (TileIndex tile)
void TriggerHouseRandomisation (TileIndex t, HouseRandomTrigger trigger)

Detailed Description

Functions related to NewGRF houses.

Definition in file newgrf_house.h.

Function Documentation

◆ AllocateHouseClassID()

HouseClassID AllocateHouseClassID ( uint8_t grf_class_id,
GrfID grfid )

Allocate a house class for the given NewGRF and ID.

Parameters
grf_class_idThe class id within the NewGRF.
grfidThe GRF this class belongs to.
Returns
The existing allocation, or a new one when it did not exist yet.

Definition at line 145 of file newgrf_house.cpp.

References HouseClassMapping::class_id, and HouseClassMapping::grfid.

Referenced by TownHouseChangeInfo().

◆ AnimateNewHouseTile()

void AnimateNewHouseTile ( TileIndex tile)

Definition at line 590 of file newgrf_house.cpp.

◆ CanDeleteHouse()

bool CanDeleteHouse ( TileIndex tile)

Definition at line 607 of file newgrf_house.cpp.

◆ DecreaseBuildingCount()

void DecreaseBuildingCount ( Town * t,
HouseID house_id )

DecreaseBuildingCount() Decrease the number of a building when it is deleted.

Parameters
tThe town that the building was built in
house_idThe id of the house being removed

Definition at line 217 of file newgrf_house.cpp.

References TownCache::building_counts, Town::cache, HouseSpec::class_id, and HouseSpec::Get().

Referenced by DoClearTownHouseHelper().

◆ DrawNewHouseTile()

void DrawNewHouseTile ( TileInfo * ti,
HouseID house_id )

Definition at line 508 of file newgrf_house.cpp.

◆ DrawNewHouseTileInGUI()

void DrawNewHouseTileInGUI ( int x,
int y,
const HouseSpec * spec,
HouseID house_id,
int view )

◆ GetBuildingHouseIDCounts()

std::span< const uint > GetBuildingHouseIDCounts ( )

Get read-only span of total HouseID building counts.

Returns
span of HouseID building counts.

Definition at line 187 of file newgrf_house.cpp.

Referenced by HousePickerCallbacks::FillUsedItems().

◆ GetHouseCallback()

uint16_t GetHouseCallback ( CallbackID callback,
uint32_t param1,
uint32_t param2,
HouseID house_id,
Town * town,
TileIndex tile,
std::span< int32_t > regs100,
bool not_yet_constructed,
uint8_t initial_random_bits,
CargoTypes watched_cargo_triggers,
int view )

Get the result of a house callback.

Parameters
callbackCallback ID.
param1First parameter (var 10) of the callback.
param2Second parameter (var 18) of the callback.
house_idHouse to query.
townTown containing the house.
tileTile containing the house.
[out]regs100Additional result values from registers 100+.
not_yet_constructedHouse is still under construction.
initial_random_bitsRandom bits during construction checks.
watched_cargo_triggersCargo types that triggered the watched cargo callback.
viewThe house's 'view'.
Returns
The NewGRF result of the callback.

Definition at line 475 of file newgrf_house.cpp.

Referenced by AddAcceptedCargoOfHouse(), AddProducedCargo_Town(), DrawNewHouseTileInGUI(), GetFoundation_Town(), GetHouseName(), GetProducedCargoOfHouse(), GetTileDesc_Town(), TerraformTile_Town(), TileLoop_Town(), and TryBuildTownHouse().

◆ IncreaseBuildingCount()

void IncreaseBuildingCount ( Town * t,
HouseID house_id )

IncreaseBuildingCount() Increase the count of a building when it has been added by a town.

Parameters
tThe town that the building is being built in
house_idThe id of the house being added

Definition at line 198 of file newgrf_house.cpp.

References TownCache::building_counts, Town::cache, HouseSpec::class_id, and HouseSpec::Get().

Referenced by ClearMakeHouseTile(), and RebuildTownCaches().

◆ InitializeBuildingCounts() [1/2]

void InitializeBuildingCounts ( )

Initialise global building counts and all town building counts.

Definition at line 171 of file newgrf_house.cpp.

References InitializeBuildingCounts(), and HouseSpec::Specs().

Referenced by DoCreateTown(), GenerateWorld(), InitializeBuildingCounts(), and RebuildTownCaches().

◆ InitializeBuildingCounts() [2/2]

void InitializeBuildingCounts ( Town * t)

Initialise building counts for a town.

Parameters
tTown cache to initialise.

Definition at line 160 of file newgrf_house.cpp.

References TownCache::building_counts, Town::cache, and HouseSpec::Specs().

◆ NewHouseTileLoop()

bool NewHouseTileLoop ( TileIndex tile)

Definition at line 643 of file newgrf_house.cpp.

◆ ResetHouseClassIDs()

void ResetHouseClassIDs ( )

Definition at line 131 of file newgrf_house.cpp.

◆ TriggerHouseAnimation_ConstructionStageChanged()

void TriggerHouseAnimation_ConstructionStageChanged ( TileIndex tile,
bool first_call )

Definition at line 598 of file newgrf_house.cpp.

◆ TriggerHouseAnimation_WatchedCargoAccepted()

void TriggerHouseAnimation_WatchedCargoAccepted ( TileIndex tile,
CargoTypes trigger_cargoes )

Run watched cargo accepted callback for a house.

Parameters
tileHouse tile.
trigger_cargoesTriggering cargo types.
Precondition
IsTileType(t, TileType::House)

Definition at line 755 of file newgrf_house.cpp.

References BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Any(), HouseSpec::building_flags, DoTriggerHouseAnimation_WatchedCargoAccepted(), HouseSpec::Get(), GetHouseNorthPart(), GetHouseType(), House, IsTileType(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::None(), TileAddXY(), and HouseSpec::watched_cargoes.

Referenced by TriggerWatchedCargoCallbacks().

◆ TriggerHouseRandomisation()

void TriggerHouseRandomisation ( TileIndex t,
HouseRandomTrigger trigger )

Definition at line 730 of file newgrf_house.cpp.