yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::editor::UsagePreviewView Class Reference

Shows how the game uses the current graphics sheet while it is edited: a room that loads it, a sprite animation drawn from it, and the tile16s that use the selected 8x8 tile. More...

#include <usage_preview_view.h>

Public Member Functions

 UsagePreviewView (GraphicsEditorState *state)
 
void SetRom (Rom *rom)
 
void SetGameData (zelda3::GameData *game_data)
 
void SetHackName (std::string hack_name)
 
void SetLiveRoomProvider (usage_preview::LiveRoomProvider provider)
 
void Reset ()
 
void Draw ()
 
void DrawSourcePreview (bool show_controls=true)
 

Static Public Attributes

static constexpr double kMinRenderInterval = 0.1
 

Private Types

enum class  Mode { kRoom , kSprite , kTile16 }
 

Private Member Functions

void EnsureTables ()
 
void RefreshRoomContexts ()
 
void DrawRoomContext (bool render_now)
 
void DrawSpriteContext (bool render_now, float delta)
 
void DrawTile16Context (bool render_now)
 
void DrawSharedUses ()
 
absl::Status ScanSharedUses (const usage_preview::LiveRoomContexts &rooms)
 
uint64_t SharedUsesHash (const usage_preview::LiveRoomContexts &rooms) const
 
uint64_t HashWatchedSheets (bool include_room_context) const
 
usage_preview::SheetPixels Snapshot () const
 
void ShowImage (gfx::Bitmap &bitmap, const usage_preview::PreviewImage &image)
 
void DrawBitmapFit (gfx::Bitmap &bitmap, const std::vector< SDL_Rect > &rects, float max_scale, bool fit_height=false)
 
int SelectedTileIndex () const
 
void InvalidateTables ()
 

Private Attributes

GraphicsEditorState * state_ = nullptr
 
Rom * rom_ = nullptr
 
zelda3::GameData * game_data_ = nullptr
 
std::string hack_name_
 
Mode mode_ = Mode::kRoom
 
bool live_ = true
 
bool dirty_ = true
 
uint64_t last_hash_ = 0
 
double last_render_time_ = -1.0
 
uint16_t last_sheet_ = 0xFFFF
 
std::string status_
 
bool tables_ready_ = false
 
std::map< int, std::array< uint8_t, 16 > > room_blocks_
 
std::map< int, zelda3::RoomGfxInfo > room_gfx_
 
std::optional< std::map< int, zelda3::OverworldAreaGfxInfo > > areas_
 
usage_preview::LiveRoomProvider live_rooms_provider_
 
usage_preview::LiveRoomContexts live_rooms_
 
std::map< int, std::array< uint8_t, 16 > > fallback_room_blocks_
 
std::map< int, uint64_t > live_room_revisions_
 
uint64_t group_hash_ = 0
 
int current_live_room_ = -1
 
usage_preview::RoomUsagePreview room_preview_
 
std::vector< int > rooms_for_sheet_
 
int room_choice_ = 0
 
bool objects_only_ = false
 
bool outline_objects_ = true
 
std::vector< SDL_Rect > object_rects_
 
usage_preview::SpriteUsagePreview sprite_preview_
 
std::vector< int > spritesets_for_sheet_
 
int spriteset_choice_ = 0
 
int configured_spriteset_ = -1
 
int vanilla_sprite_id_ = 0xA7
 
char zsm_path_ [512] = {}
 
std::string zsm_loaded_path_
 
std::optional< zsprite::ZSprite > zsm_
 
int zsm_animation_ = 0
 
bool playing_ = true
 
gfx::Bitmap sprite_bitmap_
 
usage_preview::Tile16UsagePreview tile16_preview_
 
std::vector< int > areas_for_sheet_
 
int area_choice_ = 0
 
int tile_index_ = 0
 
bool follow_selection_ = true
 
std::vector< int > tile16s_
 
std::vector< SDL_Rect > tile16_highlights_
 
gfx::Bitmap tile16_bitmap_
 
uint64_t source_context_revision_ = 0
 
uint64_t palette_revision_ = 0
 
uint64_t sprite_palette_revision_ = 0
 
gfx::Bitmap source_bitmap_
 
uint64_t rendered_source_revision_ = 0
 
uint64_t source_palette_revision_ = 0
 
uint64_t source_hash_ = 0
 
double source_render_time_ = -1.0
 
bool source_dirty_ = true
 
std::string source_status_
 
bool shared_whole_pattern_ = true
 
bool shared_scan_ready_ = false
 
uint64_t shared_scan_hash_ = 0
 
std::string shared_scan_status_
 
std::vector< GraphicsEditTarget > shared_targets_
 
std::vector< usage_preview::LoadedRoomSourceUses > shared_uses_
 
usage_preview::RoomUsagePreview shared_room_preview_
 
int shared_preview_room_ = -1
 
size_t shared_preview_object_ = 0
 

Friends

class UsagePreviewViewTestPeer
 
class AuthoringSaveWorkflowTestPeer
 

Detailed Description

Shows how the game uses the current graphics sheet while it is edited: a room that loads it, a sprite animation drawn from it, and the tile16s that use the selected 8x8 tile.

Renders from the session's sheet store (unsaved pixel edits) through usage_preview's renderers, or the source editor's live context. Re-renders at most 10 times a second while pixels change, and once more when the stroke ends.

Definition at line 30 of file usage_preview_view.h.

Member Enumeration Documentation

◆ Mode

enum class yaze::editor::UsagePreviewView::Mode
strongprivate
Enumerator
kRoom 
kSprite 
kTile16 

Definition at line 52 of file usage_preview_view.h.

Constructor & Destructor Documentation

◆ UsagePreviewView()

yaze::editor::UsagePreviewView::UsagePreviewView ( GraphicsEditorState * state)
inlineexplicit

Definition at line 32 of file usage_preview_view.h.

Member Function Documentation

◆ SetRom()

void yaze::editor::UsagePreviewView::SetRom ( Rom * rom)

Definition at line 42 of file usage_preview_view.cc.

References InvalidateTables(), and rom_.

Here is the call graph for this function:

◆ SetGameData()

void yaze::editor::UsagePreviewView::SetGameData ( zelda3::GameData * game_data)

Definition at line 48 of file usage_preview_view.cc.

References game_data_, and InvalidateTables().

Here is the call graph for this function:

◆ SetHackName()

void yaze::editor::UsagePreviewView::SetHackName ( std::string hack_name)
inline

Definition at line 36 of file usage_preview_view.h.

References hack_name_.

◆ SetLiveRoomProvider()

void yaze::editor::UsagePreviewView::SetLiveRoomProvider ( usage_preview::LiveRoomProvider provider)
inline

Definition at line 38 of file usage_preview_view.h.

References InvalidateTables(), and live_rooms_provider_.

Here is the call graph for this function:

◆ Reset()

void yaze::editor::UsagePreviewView::Reset ( )
inline

Definition at line 42 of file usage_preview_view.h.

References InvalidateTables().

Here is the call graph for this function:

◆ Draw()

◆ DrawSourcePreview()

◆ EnsureTables()

◆ RefreshRoomContexts()

◆ DrawRoomContext()

void yaze::editor::UsagePreviewView::DrawRoomContext ( bool render_now)
private

Definition at line 651 of file usage_preview_view.cc.

References HOVER_HINT.

◆ DrawSpriteContext()

void yaze::editor::UsagePreviewView::DrawSpriteContext ( bool render_now,
float delta )
private

◆ DrawTile16Context()

void yaze::editor::UsagePreviewView::DrawTile16Context ( bool render_now)
private

Definition at line 888 of file usage_preview_view.cc.

References yaze::zelda3::CollectOverworldAreaGfx(), and HOVER_HINT.

Here is the call graph for this function:

◆ DrawSharedUses()

◆ ScanSharedUses()

◆ SharedUsesHash()

◆ HashWatchedSheets()

◆ Snapshot()

usage_preview::SheetPixels yaze::editor::UsagePreviewView::Snapshot ( ) const
private

◆ ShowImage()

◆ DrawBitmapFit()

void yaze::editor::UsagePreviewView::DrawBitmapFit ( gfx::Bitmap & bitmap,
const std::vector< SDL_Rect > & rects,
float max_scale,
bool fit_height = false )
private

◆ SelectedTileIndex()

int yaze::editor::UsagePreviewView::SelectedTileIndex ( ) const
private

◆ InvalidateTables()

Friends And Related Symbol Documentation

◆ UsagePreviewViewTestPeer

friend class UsagePreviewViewTestPeer
friend

Definition at line 50 of file usage_preview_view.h.

◆ AuthoringSaveWorkflowTestPeer

friend class AuthoringSaveWorkflowTestPeer
friend

Definition at line 51 of file usage_preview_view.h.

Member Data Documentation

◆ kMinRenderInterval

constexpr double yaze::editor::UsagePreviewView::kMinRenderInterval = 0.1
staticconstexpr

Definition at line 47 of file usage_preview_view.h.

Referenced by DrawSourcePreview().

◆ state_

GraphicsEditorState* yaze::editor::UsagePreviewView::state_ = nullptr
private

◆ rom_

Rom* yaze::editor::UsagePreviewView::rom_ = nullptr
private

◆ game_data_

zelda3::GameData* yaze::editor::UsagePreviewView::game_data_ = nullptr
private

◆ hack_name_

std::string yaze::editor::UsagePreviewView::hack_name_
private

Definition at line 74 of file usage_preview_view.h.

Referenced by SetHackName().

◆ mode_

Mode yaze::editor::UsagePreviewView::mode_ = Mode::kRoom
private

Definition at line 76 of file usage_preview_view.h.

◆ live_

bool yaze::editor::UsagePreviewView::live_ = true
private

Definition at line 77 of file usage_preview_view.h.

Referenced by DrawSourcePreview().

◆ dirty_

bool yaze::editor::UsagePreviewView::dirty_ = true
private

Definition at line 78 of file usage_preview_view.h.

Referenced by Draw(), EnsureTables(), InvalidateTables(), and RefreshRoomContexts().

◆ last_hash_

uint64_t yaze::editor::UsagePreviewView::last_hash_ = 0
private

Definition at line 79 of file usage_preview_view.h.

◆ last_render_time_

double yaze::editor::UsagePreviewView::last_render_time_ = -1.0
private

Definition at line 80 of file usage_preview_view.h.

Referenced by Draw(), InvalidateTables(), and RefreshRoomContexts().

◆ last_sheet_

uint16_t yaze::editor::UsagePreviewView::last_sheet_ = 0xFFFF
private

Definition at line 81 of file usage_preview_view.h.

Referenced by Draw(), EnsureTables(), InvalidateTables(), and RefreshRoomContexts().

◆ status_

std::string yaze::editor::UsagePreviewView::status_
private

Definition at line 82 of file usage_preview_view.h.

◆ tables_ready_

bool yaze::editor::UsagePreviewView::tables_ready_ = false
private

Definition at line 85 of file usage_preview_view.h.

Referenced by EnsureTables(), and InvalidateTables().

◆ room_blocks_

std::map<int, std::array<uint8_t, 16> > yaze::editor::UsagePreviewView::room_blocks_
private

Definition at line 86 of file usage_preview_view.h.

Referenced by HashWatchedSheets(), InvalidateTables(), and RefreshRoomContexts().

◆ room_gfx_

std::map<int, zelda3::RoomGfxInfo> yaze::editor::UsagePreviewView::room_gfx_
private

Definition at line 87 of file usage_preview_view.h.

Referenced by EnsureTables(), and InvalidateTables().

◆ areas_

std::optional<std::map<int, zelda3::OverworldAreaGfxInfo> > yaze::editor::UsagePreviewView::areas_
private

Definition at line 88 of file usage_preview_view.h.

Referenced by InvalidateTables().

◆ live_rooms_provider_

usage_preview::LiveRoomProvider yaze::editor::UsagePreviewView::live_rooms_provider_
private

Definition at line 90 of file usage_preview_view.h.

Referenced by DrawSharedUses(), RefreshRoomContexts(), and SetLiveRoomProvider().

◆ live_rooms_

usage_preview::LiveRoomContexts yaze::editor::UsagePreviewView::live_rooms_
private

Definition at line 91 of file usage_preview_view.h.

Referenced by InvalidateTables(), and RefreshRoomContexts().

◆ fallback_room_blocks_

std::map<int, std::array<uint8_t, 16> > yaze::editor::UsagePreviewView::fallback_room_blocks_
private

Definition at line 92 of file usage_preview_view.h.

Referenced by EnsureTables(), InvalidateTables(), and RefreshRoomContexts().

◆ live_room_revisions_

std::map<int, uint64_t> yaze::editor::UsagePreviewView::live_room_revisions_
private

Definition at line 93 of file usage_preview_view.h.

Referenced by InvalidateTables(), and RefreshRoomContexts().

◆ group_hash_

uint64_t yaze::editor::UsagePreviewView::group_hash_ = 0
private

Definition at line 94 of file usage_preview_view.h.

Referenced by EnsureTables(), and InvalidateTables().

◆ current_live_room_

int yaze::editor::UsagePreviewView::current_live_room_ = -1
private

Definition at line 95 of file usage_preview_view.h.

Referenced by InvalidateTables(), and RefreshRoomContexts().

◆ room_preview_

usage_preview::RoomUsagePreview yaze::editor::UsagePreviewView::room_preview_
private

Definition at line 98 of file usage_preview_view.h.

Referenced by Draw(), EnsureTables(), and InvalidateTables().

◆ rooms_for_sheet_

std::vector<int> yaze::editor::UsagePreviewView::rooms_for_sheet_
private

Definition at line 99 of file usage_preview_view.h.

Referenced by HashWatchedSheets(), InvalidateTables(), and RefreshRoomContexts().

◆ room_choice_

int yaze::editor::UsagePreviewView::room_choice_ = 0
private

Definition at line 100 of file usage_preview_view.h.

Referenced by HashWatchedSheets(), and RefreshRoomContexts().

◆ objects_only_

bool yaze::editor::UsagePreviewView::objects_only_ = false
private

Definition at line 101 of file usage_preview_view.h.

◆ outline_objects_

bool yaze::editor::UsagePreviewView::outline_objects_ = true
private

Definition at line 102 of file usage_preview_view.h.

◆ object_rects_

std::vector<SDL_Rect> yaze::editor::UsagePreviewView::object_rects_
private

Definition at line 103 of file usage_preview_view.h.

Referenced by InvalidateTables().

◆ sprite_preview_

usage_preview::SpriteUsagePreview yaze::editor::UsagePreviewView::sprite_preview_
private

Definition at line 106 of file usage_preview_view.h.

◆ spritesets_for_sheet_

std::vector<int> yaze::editor::UsagePreviewView::spritesets_for_sheet_
private

Definition at line 107 of file usage_preview_view.h.

Referenced by Draw().

◆ spriteset_choice_

int yaze::editor::UsagePreviewView::spriteset_choice_ = 0
private

Definition at line 108 of file usage_preview_view.h.

Referenced by Draw().

◆ configured_spriteset_

int yaze::editor::UsagePreviewView::configured_spriteset_ = -1
private

Definition at line 109 of file usage_preview_view.h.

Referenced by Draw(), and InvalidateTables().

◆ vanilla_sprite_id_

int yaze::editor::UsagePreviewView::vanilla_sprite_id_ = 0xA7
private

Definition at line 110 of file usage_preview_view.h.

◆ zsm_path_

char yaze::editor::UsagePreviewView::zsm_path_[512] = {}
private

Definition at line 111 of file usage_preview_view.h.

◆ zsm_loaded_path_

std::string yaze::editor::UsagePreviewView::zsm_loaded_path_
private

Definition at line 112 of file usage_preview_view.h.

◆ zsm_

std::optional<zsprite::ZSprite> yaze::editor::UsagePreviewView::zsm_
private

Definition at line 113 of file usage_preview_view.h.

◆ zsm_animation_

int yaze::editor::UsagePreviewView::zsm_animation_ = 0
private

Definition at line 114 of file usage_preview_view.h.

◆ playing_

bool yaze::editor::UsagePreviewView::playing_ = true
private

Definition at line 115 of file usage_preview_view.h.

◆ sprite_bitmap_

gfx::Bitmap yaze::editor::UsagePreviewView::sprite_bitmap_
private

Definition at line 116 of file usage_preview_view.h.

◆ tile16_preview_

usage_preview::Tile16UsagePreview yaze::editor::UsagePreviewView::tile16_preview_
private

Definition at line 119 of file usage_preview_view.h.

Referenced by Draw().

◆ areas_for_sheet_

std::vector<int> yaze::editor::UsagePreviewView::areas_for_sheet_
private

Definition at line 120 of file usage_preview_view.h.

Referenced by Draw().

◆ area_choice_

int yaze::editor::UsagePreviewView::area_choice_ = 0
private

Definition at line 121 of file usage_preview_view.h.

Referenced by Draw().

◆ tile_index_

int yaze::editor::UsagePreviewView::tile_index_ = 0
private

Definition at line 122 of file usage_preview_view.h.

Referenced by SelectedTileIndex().

◆ follow_selection_

bool yaze::editor::UsagePreviewView::follow_selection_ = true
private

Definition at line 123 of file usage_preview_view.h.

Referenced by SelectedTileIndex().

◆ tile16s_

std::vector<int> yaze::editor::UsagePreviewView::tile16s_
private

Definition at line 124 of file usage_preview_view.h.

◆ tile16_highlights_

std::vector<SDL_Rect> yaze::editor::UsagePreviewView::tile16_highlights_
private

Definition at line 125 of file usage_preview_view.h.

◆ tile16_bitmap_

gfx::Bitmap yaze::editor::UsagePreviewView::tile16_bitmap_
private

Definition at line 126 of file usage_preview_view.h.

◆ source_context_revision_

uint64_t yaze::editor::UsagePreviewView::source_context_revision_ = 0
private

Definition at line 127 of file usage_preview_view.h.

Referenced by Draw().

◆ palette_revision_

uint64_t yaze::editor::UsagePreviewView::palette_revision_ = 0
private

Definition at line 128 of file usage_preview_view.h.

Referenced by Draw().

◆ sprite_palette_revision_

uint64_t yaze::editor::UsagePreviewView::sprite_palette_revision_ = 0
private

Definition at line 129 of file usage_preview_view.h.

◆ source_bitmap_

gfx::Bitmap yaze::editor::UsagePreviewView::source_bitmap_
private

Definition at line 130 of file usage_preview_view.h.

Referenced by DrawSourcePreview().

◆ rendered_source_revision_

uint64_t yaze::editor::UsagePreviewView::rendered_source_revision_ = 0
private

Definition at line 131 of file usage_preview_view.h.

Referenced by DrawSourcePreview().

◆ source_palette_revision_

uint64_t yaze::editor::UsagePreviewView::source_palette_revision_ = 0
private

Definition at line 132 of file usage_preview_view.h.

Referenced by DrawSourcePreview().

◆ source_hash_

uint64_t yaze::editor::UsagePreviewView::source_hash_ = 0
private

Definition at line 133 of file usage_preview_view.h.

Referenced by DrawSourcePreview().

◆ source_render_time_

double yaze::editor::UsagePreviewView::source_render_time_ = -1.0
private

Definition at line 134 of file usage_preview_view.h.

Referenced by DrawSourcePreview(), and InvalidateTables().

◆ source_dirty_

bool yaze::editor::UsagePreviewView::source_dirty_ = true
private

Definition at line 135 of file usage_preview_view.h.

Referenced by DrawSourcePreview(), and InvalidateTables().

◆ source_status_

std::string yaze::editor::UsagePreviewView::source_status_
private

Definition at line 136 of file usage_preview_view.h.

Referenced by DrawSourcePreview().

◆ shared_whole_pattern_

bool yaze::editor::UsagePreviewView::shared_whole_pattern_ = true
private

Definition at line 139 of file usage_preview_view.h.

Referenced by DrawSharedUses(), ScanSharedUses(), and SharedUsesHash().

◆ shared_scan_ready_

bool yaze::editor::UsagePreviewView::shared_scan_ready_ = false
private

Definition at line 140 of file usage_preview_view.h.

Referenced by DrawSharedUses(), InvalidateTables(), and ScanSharedUses().

◆ shared_scan_hash_

uint64_t yaze::editor::UsagePreviewView::shared_scan_hash_ = 0
private

Definition at line 141 of file usage_preview_view.h.

Referenced by DrawSharedUses(), and ScanSharedUses().

◆ shared_scan_status_

std::string yaze::editor::UsagePreviewView::shared_scan_status_
private

Definition at line 142 of file usage_preview_view.h.

Referenced by DrawSharedUses(), and InvalidateTables().

◆ shared_targets_

std::vector<GraphicsEditTarget> yaze::editor::UsagePreviewView::shared_targets_
private

Definition at line 143 of file usage_preview_view.h.

Referenced by DrawSharedUses(), InvalidateTables(), and ScanSharedUses().

◆ shared_uses_

std::vector<usage_preview::LoadedRoomSourceUses> yaze::editor::UsagePreviewView::shared_uses_
private

Definition at line 144 of file usage_preview_view.h.

Referenced by DrawSharedUses(), InvalidateTables(), and ScanSharedUses().

◆ shared_room_preview_

usage_preview::RoomUsagePreview yaze::editor::UsagePreviewView::shared_room_preview_
private

Definition at line 145 of file usage_preview_view.h.

Referenced by DrawSharedUses(), and InvalidateTables().

◆ shared_preview_room_

int yaze::editor::UsagePreviewView::shared_preview_room_ = -1
private

Definition at line 146 of file usage_preview_view.h.

Referenced by DrawSharedUses(), InvalidateTables(), and ScanSharedUses().

◆ shared_preview_object_

size_t yaze::editor::UsagePreviewView::shared_preview_object_ = 0
private

Definition at line 147 of file usage_preview_view.h.

Referenced by DrawSharedUses().


The documentation for this class was generated from the following files: