1#ifndef YAZE_APP_EDITOR_DUNGEON_DUNGEON_RENDERING_HELPERS_H
2#define YAZE_APP_EDITOR_DUNGEON_DUNGEON_RENDERING_HELPERS_H
9#include "imgui/imgui.h"
17struct SpriteOamLayout;
39 uint8_t tile,
const std::vector<uint16_t>& track_tiles,
40 const std::vector<uint16_t>& track_switches);
43 TrackDir dir,
float size, ImU32 color);
45 float tile_size, uint8_t mask,
57 ImDrawList* draw_list,
const std::vector<uint8_t>& preview,
58 const SDL_Rect& bounds,
const ImVec2& box_min,
const ImVec2& box_max,
59 const std::array<SDL_Color, 256>& color_table,
64 uint8_t item_id, uint8_t* out_sprite_id =
nullptr);
68 std::vector<uint8_t>& out_pixels,
69 SDL_Rect& out_bounds);
78 for (
int i = 0; i < 256; ++i) {
92 std::vector<CollisionOverlayEntry>
entries;
97 ImDrawList* draw_list,
const ImVec2& canvas_pos,
float scale,
99 bool direction_map_enabled,
const std::vector<uint16_t>& track_tile_order,
100 const std::vector<uint16_t>& switch_tile_order,
bool show_legend);
103 const ImVec2& canvas_pos,
float scale,
107 const ImVec2& canvas_pos,
float scale,
111 const ImVec2& canvas_pos,
float scale,
115 ImDrawList* draw_list,
const ImVec2& canvas_pos,
float scale,
116 const zelda3::Room& room,
const std::bitset<256>& minecart_sprite_ids,
120 const ImVec2& canvas_pos,
float scale,
125 const ImVec2& canvas_pos,
float scale,
static void DrawCustomCollisionOverlay(ImDrawList *draw_list, const ImVec2 &canvas_pos, float scale, const zelda3::Room &room)
static void DrawTrackGapOverlay(ImDrawList *draw_list, const ImVec2 &canvas_pos, float scale, const zelda3::Room &room, const CollisionOverlayCache &cache)
static constexpr uint8_t kSpritePreviewTransparentIndex
static void DrawTrackCollisionOverlay(ImDrawList *draw_list, const ImVec2 &canvas_pos, float scale, const CollisionOverlayCache &cache, const TrackCollisionConfig &config, bool direction_map_enabled, const std::vector< uint16_t > &track_tile_order, const std::vector< uint16_t > &switch_tile_order, bool show_legend)
static void DrawCameraQuadrantOverlay(ImDrawList *draw_list, const ImVec2 &canvas_pos, float scale, const zelda3::Room &room)
static std::pair< int, int > RoomToCanvasCoordinates(int room_x, int room_y)
static void DrawTrackRouteOverlay(ImDrawList *draw_list, const ImVec2 &canvas_pos, float scale, const CollisionOverlayCache &cache)
static TrackDirectionMasks GetTrackDirectionMasksForTrackIndex(size_t index)
static void DrawMinecartSpriteOverlay(ImDrawList *draw_list, const ImVec2 &canvas_pos, float scale, const zelda3::Room &room, const std::bitset< 256 > &minecart_sprite_ids, const TrackCollisionConfig &config)
static TrackDirectionMasks GetTrackDirectionMasksForSwitchIndex(size_t index)
static void DrawWaterFillOverlay(ImDrawList *draw_list, const ImVec2 &canvas_pos, float scale, const zelda3::Room &room)
static constexpr uint8_t kBackgroundBufferTransparentIndex
static void DrawTrackDirectionMask(ImDrawList *draw_list, const ImVec2 &min, float tile_size, uint8_t mask, ImU32 color)
static bool BuildPotItemPreview(uint8_t item_id, const zelda3::Room &room, std::vector< uint8_t > &out_pixels, SDL_Rect &out_bounds)
static void DrawTrackArrowHead(ImDrawList *draw_list, const ImVec2 &tip, TrackDir dir, float size, ImU32 color)
static TrackDirectionMasks GetTrackDirectionMasksFromConfig(uint8_t tile, const std::vector< uint16_t > &track_tiles, const std::vector< uint16_t > &track_switches)
static bool DrawSpritePreview(ImDrawList *draw_list, const std::vector< uint8_t > &preview, const SDL_Rect &bounds, const ImVec2 &box_min, const ImVec2 &box_max, const std::array< SDL_Color, 256 > &color_table, uint8_t transparent_index=kSpritePreviewTransparentIndex)
static const zelda3::SpriteOamLayout * GetPotItemSpriteLayout(uint8_t item_id, uint8_t *out_sprite_id=nullptr)
Editors are the view controllers for the application.
constexpr uint8_t kTrackDirSouth
constexpr uint8_t kTrackDirEast
constexpr uint8_t kTrackDirNorth
constexpr uint8_t kTrackDirWest
Zelda 3 specific classes and functions.
std::vector< CollisionOverlayEntry > entries
std::array< bool, 256 > stop_tiles
std::array< bool, 256 > switch_tiles
std::array< bool, 256 > track_tiles
Complete OAM layout for a vanilla sprite.