1#ifndef YAZE_CORE_PROJECT_H
2#define YAZE_CORE_PROJECT_H
7#include <unordered_map>
10#include "absl/status/status.h"
11#include "absl/status/statusor.h"
12#include "absl/strings/string_view.h"
41 std::vector<std::string>
tags;
152 std::unordered_map<std::string, std::unordered_map<std::string, std::string>>
228 absl::Status
Create(
const std::string& project_name,
229 const std::string& base_path);
230 absl::Status
Open(
const std::string& project_path);
232 absl::Status
SaveAs(
const std::string& new_path);
243 const std::unordered_map<std::string,
244 std::unordered_map<std::string, std::string>>&
246 std::string
GetLabel(
const std::string& resource_type,
int id,
247 const std::string& default_value =
"")
const;
297#ifdef YAZE_ENABLE_JSON_PROJECT_FORMAT
298 absl::Status LoadFromJsonFormat(
const std::string& project_path);
299 absl::Status SaveToJsonFormat();
323 const std::string& template_name,
const std::string& project_name,
324 const std::string& base_path);
328 const std::string& directory);
334 const std::string& target_path,
348 void EditLabel(
const std::string& type,
const std::string& key,
349 const std::string& newValue);
351 const std::string& key,
352 const std::string& defaultValue);
353 std::string
GetLabel(
const std::string& type,
const std::string& key);
354 std::string
CreateOrGetLabel(
const std::string& type,
const std::string& key,
355 const std::string& defaultValue);
364 std::unordered_map<std::string, std::unordered_map<std::string, std::string>>
Loads and queries the hack manifest JSON for yaze-ASM integration.
Enhanced project management with templates and validation.
static std::vector< std::string > FindProjectsInDirectory(const std::string &directory)
static absl::Status ValidateProjectStructure(const YazeProject &project)
static absl::StatusOr< YazeProject > CreateFromTemplate(const std::string &template_name, const std::string &project_name, const std::string &base_path)
static std::vector< std::string > GetRecommendedFixesForProject(const YazeProject &project)
static std::vector< ProjectTemplate > GetProjectTemplates()
static absl::Status RestoreProject(const std::string &backup_path)
static absl::Status ConvertProject(const std::string &source_path, const std::string &target_path, ProjectFormat target_format)
static absl::Status BackupProject(const YazeProject &project)
void RemoveFile(const std::string &file_path)
std::string GetFilePath() const
void AddFile(const std::string &file_path)
static RecentFilesManager & GetInstance()
const std::vector< std::string > & GetRecentFiles() const
RecentFilesManager(const RecentFilesManager &)=delete
std::vector< std::string > recent_files_
RecentFilesManager & operator=(const RecentFilesManager &)=delete
std::string RomRoleToString(RomRole role)
RomRole ParseRomRole(absl::string_view value)
const std::string kRecentFilesFilename
ProjectFormat
Supported project file formats.
RomWritePolicy ParseRomWritePolicy(absl::string_view value)
std::string RomWritePolicyToString(RomWritePolicy policy)
Dungeon overlay configuration (per-project).
std::vector< uint16_t > track_object_ids
std::vector< uint16_t > minecart_sprite_ids
std::vector< uint16_t > track_stop_tiles
std::vector< uint16_t > track_tiles
std::vector< uint16_t > track_switch_tiles
YazeProject template_project
std::string display_description
std::string CreateOrGetLabel(const std::string &type, const std::string &key, const std::string &defaultValue)
void DisplayLabels(bool *p_open)
std::string GetLabel(const std::string &type, const std::string &key)
void EditLabel(const std::string &type, const std::string &key, const std::string &newValue)
bool LoadLabels(const std::string &filename)
void SelectableLabelWithNameEdit(bool selected, const std::string &type, const std::string &key, const std::string &defaultValue)
std::unordered_map< std::string, std::unordered_map< std::string, std::string > > labels_
Consolidated workspace and UI settings.
int backup_keep_daily_days
std::string last_layout_preset
std::map< std::string, std::string > custom_keybindings
std::string window_layout_data
int backup_retention_count
std::vector< std::string > saved_layouts
std::map< std::string, bool > editor_visibility
float autosave_interval_secs
std::vector< std::string > recent_files
std::string custom_system_prompt
std::string gemini_api_key
bool enable_tool_emulator
bool enable_tool_memory_inspector
std::vector< std::string > favorite_models
bool enable_tool_resources
bool enable_tool_messages
std::vector< std::string > model_chain
std::string builder_blueprint_path
bool enable_tool_dialogue
bool enable_tool_overworld
std::string last_saved_at
bool persist_custom_music
Modern project structure with comprehensive settings consolidation.
std::string rom_backup_folder
std::unordered_map< int, std::vector< std::string > > custom_object_files
absl::Status ResetToDefaults()
std::string custom_objects_folder
absl::Status RepairProject()
std::string MakeStorageKey(absl::string_view suffix) const
static std::string ResolveBundleRoot(const std::string &path)
struct yaze::project::YazeProject::MusicPersistence music_persistence
bool project_opened() const
absl::StatusOr< std::string > SerializeToString() const
std::string zscream_project_file
absl::Status ExportForZScream(const std::string &target_path)
absl::Status ImportZScreamProject(const std::string &zscream_project_path)
absl::Status SaveAllSettings()
void NormalizePathsToAbsolute()
absl::Status ImportLabelsFromZScreamContent(const std::string &content)
Import labels from ZScream format content directly.
std::string git_repository
core::HackManifest hack_manifest
void InitializeResourceLabelProvider()
Initialize the global ResourceLabelProvider with this project's labels.
absl::Status ParseFromString(const std::string &content)
std::vector< std::string > additional_roms
std::string patches_folder
absl::Status LoadFromYazeFormat(const std::string &project_path)
std::unordered_map< std::string, std::unordered_map< std::string, std::string > > resource_labels
std::string GenerateProjectId() const
absl::Status Create(const std::string &project_name, const std::string &base_path)
std::string assets_folder
void ReloadHackManifest()
absl::Status SaveToYazeFormat()
absl::Status LoadAllSettings()
std::string labels_filename
std::vector< std::string > asm_sources
std::string hack_manifest_file
std::string GetDisplayName() const
std::vector< std::string > GetMissingFiles() const
WorkspaceSettings workspace_settings
std::string output_folder
std::string asm_entry_point
std::string GetRelativePath(const std::string &absolute_path) const
absl::Status InitializeEmbeddedLabels(const std::unordered_map< std::string, std::unordered_map< std::string, std::string > > &labels)
absl::Status SaveAs(const std::string &new_path)
struct yaze::project::YazeProject::AgentSettings agent_settings
DungeonOverlaySettings dungeon_overlay
absl::Status ImportFromZScreamFormat(const std::string &project_path)
void InitializeDefaults()
std::string GetAbsolutePath(const std::string &relative_path) const
std::string GetLabel(const std::string &resource_type, int id, const std::string &default_value="") const
absl::Status Open(const std::string &project_path)
absl::Status ImportLabelsFromZScream(const std::string &filepath)
Import labels from a ZScream DefaultNames.txt file.
std::string last_build_hash
void TryLoadHackManifest()
std::map< std::string, std::string > zscream_mappings
absl::Status Validate() const
core::FeatureFlags::Flags feature_flags
std::vector< std::string > build_configurations
core::RomAddressOverrides rom_address_overrides
std::string symbols_filename