refactor(editor): improve card visibility checks across various editors

- Updated multiple editor components to check visibility flags before rendering cards, ensuring that only visible cards are displayed.
- Refactored card rendering logic in GraphicsEditor, ScreenEditor, MessageEditor, MusicEditor, SpriteEditor, and Emulator to enhance user experience and performance.
- Improved maintainability by centralizing visibility checks and ensuring consistent behavior across different editor types.

Benefits:
- Streamlines the rendering process, leading to a more efficient UI experience.
- Enhances code clarity and maintainability by standardizing visibility handling across editors.
This commit is contained in:
scawful
2025-10-15 14:55:49 -04:00
parent 71a573aee4
commit b8ccc2a6cd
10 changed files with 361 additions and 189 deletions

View File

@@ -59,17 +59,23 @@ absl::Status SpriteEditor::Update() {
vanilla_card.SetDefaultSize(900, 700);
custom_card.SetDefaultSize(800, 600);
// Get visibility flags from card manager and pass to Begin()
// Always call End() after Begin() - End() handles ImGui state safely
if (vanilla_card.Begin(card_registry->GetVisibilityFlag("sprite.vanilla_editor"))) {
DrawVanillaSpriteEditor();
// Vanilla Sprites Card - Check visibility flag exists and is true before rendering
bool* vanilla_visible = card_registry->GetVisibilityFlag("sprite.vanilla_editor");
if (vanilla_visible && *vanilla_visible) {
if (vanilla_card.Begin(vanilla_visible)) {
DrawVanillaSpriteEditor();
}
vanilla_card.End();
}
vanilla_card.End();
if (custom_card.Begin(card_registry->GetVisibilityFlag("sprite.custom_editor"))) {
DrawCustomSprites();
// Custom Sprites Card - Check visibility flag exists and is true before rendering
bool* custom_visible = card_registry->GetVisibilityFlag("sprite.custom_editor");
if (custom_visible && *custom_visible) {
if (custom_card.Begin(custom_visible)) {
DrawCustomSprites();
}
custom_card.End();
}
custom_card.End();
return status_.ok() ? absl::OkStatus() : status_;
}