mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Use span instead of marker terminated array for indexed sprite loading. (#13050)
parent
9193d69e0b
commit
a1233ee8a1
|
@ -30,7 +30,7 @@
|
|||
#include "table/landscape_sprite.h"
|
||||
|
||||
/** Offsets for loading the different "replacement" sprites in the files. */
|
||||
static const SpriteID * const _landscape_spriteindexes[] = {
|
||||
static constexpr std::span<const std::pair<SpriteID, SpriteID>> _landscape_spriteindexes[] = {
|
||||
_landscape_spriteindexes_arctic,
|
||||
_landscape_spriteindexes_tropic,
|
||||
_landscape_spriteindexes_toyland,
|
||||
|
@ -80,9 +80,8 @@ static uint LoadGrfFile(const std::string &filename, SpriteID load_index, bool n
|
|||
* @param needs_palette_remap Whether the colours in the GRF file need a palette remap.
|
||||
* @return The number of loaded sprites.
|
||||
*/
|
||||
static void LoadGrfFileIndexed(const std::string &filename, const SpriteID *index_tbl, bool needs_palette_remap)
|
||||
static void LoadGrfFileIndexed(const std::string &filename, std::span<const std::pair<SpriteID, SpriteID>> index_tbl, bool needs_palette_remap)
|
||||
{
|
||||
uint start;
|
||||
uint sprite_id = 0;
|
||||
|
||||
SpriteFile &file = OpenCachedSpriteFile(filename, BASESET_DIR, needs_palette_remap);
|
||||
|
@ -98,14 +97,12 @@ static void LoadGrfFileIndexed(const std::string &filename, const SpriteID *inde
|
|||
if (compression != 0) UserError("Unsupported compression format");
|
||||
}
|
||||
|
||||
while ((start = *index_tbl++) != END) {
|
||||
uint end = *index_tbl++;
|
||||
|
||||
do {
|
||||
[[maybe_unused]] bool b = LoadNextSprite(start, file, sprite_id);
|
||||
for (const auto &pair : index_tbl) {
|
||||
for (SpriteID load_index = pair.first; load_index <= pair.second; ++load_index) {
|
||||
[[maybe_unused]] bool b = LoadNextSprite(load_index, file, sprite_id);
|
||||
assert(b);
|
||||
sprite_id++;
|
||||
} while (++start <= end);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,137 +7,132 @@
|
|||
|
||||
/** @file landscape_sprite.h Offsets of sprites to replace for non-temperate landscapes. */
|
||||
|
||||
static const SpriteID END = 0xFFFF;
|
||||
|
||||
static const SpriteID _landscape_spriteindexes_arctic[] = {
|
||||
0xF67, 0xF9F,
|
||||
0xAAD, 0xAB0,
|
||||
0x83A, 0x845,
|
||||
0xFA0, 0xFC9,
|
||||
0x43F, 0x45E,
|
||||
0x566, 0x56D,
|
||||
0x945, 0x94C,
|
||||
0x3ED, 0x40C,
|
||||
0x515, 0x51C,
|
||||
0x55A, 0x561,
|
||||
0x534, 0x546,
|
||||
0x93D, 0x944,
|
||||
0x955, 0x95C,
|
||||
0xFDD, 0xFEC,
|
||||
0x87D, 0x883,
|
||||
0xA2B, 0xA39,
|
||||
0x497, 0x4B0,
|
||||
0x572, 0x575,
|
||||
0x94D, 0x954,
|
||||
0x818, 0x81D,
|
||||
0x3DE, 0x3EB,
|
||||
0x1212, 0x1212,
|
||||
END
|
||||
static constexpr std::pair<SpriteID, SpriteID> _landscape_spriteindexes_arctic[] = {
|
||||
{ 0xF67, 0xF9F},
|
||||
{ 0xAAD, 0xAB0},
|
||||
{ 0x83A, 0x845},
|
||||
{ 0xFA0, 0xFC9},
|
||||
{ 0x43F, 0x45E},
|
||||
{ 0x566, 0x56D},
|
||||
{ 0x945, 0x94C},
|
||||
{ 0x3ED, 0x40C},
|
||||
{ 0x515, 0x51C},
|
||||
{ 0x55A, 0x561},
|
||||
{ 0x534, 0x546},
|
||||
{ 0x93D, 0x944},
|
||||
{ 0x955, 0x95C},
|
||||
{ 0xFDD, 0xFEC},
|
||||
{ 0x87D, 0x883},
|
||||
{ 0xA2B, 0xA39},
|
||||
{ 0x497, 0x4B0},
|
||||
{ 0x572, 0x575},
|
||||
{ 0x94D, 0x954},
|
||||
{ 0x818, 0x81D},
|
||||
{ 0x3DE, 0x3EB},
|
||||
{0x1212, 0x1212},
|
||||
};
|
||||
|
||||
static const SpriteID _landscape_spriteindexes_tropic[] = {
|
||||
0xF67, 0xF9F,
|
||||
0xAAD, 0xAB0,
|
||||
0xFA0, 0xFC9,
|
||||
0x43F, 0x45E,
|
||||
0x566, 0x56D,
|
||||
0x945, 0x94C,
|
||||
0x3ED, 0x40C,
|
||||
0x515, 0x51C,
|
||||
0x55A, 0x561,
|
||||
0x547, 0x559,
|
||||
0x93D, 0x944,
|
||||
0x955, 0x95C,
|
||||
0xFDD, 0xFEC,
|
||||
0x87D, 0x883,
|
||||
0xA2B, 0xA39,
|
||||
0x497, 0x4B0,
|
||||
0x572, 0x575,
|
||||
0x94D, 0x954,
|
||||
0x5AE, 0x5AF,
|
||||
0x118D, 0x11D8,
|
||||
0x534, 0x546,
|
||||
0x40D, 0x426,
|
||||
0x45F, 0x478,
|
||||
0x4B1, 0x4CA,
|
||||
0x95D, 0x97C,
|
||||
0x3DE, 0x3EB,
|
||||
0x562, 0x565,
|
||||
0x56E, 0x571,
|
||||
0x57A, 0x57D,
|
||||
0x83A, 0x845,
|
||||
0xFF5, 0xFF5,
|
||||
0xFF8, 0xFF8,
|
||||
0x1212, 0x1212,
|
||||
END
|
||||
static constexpr std::pair<SpriteID, SpriteID> _landscape_spriteindexes_tropic[] = {
|
||||
{ 0xF67, 0xF9F},
|
||||
{ 0xAAD, 0xAB0},
|
||||
{ 0xFA0, 0xFC9},
|
||||
{ 0x43F, 0x45E},
|
||||
{ 0x566, 0x56D},
|
||||
{ 0x945, 0x94C},
|
||||
{ 0x3ED, 0x40C},
|
||||
{ 0x515, 0x51C},
|
||||
{ 0x55A, 0x561},
|
||||
{ 0x547, 0x559},
|
||||
{ 0x93D, 0x944},
|
||||
{ 0x955, 0x95C},
|
||||
{ 0xFDD, 0xFEC},
|
||||
{ 0x87D, 0x883},
|
||||
{ 0xA2B, 0xA39},
|
||||
{ 0x497, 0x4B0},
|
||||
{ 0x572, 0x575},
|
||||
{ 0x94D, 0x954},
|
||||
{ 0x5AE, 0x5AF},
|
||||
{0x118D, 0x11D8},
|
||||
{ 0x534, 0x546},
|
||||
{ 0x40D, 0x426},
|
||||
{ 0x45F, 0x478},
|
||||
{ 0x4B1, 0x4CA},
|
||||
{ 0x95D, 0x97C},
|
||||
{ 0x3DE, 0x3EB},
|
||||
{ 0x562, 0x565},
|
||||
{ 0x56E, 0x571},
|
||||
{ 0x57A, 0x57D},
|
||||
{ 0x83A, 0x845},
|
||||
{ 0xFF5, 0xFF5},
|
||||
{ 0xFF8, 0xFF8},
|
||||
{0x1212, 0x1212},
|
||||
};
|
||||
|
||||
static const SpriteID _landscape_spriteindexes_toyland[] = {
|
||||
0xF54, 0xF9F,
|
||||
0xFDD, 0xFE5,
|
||||
0xFEC, 0xFEC,
|
||||
0xFA0, 0xFC9,
|
||||
0x818, 0x81D,
|
||||
0x521, 0x546,
|
||||
0x57E, 0x57F,
|
||||
0x3ED, 0x40C,
|
||||
0x43F, 0x45E,
|
||||
0x491, 0x4B0,
|
||||
0xA48, 0xA48,
|
||||
0x4FB, 0x50A,
|
||||
0x55A, 0x561,
|
||||
0x566, 0x56D,
|
||||
0x572, 0x579,
|
||||
0x427, 0x42C,
|
||||
0x479, 0x47E,
|
||||
0x4CB, 0x4D0,
|
||||
0x4EF, 0x4FA,
|
||||
0xE9D, 0xECC,
|
||||
0xF3D, 0xF40,
|
||||
0xB59, 0xB60,
|
||||
0xE5D, 0xE6C,
|
||||
0xA49, 0xA59,
|
||||
0xA63, 0xA68,
|
||||
0xA5A, 0xA62,
|
||||
0xA78, 0xA83,
|
||||
0xA69, 0xA77,
|
||||
0xA84, 0xAA3,
|
||||
0xAA7, 0xAAC,
|
||||
0xA2B, 0xA47,
|
||||
0x3DE, 0x3EB,
|
||||
0x47F, 0x488,
|
||||
0x4D1, 0x4DA,
|
||||
0x42D, 0x436,
|
||||
0x515, 0x51C,
|
||||
0x580, 0x585,
|
||||
0xC14, 0xCB3,
|
||||
0xAAD, 0xAB0,
|
||||
0xAB5, 0xB00,
|
||||
0xB69, 0xB70,
|
||||
0xB61, 0xB68,
|
||||
0xBC9, 0xBD0,
|
||||
0xBD9, 0xBE0,
|
||||
0xBA9, 0xBB0,
|
||||
0xBC1, 0xBC4,
|
||||
0x2D0, 0x2D0,
|
||||
0xAA5, 0xAA6,
|
||||
0x50F, 0x50F,
|
||||
0x2EA, 0x2EA,
|
||||
0x2ED, 0x2EE,
|
||||
0x512, 0x513,
|
||||
0x4EB, 0x4EE,
|
||||
0x4E7, 0x4EA,
|
||||
0x985, 0xA28,
|
||||
0x10E4, 0x1133,
|
||||
0x93D, 0x95C,
|
||||
0x97D, 0x984,
|
||||
0x7DA, 0x7DA,
|
||||
0x2E6, 0x2E6,
|
||||
0x1, 0x1,
|
||||
0xE54, 0xE54,
|
||||
0x51F, 0x520,
|
||||
0x514, 0x514,
|
||||
0x511, 0x511,
|
||||
0x322, 0x322,
|
||||
END
|
||||
static constexpr std::pair<SpriteID, SpriteID> _landscape_spriteindexes_toyland[] = {
|
||||
{ 0xF54, 0xF9F},
|
||||
{ 0xFDD, 0xFE5},
|
||||
{ 0xFEC, 0xFEC},
|
||||
{ 0xFA0, 0xFC9},
|
||||
{ 0x818, 0x81D},
|
||||
{ 0x521, 0x546},
|
||||
{ 0x57E, 0x57F},
|
||||
{ 0x3ED, 0x40C},
|
||||
{ 0x43F, 0x45E},
|
||||
{ 0x491, 0x4B0},
|
||||
{ 0xA48, 0xA48},
|
||||
{ 0x4FB, 0x50A},
|
||||
{ 0x55A, 0x561},
|
||||
{ 0x566, 0x56D},
|
||||
{ 0x572, 0x579},
|
||||
{ 0x427, 0x42C},
|
||||
{ 0x479, 0x47E},
|
||||
{ 0x4CB, 0x4D0},
|
||||
{ 0x4EF, 0x4FA},
|
||||
{ 0xE9D, 0xECC},
|
||||
{ 0xF3D, 0xF40},
|
||||
{ 0xB59, 0xB60},
|
||||
{ 0xE5D, 0xE6C},
|
||||
{ 0xA49, 0xA59},
|
||||
{ 0xA63, 0xA68},
|
||||
{ 0xA5A, 0xA62},
|
||||
{ 0xA78, 0xA83},
|
||||
{ 0xA69, 0xA77},
|
||||
{ 0xA84, 0xAA3},
|
||||
{ 0xAA7, 0xAAC},
|
||||
{ 0xA2B, 0xA47},
|
||||
{ 0x3DE, 0x3EB},
|
||||
{ 0x47F, 0x488},
|
||||
{ 0x4D1, 0x4DA},
|
||||
{ 0x42D, 0x436},
|
||||
{ 0x515, 0x51C},
|
||||
{ 0x580, 0x585},
|
||||
{ 0xC14, 0xCB3},
|
||||
{ 0xAAD, 0xAB0},
|
||||
{ 0xAB5, 0xB00},
|
||||
{ 0xB69, 0xB70},
|
||||
{ 0xB61, 0xB68},
|
||||
{ 0xBC9, 0xBD0},
|
||||
{ 0xBD9, 0xBE0},
|
||||
{ 0xBA9, 0xBB0},
|
||||
{ 0xBC1, 0xBC4},
|
||||
{ 0x2D0, 0x2D0},
|
||||
{ 0xAA5, 0xAA6},
|
||||
{ 0x50F, 0x50F},
|
||||
{ 0x2EA, 0x2EA},
|
||||
{ 0x2ED, 0x2EE},
|
||||
{ 0x512, 0x513},
|
||||
{ 0x4EB, 0x4EE},
|
||||
{ 0x4E7, 0x4EA},
|
||||
{ 0x985, 0xA28},
|
||||
{0x10E4, 0x1133},
|
||||
{ 0x93D, 0x95C},
|
||||
{ 0x97D, 0x984},
|
||||
{ 0x7DA, 0x7DA},
|
||||
{ 0x2E6, 0x2E6},
|
||||
{ 0x1, 0x1},
|
||||
{ 0xE54, 0xE54},
|
||||
{ 0x51F, 0x520},
|
||||
{ 0x514, 0x514},
|
||||
{ 0x511, 0x511},
|
||||
{ 0x322, 0x322},
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue