Codechange: use std::vector/std::span over MallocT for NewGRF bridge sprites
This commit is contained in:
@@ -85,18 +85,7 @@ void MarkBridgeDirty(TileIndex tile)
|
||||
/** Reset the data been eventually changed by the grf loaded. */
|
||||
void ResetBridges()
|
||||
{
|
||||
/* First, free sprite table data */
|
||||
for (BridgeType i = 0; i < MAX_BRIDGES; i++) {
|
||||
if (_bridge[i].sprite_table != nullptr) {
|
||||
for (BridgePieces j = BRIDGE_PIECE_NORTH; j < NUM_BRIDGE_PIECES; j++) free(_bridge[i].sprite_table[j]);
|
||||
free(_bridge[i].sprite_table);
|
||||
}
|
||||
}
|
||||
|
||||
/* Then, wipe out current bridges */
|
||||
memset(&_bridge, 0, sizeof(_bridge));
|
||||
/* And finally, reinstall default data */
|
||||
memcpy(&_bridge, &_orig_bridge, sizeof(_orig_bridge));
|
||||
std::ranges::copy(_orig_bridge, std::begin(_bridge));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -149,15 +138,13 @@ bool HasBridgeFlatRamp(Slope tileh, Axis axis)
|
||||
return (tileh != SLOPE_FLAT);
|
||||
}
|
||||
|
||||
static inline const PalSpriteID *GetBridgeSpriteTable(int index, BridgePieces table)
|
||||
static inline std::span<const PalSpriteID> GetBridgeSpriteTable(int index, BridgePieces table)
|
||||
{
|
||||
const BridgeSpec *bridge = GetBridgeSpec(index);
|
||||
assert(table < NUM_BRIDGE_PIECES);
|
||||
if (bridge->sprite_table == nullptr || bridge->sprite_table[table] == nullptr) {
|
||||
return _bridge_sprite_table[index][table];
|
||||
} else {
|
||||
return bridge->sprite_table[table];
|
||||
}
|
||||
if (table < bridge->sprite_table.size() && !bridge->sprite_table[table].empty()) return bridge->sprite_table[table];
|
||||
|
||||
return _bridge_sprite_table[index][table];
|
||||
}
|
||||
|
||||
|
||||
@@ -1581,7 +1568,7 @@ void DrawBridgeMiddle(const TileInfo *ti)
|
||||
base_offset = 8;
|
||||
}
|
||||
|
||||
psid = base_offset + GetBridgeSpriteTable(type, piece);
|
||||
psid = &GetBridgeSpriteTable(type, piece)[base_offset];
|
||||
} else {
|
||||
drawfarpillar = true;
|
||||
psid = _aqueduct_sprites;
|
||||
|
||||
Reference in New Issue
Block a user