1#ifndef YAZE_APP_EDITOR_SHELL_COORDINATOR_WELCOME_SCREEN_H_
2#define YAZE_APP_EDITOR_SHELL_COORDINATOR_WELCOME_SCREEN_H_
10#include "imgui/imgui.h"
30 bool Show(
bool* p_open);
50 std::function<
void(
const std::string&)> callback) {
135 const ImVec2& card_size);
143 float available_height,
144 float row_height,
float row_gap,
145 float more_line_height);
147 const std::vector<RecentProject>& entries);
Manages user preferences and settings persistence.
Modern welcome screen with project grid and quick actions.
std::function< void()> open_rom_callback_
std::function< void()> new_project_callback_
void SetNewProjectCallback(std::function< void()> callback)
Set callback for creating new project.
bool entry_animations_started_
void MarkManuallyClosed()
Mark as manually closed (don't show again this session)
void DrawUndoRemovalBanner()
static int CalculateVisibleRecentCount(int entry_count, float available_height, float row_height, float row_gap, float more_line_height)
bool release_notes_open_failed_
float triforce_alpha_multiplier_
static constexpr float kEntryStaggerDelay
float triforce_speed_multiplier_
std::string pending_annotation_path_
RecentProjectsModel recent_projects_model_
static constexpr int kNumTriforces
const RecentProjectsModel & recent_projects() const
void DrawRecentAnnotationPopup()
void SetLayoutOffsets(float left, float right)
Set layout offsets for sidebar awareness.
RecentAnnotationKind pending_annotation_kind_
static constexpr float kEntryAnimDuration
void SetOpenAssemblyEditorNoRomCallback(std::function< void()> callback)
Open the assembly editor for file/folder work (no ROM required).
void RefreshRecentProjects(bool force=false)
Refresh recent projects list from the project manager.
bool ShouldShow() const
Check if screen should be shown.
float triforce_size_multiplier_
void DrawProjectPanel(const RecentProject &project, int index, const ImVec2 &card_size)
void SetOpenRomCallback(std::function< void()> callback)
Set callback for opening ROM.
RecentProjectsModel & recent_projects()
Accessor used by command-palette wiring so the same recent list drives both the visual cards and the ...
ImVec2 triforce_base_positions_[kNumTriforces]
Particle particles_[kMaxParticles]
void SetOpenPrototypeResearchCallback(std::function< void()> callback)
Open the graphics editor focused on prototype research (no ROM).
static bool ShouldUseStackedLayout(float content_width, float content_height, float layout_scale)
void UpdateAnimations()
Update animation time for dynamic effects.
void SetOpenProjectManagementCallback(std::function< void()> callback)
Set callback for showing project management.
static constexpr int kMaxParticles
void SetContextState(bool has_rom)
Set whether a ROM is currently loaded for first-run guidance.
bool Show(bool *p_open)
Show the welcome screen.
static const RecentProject * FindResumeProject(const std::vector< RecentProject > &entries)
int active_particle_count_
ImVec2 triforce_positions_[kNumTriforces]
std::function< void(const std::string &) open_project_callback_)
void DrawRecentProjects()
bool triforce_mouse_repel_enabled_
friend class WelcomeScreenTestPeer
void SetOpenProjectCallback(std::function< void(const std::string &)> callback)
Set callback for opening project.
std::function< void()> open_prototype_research_callback_
void SetUserSettings(UserSettings *settings)
Load persisted Welcome-screen animation preferences.
std::function< void()> open_assembly_editor_no_rom_callback_
std::function< void()> open_project_management_callback_
bool triforce_positions_initialized_
float particle_spawn_accumulator_
float particle_spawn_rate_