26 for (
auto& hits : *usage_index) {
37 for (
int quadrant = 0; quadrant < 4; ++quadrant) {
38 const int tile8_id = TileInfoForQuadrant(tile_data, quadrant).
id_;
42 (*usage_index)[tile8_id].push_back({tile16_id, quadrant});
48 const std::function<absl::StatusOr<gfx::Tile16>(
int)>& tile_provider,
51 return absl::InvalidArgumentError(
"Usage index pointer is null");
54 return absl::InvalidArgumentError(
"Tile provider callback is not set");
56 if (total_tiles < 0) {
57 return absl::InvalidArgumentError(
"Total tiles cannot be negative");
61 for (
int tile_id = 0; tile_id < total_tiles; ++tile_id) {
62 auto tile_result = tile_provider(tile_id);
63 if (!tile_result.ok()) {
68 return absl::OkStatus();
Tile composition of four 8x8 tiles.
SNES 16-bit tile metadata container.
Zelda 3 specific classes and functions.
std::array< std::vector< Tile8UsageHit >, kMaxTile8UsageId > Tile8UsageIndex
void ClearTile8UsageIndex(Tile8UsageIndex *usage_index)
absl::Status BuildTile8UsageIndex(int total_tiles, const std::function< absl::StatusOr< gfx::Tile16 >(int)> &tile_provider, Tile8UsageIndex *usage_index)
constexpr int kMaxTile8UsageId
void AddTile16ToUsageIndex(const gfx::Tile16 &tile_data, int tile16_id, Tile8UsageIndex *usage_index)