1#ifndef YAZE_APP_EDITOR_DUNGEON_PANELS_MINECART_TRACK_EDITOR_PANEL_H
2#define YAZE_APP_EDITOR_DUNGEON_PANELS_MINECART_TRACK_EDITOR_PANEL_H
10#include <unordered_map>
14#include "absl/status/status.h"
15#include "absl/status/statusor.h"
36 std::string
GetId()
const override {
return "dungeon.minecart_tracks"; }
41 void Draw(
bool* p_open)
override;
68 const std::vector<MinecartTrack>&
GetTracks();
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
std::filesystem::path loaded_source_path_
std::string overlay_track_stop_tiles_input_
std::string overlay_track_object_ids_input_
void StartCoordinatePicking(int track_index)
std::string overlay_track_switch_tiles_input_
std::string bound_project_filepath_
bool IsDefaultTrack(const MinecartTrack &track) const
void SetRooms(DungeonRoomStore *rooms)
std::string GetId() const override
Unique identifier for this panel.
std::string GetIcon() const override
Material Design icon for this panel.
bool IsPickingCoordinates() const
absl::Status ReloadTracks()
std::string GetEditorCategory() const override
Editor category this panel belongs to.
std::string status_message_
std::optional< core::MinecartTrackLayout::Source > bound_source_identity_
std::string overlay_minecart_sprite_ids_input_
void SetProjectChangedCallback(ProjectChangedCallback callback)
bool UpdateOverlayList(const char *label, std::string &input, OverlayListMember member)
void Draw(bool *p_open) override
Draw the panel content.
std::string loaded_source_sha256_
int GetPickingTrackIndex() const
absl::Status LoadTracks()
absl::Status NotifyProjectDraftChanged()
const std::vector< MinecartTrack > & GetTracks()
ProjectDraftChangedCallback project_draft_changed_callback_
std::vector< bool > track_subtype_used_
std::vector< uint16_t > project::DungeonOverlaySettings::* OverlayListMember
std::unordered_map< int, RoomTrackAudit > room_audit_
std::function< void(int room_id)> RoomNavigationCallback
std::vector< MinecartTrack > tracks_
RoomNavigationCallback room_navigation_callback_
void SetRoomNavigationCallback(RoomNavigationCallback callback)
absl::Status NotifyProjectChanged(const project::DungeonOverlaySettings &overlay)
std::optional< MinecartTrackSourceDocument > source_document_
std::string overlay_track_tiles_input_
void DrawOverlaySettings()
absl::Status ValidateLoadedManifestIdentity() const
absl::StatusOr< bool > CommitOverlayList(std::string &input, OverlayListMember member)
ProjectChangedCallback project_changed_callback_
absl::Status DiscardUnpublishedChanges()
absl::Status UpdateTrack(size_t track_index, const MinecartTrack &track)
absl::Status RebindProjectContext(project::YazeProject *project)
absl::StatusOr< std::filesystem::path > ResolveTrackSourcePath() const
bool overlay_inputs_initialized_
bool HasUnpublishedChanges() const
void ClearOverlayInputs()
absl::Status SetProject(project::YazeProject *project)
std::optional< core::MinecartTrackLayout::Source > loaded_source_identity_
std::function< absl::Status(const project::DungeonOverlaySettings &)> ProjectChangedCallback
std::function< absl::Status()> ProjectSaveCallback
void CancelCoordinatePicking()
absl::Status RefreshProjectBinding()
friend class MinecartTrackEditorPanelTestPeer
ProjectSaveCallback project_save_callback_
absl::Status SaveTracks()
MinecartTrackEditorPanel()=default
void InitializeOverlayInputs()
absl::Status SaveProjectSettings()
std::unordered_map< int, std::vector< int > > track_usage_rooms_
absl::StatusOr< bool > ResetOverlaySettings()
absl::Status PrepareProjectSave()
void SetProjectDraftChangedCallback(ProjectDraftChangedCallback callback)
std::function< absl::Status()> ProjectDraftChangedCallback
void SetProjectSaveCallback(ProjectSaveCallback callback)
std::vector< MinecartTrack > loaded_tracks_
project::YazeProject * project_
std::string GetDisplayName() const override
Human-readable name shown in menus and title bars.
void SetPickedCoordinates(int room_id, uint16_t camera_x, uint16_t camera_y)
std::optional< project::DungeonOverlaySettings > overlay_inputs_model_
absl::StatusOr< bool > CommitOverlayInputsForSave()
bool HasPendingProjectDraftChanges() const
DungeonRoomStore * rooms_
Base interface for all logical window content components.
Editors are the view controllers for the application.
std::vector< int > track_subtypes
bool has_minecart_on_stop
Dungeon overlay configuration (per-project).
Modern project structure with comprehensive settings consolidation.