1#ifndef YAZE_ZELDA3_DUNGEON_ROOM_LAYER_MANAGER_H
2#define YAZE_ZELDA3_DUNGEON_ROOM_LAYER_MANAGER_H
85 for (
int i = 0; i < 4; ++i) {
145 uint8_t alpha = 128) {
148 if (entry.object_index == object_index) {
149 entry.translucent = translucent;
159 if (entry.object_index == object_index) {
160 return entry.translucent;
168 if (entry.object_index == object_index && entry.translucent) {
214 if (merge_type.
ID == 0x08) {
285 return object_layer * 10;
295 return object_layer == 1;
370 return "BG1 Objects";
374 return "BG2 Objects";
387 return "Translucent";
408 if (!surface)
return;
412 SDL_SetSurfaceColorMod(surface, 128, 128, 128);
415 SDL_SetSurfaceColorMod(surface, 255, 255, 255);
Represents a bitmap image optimized for SNES ROM hacking.
RoomLayerManager - Manages layer visibility and compositing.
uint8_t GetObjectAlpha(size_t object_index) const
void ClearObjectTranslucency()
static bool IsObjectOnBG2(int object_layer)
Check if an object on a given layer should render to BG2.
bool use_priority_compositing_
void SetPriorityCompositing(bool enabled)
static const char * GetBlendModeName(LayerBlendMode mode)
Get blend mode name.
std::array< LayerBlendMode, 4 > layer_blend_mode_
static gfx::BackgroundBuffer & GetLayerBuffer(Room &room, LayerType layer)
Get the bitmap buffer for a layer type.
uint8_t current_merge_type_id_
static const char * GetLayerName(LayerType layer)
Get human-readable name for layer type.
void SetBG2ColorMathEnabled(bool enabled)
static const gfx::BackgroundBuffer & GetLayerBuffer(const Room &room, LayerType layer)
static bool IsTransparent(uint8_t pixel)
Check if a pixel index represents transparency.
int CalculateObjectPriority(int object_layer) const
void SetLayerBlendMode(LayerType layer, LayerBlendMode mode)
void ApplyLayerMerging(const LayerMergeType &merge_type)
void SetLayerVisible(LayerType layer, bool visible)
void ApplySurfaceColorMod(SDL_Surface *surface) const
Apply surface color modulation for DarkRoom effect.
void SetBG2OnTop(bool on_top)
std::array< LayerType, 4 > GetDrawOrder() const
Get the draw order for layers.
bool IsLayerVisible(LayerType layer) const
void SetObjectTranslucency(size_t object_index, bool translucent, uint8_t alpha=128)
std::array< uint8_t, 4 > layer_alpha_
bool IsPriorityCompositingEnabled() const
bool IsBG2ColorMathEnabled() const
LayerBlendMode GetLayerBlendMode(LayerType layer) const
static LayerType GetObjectLayerType(int object_layer)
Get the appropriate background layer type for an object.
std::array< bool, 4 > layer_visible_
bool IsObjectTranslucent(size_t object_index) const
bool AreLayersMerged() const
Check if layers are currently merged.
uint8_t GetMergeTypeId() const
Get the current merge type ID.
void CompositeToOutput(Room &room, gfx::Bitmap &output) const
Composite all visible layers into a single output bitmap.
void ApplyLayerMergingPreserveVisibility(const LayerMergeType &merge_type)
Apply layer merge settings without changing visibility.
uint8_t GetLayerAlpha(LayerType layer) const
int GetObjectLayerValue(int object_layer) const
Get object layer value for buffer assignment.
std::vector< ObjectTranslucency > object_translucency_
auto & object_bg2_buffer()
auto & object_bg1_buffer()
LayerBlendMode
Layer blend modes for compositing.
LayerType
Layer types for the 4-way visibility system.
Object metadata for tracking layer assignment.
Per-object translucency settings.