Files
yaze/docs/infrastructure.md
2024-08-10 20:57:49 -04:00

66 lines
2.5 KiB
Markdown

# Infrastructure Overview
For developers to reference.
## Targets
- **yaze**: Desktop application for Windows/macOS/Linux
- **z3ed**: Command Line Interface
- **yaze_c**: C Library
- **yaze_py**: Python Module
- **yaze_ext**: Extensions library
- **yaze_test**: Unit test executable
## Directory Structure
- **assets**: Hosts assets like fonts, icons, assembly source, etc.
- **cmake**: Contains CMake configurations.
- **docs**: Contains documentation for users and developers.
- **src**: Contains source files.
- **app**: Contains the GUI editor `yaze`
- **base**: Contains the base data headers for `yaze_c`
- **cli**: Contains the command line interface `z3ed`
- **ext**: Contains the extensions library `yaze_ext`
- **py**: Contains the Python module `yaze_py`
- **lib**: Contains the dependencies as git submodules
- **test**: Contains testing interface `yaze_test`
## Flow of Control
- [app/yaze.cc](../src/app/yaze.cc)
- Initializes `absl::FailureSignalHandler` for stack tracing.
- Runs the `core::Controller` loop.
- [app/core/controller.cc](../src/app/core/controller.cc)
- Initializes SDLRenderer and SDLWindow
- Initializes ImGui, fonts, themes, and clipboard.
- Handles user input from keyboard and mouse.
- Updates `editor::MasterEditor`
- Renders the output to the screen.
- Handles the teardown of SDL and ImGui resources.
- [app/editor/editor_manager.cc](../src/app/editor/editor_manager.cc)
- Handles the main menu bar
- Handles `absl::Status` errors as popups delivered to the user.
- Update all the editors in a tab view.
- [app/editor/assembly_editor.cc](../src/app/editor/assembly_editor.cc)
- [app/editor/dungeon_editor.cc](../src/app/editor/dungeon_editor.cc)
- [app/editor/graphics_editor.cc](../src/app/editor/graphics_editor.cc)
- [app/editor/music_editor.cc](../src/app/editor/music_editor.cc)
- [app/editor/overworld/overworld_editor.cc](../src/app/editor/overworld/overworld_editor.cc)
- [app/editor/screen_editor.cc](../src/app/editor/screen_editor.cc)
- [app/editor/sprite_editor.cc](../src/app/editor/sprite_editor.cc)
## Rom
- [app/rom.cc](../src/app/rom.cc)
- [app/rom.h](../src/app/rom.h)
The `Rom` class provides methods to manipulate and access data from a ROM.
## Bitmap
- [app/gfx/bitmap.cc](../src/app/gfx/bitmap.cc)
- [app/gfx/bitmap.h](../src/app/gfx/bitmap.cc)
This class is responsible for creating, managing, and manipulating bitmap data, which can be displayed on the screen using SDL2 Textures and the ImGui draw list.