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

Function GetCustomEngineSprite

src/newgrf_engine.cpp:1105–1123  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1103}
1104
1105static void GetCustomEngineSprite(EngineID engine, const Vehicle *v, Direction direction, EngineImageType image_type, VehicleSpriteSeq *result)
1106{
1107 VehicleResolverObject object(engine, v, VehicleResolverObject::WO_CACHED, false, CBID_NO_CALLBACK);
1108 result->Clear();
1109
1110 bool sprite_stack = EngInfo(engine)->misc_flags.Test(EngineMiscFlag::SpriteStack);
1111 uint max_stack = sprite_stack ? static_cast<uint>(std::size(result->seq)) : 1;
1112 for (uint stack = 0; stack < max_stack; ++stack) {
1113 object.callback_param1 = image_type | (stack << 8);
1114 const auto *group = object.Resolve<ResultSpriteGroup>();
1115 int32_t reg100 = sprite_stack ? object.GetRegister(0x100) : 0;
1116 if (group != nullptr && group->num_sprites != 0) {
1117 result->seq[result->count].sprite = group->sprite + (direction % group->num_sprites);
1118 result->seq[result->count].pal = GB(reg100, 0, 16); // zero means default recolouring
1119 result->count++;
1120 }
1121 if (!HasBit(reg100, 31)) break;
1122 }
1123}
1124
1125void GetCustomVehicleSprite(const Vehicle *v, Direction direction, EngineImageType image_type, VehicleSpriteSeq *result)
1126{

Callers 2

GetCustomVehicleSpriteFunction · 0.85
GetCustomVehicleIconFunction · 0.85

Calls 7

EngInfoFunction · 0.85
GBFunction · 0.85
HasBitFunction · 0.85
TestMethod · 0.80
GetRegisterMethod · 0.80
sizeFunction · 0.50
ClearMethod · 0.45

Tested by

no test coverage detected