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 <cmath>
#include <unordered_map> #include <unordered_map>
#include "absl/status/statusor.h"
#include "app/gfx/bitmap.h" #include "app/gfx/bitmap.h"
#include "app/gfx/snes_palette.h" #include "app/gfx/snes_palette.h"
#include "app/gfx/snes_tile.h" #include "app/gfx/snes_tile.h"
@@ -318,6 +319,12 @@ void OverworldEditor::LoadGraphics() {
rom_.LoadAllGraphicsData(); rom_.LoadAllGraphicsData();
graphics_bin_ = rom_.GetGraphicsBin(); 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); tile16_blockset_bmp_.Create(128 * 2, 8192 * 2, 8, 1048576);
current_gfx_bmp_.Create(128 * 2, 512 * 2, 8, 32768); current_gfx_bmp_.Create(128 * 2, 512 * 2, 8, 32768);
} }

View File

@@ -6,6 +6,7 @@
#include <cmath> #include <cmath>
#include <unordered_map> #include <unordered_map>
#include "absl/status/statusor.h"
#include "app/gfx/bitmap.h" #include "app/gfx/bitmap.h"
#include "app/gfx/snes_palette.h" #include "app/gfx/snes_palette.h"
#include "app/gfx/snes_tile.h" #include "app/gfx/snes_tile.h"
@@ -38,7 +39,6 @@ class OverworldEditor {
void DrawTile8Selector(); void DrawTile8Selector();
void DrawAreaGraphics(); void DrawAreaGraphics();
void LoadBlockset();
void LoadGraphics(); void LoadGraphics();
int current_world_ = 0; 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; } void Bitmap::ApplyPalette(const SNESPalette &palette) { palette_ = palette; }
std::vector<Bitmap> Bitmap::CreateTiles() { absl::StatusOr<std::vector<Bitmap>> Bitmap::CreateTiles() {
std::vector<Bitmap> tiles; std::vector<Bitmap> tiles;
for (int i = 0; i < 16; ++i) { for (int i = 0; i < 16; ++i) {
for (int j = 0; j < 4; ++j) { for (int j = 0; j < 4; ++j) {
@@ -100,7 +100,10 @@ std::vector<Bitmap> Bitmap::CreateTiles() {
bmp.Create(8, 8, 8, 32); bmp.Create(8, 8, 8, 32);
auto surface = bmp.GetSurface(); auto surface = bmp.GetSurface();
SDL_Rect src_rect = {i, j, 8, 8}; 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); tiles.push_back(bmp);
} }
} }

View File

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