Visual dashboard of Oracle game state from SRAM data. More...
#include <progression_dashboard_panel.h>


Public Member Functions | |
| ~ProgressionDashboardPanel () override | |
| std::string | GetId () const override |
| Unique identifier for this panel. | |
| std::string | GetDisplayName () const override |
| Human-readable name shown in menus and title bars. | |
| std::string | GetIcon () const override |
| Material Design icon for this panel. | |
| std::string | GetEditorCategory () const override |
| Editor category this panel belongs to. | |
| PanelCategory | GetPanelCategory () const override |
| Get the lifecycle category for this panel. | |
| float | GetPreferredWidth () const override |
| Get preferred width for this panel (optional) | |
| void | Draw (bool *p_open) override |
| Draw the panel content. | |
Public Member Functions inherited from yaze::editor::EditorPanel | |
| virtual | ~EditorPanel ()=default |
| virtual void | OnFirstDraw () |
| Called once before the first Draw() in a session. | |
| virtual bool | RequiresLazyInit () const |
| Whether this panel uses lazy initialization. | |
| void | InvalidateLazyInit () |
| Reset lazy init state so OnFirstDraw() runs again. | |
| virtual void | OnOpen () |
| Called when panel becomes visible. | |
| virtual void | OnClose () |
| Called when panel is hidden. | |
| virtual void | OnFocus () |
| Called when panel receives focus. | |
| virtual PanelContextScope | GetContextScope () const |
| Optional context binding for this panel (room/selection/etc) | |
| virtual PanelScope | GetScope () const |
| Get the registration scope for this panel. | |
| virtual bool | IsEnabled () const |
| Check if this panel is currently enabled. | |
| virtual std::string | GetDisabledTooltip () const |
| Get tooltip text when panel is disabled. | |
| virtual std::string | GetShortcutHint () const |
| Get keyboard shortcut hint for display. | |
| virtual int | GetPriority () const |
| Get display priority for menu ordering. | |
| virtual bool | IsVisibleByDefault () const |
| Whether this panel should be visible by default. | |
| virtual std::string | GetParentPanelId () const |
| Get parent panel ID for cascade behavior. | |
| virtual bool | CascadeCloseChildren () const |
| Whether closing this panel should close child panels. | |
| void | DrawWithLazyInit (bool *p_open) |
| Execute lazy initialization if needed, then call Draw() | |
Private Member Functions | |
| void | DrawSrmImportControls () |
| void | DrawLiveSyncControls () |
| void | PushStateToManifestIfNeeded () |
| void | DrawCrystalTracker () |
| void | DrawGameState () |
| void | DrawDungeonGrid () |
| void | DrawStoryFlags () |
| void | DrawManualControls () |
| void | RefreshLiveClientBinding () |
| void | EnsureLiveSubscription () |
| void | ProcessPendingLiveRefresh () |
| bool | RefreshStateFromLiveSram () |
| void | DetachLiveListener () |
Static Private Member Functions | |
| static bool | StatesEqual (const core::OracleProgressionState &a, const core::OracleProgressionState &b) |
| static void | DrawBitGrid (const char *id_prefix, uint8_t value, const char *const *labels) |
Private Attributes | |
| core::OracleProgressionState | state_ |
| int | game_state_slider_ = 0 |
| core::HackManifest * | manifest_ = nullptr |
| std::string | loaded_srm_path_ |
| std::string | last_srm_error_ |
| std::shared_ptr< emu::mesen::MesenSocketClient > | live_client_ |
| emu::mesen::EventListenerId | live_listener_id_ = 0 |
| bool | live_sync_enabled_ = true |
| bool | live_subscription_active_ = false |
| std::atomic< bool > | live_refresh_pending_ {false} |
| float | live_refresh_interval_seconds_ = 0.10f |
| double | last_live_refresh_time_ = 0.0 |
| double | last_subscribe_attempt_time_ = 0.0 |
| std::string | live_sync_error_ |
Static Private Attributes | |
| static constexpr const char * | oosprog_labels_ [8] |
| static constexpr const char * | oosprog2_labels_ [8] |
Additional Inherited Members | |
Protected Member Functions inherited from yaze::editor::EditorPanel | |
| void | InvalidateCache () |
| Invalidate all cached computations. | |
| template<typename T > | |
| T & | GetCached (const std::string &key, std::function< T()> compute) |
| Get or compute a cached value. | |
| bool | IsCacheValid () const |
| Check if cache has been invalidated. | |
| void | ClearCache () |
| Clear all cached values (more aggressive than InvalidateCache) | |
Visual dashboard of Oracle game state from SRAM data.
Shows crystal tracker, game state phase, story flags, and dungeon completion grid. Supports .srm file import and manual bit toggles for testing.
Definition at line 33 of file progression_dashboard_panel.h.
|
inlineoverride |
Definition at line 35 of file progression_dashboard_panel.h.
References DetachLiveListener().

|
inlineoverridevirtual |
Unique identifier for this panel.
IDs should be:
Implements yaze::editor::EditorPanel.
Definition at line 37 of file progression_dashboard_panel.h.
|
inlineoverridevirtual |
Human-readable name shown in menus and title bars.
Implements yaze::editor::EditorPanel.
Definition at line 38 of file progression_dashboard_panel.h.
|
inlineoverridevirtual |
Material Design icon for this panel.
Implements yaze::editor::EditorPanel.
Definition at line 41 of file progression_dashboard_panel.h.
References ICON_MD_DASHBOARD.
|
inlineoverridevirtual |
Editor category this panel belongs to.
Implements yaze::editor::EditorPanel.
Definition at line 42 of file progression_dashboard_panel.h.
|
inlineoverridevirtual |
Get the lifecycle category for this panel.
Default is EditorBound (hidden when switching editors).
Reimplemented from yaze::editor::EditorPanel.
Definition at line 43 of file progression_dashboard_panel.h.
References yaze::editor::CrossEditor.
|
inlineoverridevirtual |
Get preferred width for this panel (optional)
Override this to specify content-based sizing. For example, a tile selector with 8 tiles at 16px × 2.0 scale would return ~276px.
Reimplemented from yaze::editor::EditorPanel.
Definition at line 46 of file progression_dashboard_panel.h.
|
inlineoverridevirtual |
Draw the panel content.
| p_open | Pointer to visibility flag (nullptr if not closable) |
Called by PanelManager when the panel is visible. Do NOT call ImGui::Begin/End - the PanelWindow wrapper handles that. Just draw your content directly.
Implements yaze::editor::EditorPanel.
Definition at line 48 of file progression_dashboard_panel.h.
References yaze::editor::ContentRegistry::Context::current_project(), DrawCrystalTracker(), DrawDungeonGrid(), DrawGameState(), DrawManualControls(), DrawSrmImportControls(), DrawStoryFlags(), EnsureLiveSubscription(), manifest_, ProcessPendingLiveRefresh(), PushStateToManifestIfNeeded(), and RefreshLiveClientBinding().
|
inlinestaticprivate |
Definition at line 80 of file progression_dashboard_panel.h.
References yaze::core::OracleProgressionState::crystal_bitfield, yaze::core::OracleProgressionState::game_state, yaze::core::OracleProgressionState::oosprog, yaze::core::OracleProgressionState::oosprog2, yaze::core::OracleProgressionState::pendants, and yaze::core::OracleProgressionState::side_quest.
Referenced by PushStateToManifestIfNeeded().
|
inlineprivate |
Definition at line 88 of file progression_dashboard_panel.h.
References yaze::core::HackManifest::ClearOracleProgressionState(), DrawLiveSyncControls(), yaze::util::FileDialogOptions::filters, yaze::core::OracleProgressionState::game_state, game_state_slider_, last_srm_error_, loaded_srm_path_, yaze::core::LoadOracleProgressionFromSrmFile(), manifest_, yaze::util::FileDialogWrapper::ShowOpenFileDialog(), and state_.
Referenced by Draw().

|
inlineprivate |
Definition at line 142 of file progression_dashboard_panel.h.
References live_client_, live_refresh_interval_seconds_, live_refresh_pending_, live_sync_enabled_, live_sync_error_, and RefreshStateFromLiveSram().
Referenced by DrawSrmImportControls().

|
inlineprivate |
Definition at line 177 of file progression_dashboard_panel.h.
References yaze::core::HackManifest::loaded(), manifest_, yaze::core::HackManifest::oracle_progression_state(), yaze::core::HackManifest::SetOracleProgressionState(), state_, and StatesEqual().
Referenced by Draw().

|
inlineprivate |
Definition at line 189 of file progression_dashboard_panel.h.
References yaze::core::OracleProgressionState::crystal_bitfield, yaze::core::OracleProgressionState::GetCrystalCount(), yaze::core::OracleProgressionState::GetCrystalMask(), and state_.
Referenced by Draw().

|
inlineprivate |
Definition at line 223 of file progression_dashboard_panel.h.
References yaze::core::OracleProgressionState::game_state, yaze::core::OracleProgressionState::GetGameStateName(), and state_.
Referenced by Draw().

|
inlineprivate |
Definition at line 258 of file progression_dashboard_panel.h.
References yaze::core::OracleProgressionState::IsDungeonComplete(), and state_.
Referenced by Draw().

|
inlineprivate |
Definition at line 296 of file progression_dashboard_panel.h.
References DrawBitGrid(), yaze::core::OracleProgressionState::oosprog, yaze::core::OracleProgressionState::oosprog2, oosprog2_labels_, oosprog_labels_, yaze::core::OracleProgressionState::side_quest, and state_.
Referenced by Draw().

|
inlinestaticprivate |
Definition at line 317 of file progression_dashboard_panel.h.
Referenced by DrawStoryFlags().
|
inlineprivate |
Definition at line 335 of file progression_dashboard_panel.h.
References yaze::core::OracleProgressionState::crystal_bitfield, yaze::core::OracleProgressionState::game_state, game_state_slider_, and state_.
Referenced by Draw().
|
inlineprivate |
Definition at line 362 of file progression_dashboard_panel.h.
References DetachLiveListener(), yaze::emu::mesen::MesenClientRegistry::GetClient(), live_client_, live_refresh_pending_, live_subscription_active_, and live_sync_error_.
Referenced by Draw().

|
inlineprivate |
Definition at line 378 of file progression_dashboard_panel.h.
References last_subscribe_attempt_time_, live_client_, live_listener_id_, live_refresh_pending_, live_subscription_active_, live_sync_enabled_, live_sync_error_, and yaze::emu::mesen::MesenEvent::type.
Referenced by Draw().
|
inlineprivate |
Definition at line 418 of file progression_dashboard_panel.h.
References last_live_refresh_time_, live_refresh_interval_seconds_, live_refresh_pending_, live_sync_enabled_, and RefreshStateFromLiveSram().
Referenced by Draw().

|
inlineprivate |
Definition at line 435 of file progression_dashboard_panel.h.
References yaze::core::OracleProgressionState::crystal_bitfield, yaze::core::OracleProgressionState::game_state, game_state_slider_, yaze::core::OracleProgressionState::kCrystalOffset, yaze::core::OracleProgressionState::kGameStateOffset, yaze::core::OracleProgressionState::kOosProg2Offset, yaze::core::OracleProgressionState::kOosProgOffset, yaze::core::OracleProgressionState::kPendantOffset, yaze::core::OracleProgressionState::kSideQuestOffset, last_srm_error_, live_client_, live_sync_error_, loaded_srm_path_, yaze::core::OracleProgressionState::oosprog, yaze::core::OracleProgressionState::oosprog2, yaze::core::OracleProgressionState::pendants, yaze::core::OracleProgressionState::side_quest, and state_.
Referenced by DrawLiveSyncControls(), and ProcessPendingLiveRefresh().
|
inlineprivate |
Definition at line 476 of file progression_dashboard_panel.h.
References live_client_, live_listener_id_, and live_subscription_active_.
Referenced by RefreshLiveClientBinding(), and ~ProgressionDashboardPanel().
|
private |
Definition at line 484 of file progression_dashboard_panel.h.
Referenced by DrawCrystalTracker(), DrawDungeonGrid(), DrawGameState(), DrawManualControls(), DrawSrmImportControls(), DrawStoryFlags(), PushStateToManifestIfNeeded(), and RefreshStateFromLiveSram().
|
private |
Definition at line 485 of file progression_dashboard_panel.h.
Referenced by DrawManualControls(), DrawSrmImportControls(), and RefreshStateFromLiveSram().
|
private |
Definition at line 487 of file progression_dashboard_panel.h.
Referenced by Draw(), DrawSrmImportControls(), and PushStateToManifestIfNeeded().
|
private |
Definition at line 488 of file progression_dashboard_panel.h.
Referenced by DrawSrmImportControls(), and RefreshStateFromLiveSram().
|
private |
Definition at line 489 of file progression_dashboard_panel.h.
Referenced by DrawSrmImportControls(), and RefreshStateFromLiveSram().
|
private |
Definition at line 491 of file progression_dashboard_panel.h.
Referenced by DetachLiveListener(), DrawLiveSyncControls(), EnsureLiveSubscription(), RefreshLiveClientBinding(), and RefreshStateFromLiveSram().
|
private |
Definition at line 492 of file progression_dashboard_panel.h.
Referenced by DetachLiveListener(), and EnsureLiveSubscription().
|
private |
Definition at line 493 of file progression_dashboard_panel.h.
Referenced by DrawLiveSyncControls(), EnsureLiveSubscription(), and ProcessPendingLiveRefresh().
|
private |
Definition at line 494 of file progression_dashboard_panel.h.
Referenced by DetachLiveListener(), EnsureLiveSubscription(), and RefreshLiveClientBinding().
|
private |
Definition at line 495 of file progression_dashboard_panel.h.
Referenced by DrawLiveSyncControls(), EnsureLiveSubscription(), ProcessPendingLiveRefresh(), and RefreshLiveClientBinding().
|
private |
Definition at line 496 of file progression_dashboard_panel.h.
Referenced by DrawLiveSyncControls(), and ProcessPendingLiveRefresh().
|
private |
Definition at line 497 of file progression_dashboard_panel.h.
Referenced by ProcessPendingLiveRefresh().
|
private |
Definition at line 498 of file progression_dashboard_panel.h.
Referenced by EnsureLiveSubscription().
|
private |
Definition at line 499 of file progression_dashboard_panel.h.
Referenced by DrawLiveSyncControls(), EnsureLiveSubscription(), RefreshLiveClientBinding(), and RefreshStateFromLiveSram().
|
staticconstexprprivate |
Definition at line 502 of file progression_dashboard_panel.h.
Referenced by DrawStoryFlags().
|
staticconstexprprivate |
Definition at line 507 of file progression_dashboard_panel.h.
Referenced by DrawStoryFlags().