CreateTiles return StatusOr

This commit is contained in:
Justin Scofield
2022-07-23 20:43:09 -04:00
parent 515ea87131
commit 6b04bcf5d6
4 changed files with 15 additions and 4 deletions

View File

@@ -5,6 +5,7 @@
#include <cmath>
#include <unordered_map>
#include "absl/status/statusor.h"
#include "app/gfx/bitmap.h"
#include "app/gfx/snes_palette.h"
#include "app/gfx/snes_tile.h"
@@ -318,6 +319,12 @@ void OverworldEditor::LoadGraphics() {
rom_.LoadAllGraphicsData();
graphics_bin_ = rom_.GetGraphicsBin();
for (auto &[key, value] : graphics_bin_) {
auto tilesheet = value.CreateTiles();
if (!tilesheet.ok()) {
std::cout << "Error loading" << std::endl;
}
}
tile16_blockset_bmp_.Create(128 * 2, 8192 * 2, 8, 1048576);
current_gfx_bmp_.Create(128 * 2, 512 * 2, 8, 32768);
}

View File

@@ -6,6 +6,7 @@
#include <cmath>
#include <unordered_map>
#include "absl/status/statusor.h"
#include "app/gfx/bitmap.h"
#include "app/gfx/snes_palette.h"
#include "app/gfx/snes_tile.h"
@@ -38,7 +39,6 @@ class OverworldEditor {
void DrawTile8Selector();
void DrawAreaGraphics();
void LoadBlockset();
void LoadGraphics();
int current_world_ = 0;

View File

@@ -92,7 +92,7 @@ void Bitmap::CreateTexture(std::shared_ptr<SDL_Renderer> renderer) {
void Bitmap::ApplyPalette(const SNESPalette &palette) { palette_ = palette; }
std::vector<Bitmap> Bitmap::CreateTiles() {
absl::StatusOr<std::vector<Bitmap>> Bitmap::CreateTiles() {
std::vector<Bitmap> tiles;
for (int i = 0; i < 16; ++i) {
for (int j = 0; j < 4; ++j) {
@@ -100,7 +100,10 @@ std::vector<Bitmap> Bitmap::CreateTiles() {
bmp.Create(8, 8, 8, 32);
auto surface = bmp.GetSurface();
SDL_Rect src_rect = {i, j, 8, 8};
SDL_BlitSurface(surface_, &src_rect, surface, nullptr);
if (SDL_BlitSurface(surface_, &src_rect, surface, nullptr) != 0) {
return absl::InvalidArgumentError(
"Failed to blit surface for Bitmap Tilesheet");
}
tiles.push_back(bmp);
}
}

View File

@@ -5,6 +5,7 @@
#include <memory>
#include "absl/status/statusor.h"
#include "app/core/constants.h"
#include "app/gfx/snes_palette.h"
@@ -26,7 +27,7 @@ class Bitmap {
void ApplyPalette(const SNESPalette &palette);
std::vector<Bitmap> CreateTiles();
absl::StatusOr<std::vector<Bitmap>> CreateTiles();
int GetWidth() const { return width_; }
int GetHeight() const { return height_; }