yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
project.h
Go to the documentation of this file.
1#ifndef YAZE_CORE_PROJECT_H
2#define YAZE_CORE_PROJECT_H
3
4#include <algorithm>
5#include <cstdint>
6#include <map>
7#include <optional>
8#include <string>
9#include <unordered_map>
10#include <vector>
11
12#include "absl/status/status.h"
13#include "absl/status/statusor.h"
14#include "absl/strings/string_view.h"
15#include "core/features.h"
16#include "core/hack_manifest.h"
17#include "core/rom_settings.h"
18#include "core/sprite_asset.h"
20
21namespace yaze {
22namespace project {
23
28enum class ProjectFormat {
29 kYazeNative, // .yaze - YAZE native format
30 kZScreamCompat // .zsproj - ZScream compatibility format
31};
32
38 std::string version = "2.0";
39 std::string created_by = "YAZE";
40 std::string created_date;
41 std::string last_modified;
42 std::string yaze_version;
43 std::string description;
44 std::vector<std::string> tags;
45 std::string author;
46 std::string license;
47 std::string project_id;
48
49 // ZScream compatibility
50 bool zscream_compatible = false;
51 std::string zscream_version;
52};
53
59 // Display settings
60 float font_global_scale = 1.0f;
61 bool dark_mode = true;
62 std::string ui_theme = "default";
63
64 // Layout settings
65 std::string last_layout_preset;
66 std::vector<std::string> saved_layouts;
67 std::string window_layout_data; // ImGui .ini data
68
69 // Editor preferences
70 bool autosave_enabled = true;
71 float autosave_interval_secs = 300.0f; // 5 minutes
72 bool backup_on_save = true;
73 bool show_grid = true;
74 bool show_collision = false;
75
76 // Backup management
77 int backup_retention_count = 20; // Keep last N backups (0 = unlimited)
78 bool backup_keep_daily = true; // Keep one backup per day
79 int backup_keep_daily_days = 14; // Days to retain daily snapshots
80
81 // Label preferences
82 bool prefer_hmagic_names = true; // Prefer Hyrule Magic sprite names
83
84 // Advanced settings
85 std::map<std::string, std::string> custom_keybindings;
86 std::vector<std::string> recent_files;
87 std::map<std::string, bool> editor_visibility;
88};
89
95 // Collision tile IDs used by minecart tracks and interactions.
96 std::vector<uint16_t> track_tiles;
97 std::vector<uint16_t> track_stop_tiles;
98 std::vector<uint16_t> track_switch_tiles;
99
100 // Object/Sprite IDs used for minecart tooling and validation.
101 std::vector<uint16_t> track_object_ids;
102 std::vector<uint16_t> minecart_sprite_ids;
103};
104
115 std::vector<uint16_t> reserved_sheets;
116 std::vector<uint16_t> flagged_sheets;
117 std::map<uint16_t, std::vector<uint16_t>> reserved_blocks;
118
119 bool empty() const {
120 return reserved_sheets.empty() && flagged_sheets.empty() &&
121 reserved_blocks.empty();
122 }
123};
124
135 // Annotation files, merged in order (yaze.atlas/1 or the Oracle of Secrets
136 // room/overworld files). `annotations=a.json,b.json`.
137 std::vector<std::string> annotations;
138 // "vanilla" (built-in vanilla names and colors) or "none".
139 std::string defaults = "vanilla";
140 // Optional .sym for symbol links. Empty: the .sym next to the ROM, then
141 // [files] symbols_filename.
142 std::string symbols;
143 // Folder for the editor's Export buttons. Empty: the project folder.
144 std::string export_folder;
145 // The loaded file had an [atlas] section; save writes it back even when
146 // every value is the default.
147 bool section_present = false;
148
149 bool IsDefault() const {
150 return annotations.empty() && defaults == "vanilla" && symbols.empty() &&
151 export_folder.empty();
152 }
153 bool operator==(const AtlasSettings& other) const {
154 return annotations == other.annotations && defaults == other.defaults &&
155 symbols == other.symbols && export_folder == other.export_folder;
156 }
157};
158
168 std::string file;
169 // The loaded file had a [planning] section; save writes it back even when
170 // `file` is empty.
171 bool section_present = false;
172
173 bool IsDefault() const { return file.empty(); }
174 bool operator==(const PlanningSettings& other) const {
175 return file == other.file;
176 }
177};
178
194 struct Line {
195 enum class Kind : uint8_t { kComment, kKnownKey, kUnknownLine };
197 std::string key; // kKnownKey and kUnknownLine (empty without '=').
198 std::string text; // The line as written, without its line ending.
199 };
200 struct Section {
201 std::string name; // Without brackets. "" = before the first section.
202 bool known = false; // A section this build parses.
203 std::vector<Line> lines;
204 };
205 std::vector<Section> sections; // File order, one entry per section name.
206
207 bool empty() const {
208 for (const auto& section : sections) {
209 for (const auto& line : section.lines) {
210 if (line.kind != Line::Kind::kKnownKey) {
211 return false;
212 }
213 }
214 }
215 return true;
216 }
217};
218
221
227
229 uint32_t start = 0;
230 uint32_t end = 0;
231 std::string reason;
232};
233
235 std::string symbols_mlb;
236 std::string sourcemap_json;
237 std::string annotations_json;
238 std::string hooks_json;
239 std::string lint_json;
240};
241
243 bool loaded = false;
244 std::string config_path;
245 std::string preset;
246 std::vector<std::string> include_paths;
247 std::vector<std::pair<std::string, std::string>> defines;
248 std::vector<std::string> emits;
249 std::vector<std::string> main_files;
250 std::string std_includes_path;
251 std::string std_defines_path;
252 std::string mapper;
253 int rom_size = 0;
254 std::string symbols_format;
255 std::string symbols_path;
256 std::vector<Z3dkMemoryRange> prohibited_memory_ranges;
257 std::optional<bool> lsp_log_enabled;
258 std::string lsp_log_path;
265 bool warn_hook_return = true;
266 std::string rom_path;
268};
269
270std::string RomRoleToString(RomRole role);
271RomRole ParseRomRole(absl::string_view value);
272std::string RomWritePolicyToString(RomWritePolicy policy);
273RomWritePolicy ParseRomWritePolicy(absl::string_view value);
274
275#ifndef __EMSCRIPTEN__
276// Atomically writes project descriptor contents. When replace_existing is
277// false, a target created after preflight is rejected without mutation.
278absl::Status WriteProjectFileAtomically(absl::string_view target_path,
279 absl::string_view contents,
280 bool replace_existing);
281#endif
282
288 YazeProject() = default;
289 YazeProject(const YazeProject&) = default;
293 // Open() and InitializeResourceLabelProvider() point the process-wide
294 // zelda3::GetResourceLabels() at this project's members; the destructor
295 // releases any binding that still refers to them.
296 ~YazeProject();
297
298 // Basic project info
300 std::string name;
301 std::string filepath;
303
304 // ROM and resources
305 std::string rom_filename;
306 std::string rom_backup_folder;
307 std::vector<std::string> additional_roms; // For multi-ROM projects
309
310 // Code and assets
311 std::string code_folder;
312 std::string assets_folder;
313 std::string patches_folder;
314 std::string labels_filename;
315 std::string symbols_filename;
316 // Overworld cutscene camera/actor shots ([files] cutscene_shots). Empty:
317 // the Cutscene Camera window is read-only and offers Copy JSON.
318 std::string cutscene_shots;
319 // Optional read-only raw DMA graphics preview manifest, relative to project.
321 // Read-only literal ASM tile patterns for the standard dungeon renderer.
323 // Tracked custom collision source kept in step with the ROM on every save
324 // ([files] custom_collision_json). Empty: collision lives only in the ROM.
326 std::string
327 custom_objects_folder; // Folder containing custom object .bin files
328 std::string
329 hack_manifest_file; // Path to hack_manifest.json (ASM integration)
330 // Opt-in, read-only sprite catalog. Both paths resolve relative to the project.
333 std::vector<SpriteAssetBinding> sprite_assets;
334
335 // Optional game-independent terrain labels, stored outside the ROM.
337
338 // Optional read-only palette names, contextual sprite uses and provenance.
340
341 // Optional custom object file mapping (object_id -> filenames per subtype).
342 std::unordered_map<int, std::vector<std::string>> custom_object_files;
343
344 // Consolidated settings (previously scattered across multiple files)
352 std::unordered_map<std::string, std::unordered_map<std::string, std::string>>
354
355 // Embedded labels flag - when true, resource_labels contains all default
356 // Zelda3 labels
358
359 // ASM hack integration manifest (loaded from hack_manifest_file)
361
362 // Optional z3dk project configuration discovered from z3dk.toml.
364
365 // Build and deployment
366 std::string build_script;
367 std::string output_folder;
368 std::vector<std::string> build_configurations;
369 std::string build_target;
370 std::string asm_entry_point;
371 std::vector<std::string> asm_sources;
372
373 // Version control integration
374 std::string git_repository;
375 bool track_changes = true;
376 std::string last_build_hash;
378
379 // AI Agent Settings
381 std::string ai_provider =
382 "auto"; // auto, gemini, anthropic, openai, ollama, mock
383 std::string ai_model; // e.g., "gemini-2.5-flash", "llama3:latest"
384 std::string ollama_host = "http://localhost:11434";
385 std::string gemini_api_key; // Optional, can use env var
386 std::string
387 custom_system_prompt; // Path to custom prompt (relative to project)
388 bool use_custom_prompt = false;
389 bool show_reasoning = true;
390 bool verbose = false;
393 float temperature = 0.25f;
394 float top_p = 0.95f;
396 bool stream_responses = false;
397 std::vector<std::string> favorite_models;
398 std::vector<std::string> model_chain;
399 int chain_mode = 0;
405 bool enable_tool_gui = true;
406 bool enable_tool_music = true;
410 std::string builder_blueprint_path; // Saved agent builder configuration
412
413 // ZScream compatibility (for importing existing projects)
414 std::string zscream_project_file; // Path to original .zsproj if importing
415 std::map<std::string, std::string> zscream_mappings; // Field mappings
416
417 // WASM persistence (project + music state in IndexedDB)
423
424 // Unknown sections, unknown keys and comments from the loaded .yaze file,
425 // written back on save (see ProjectFilePassthrough).
427
428 // Bundle resolution
429 // Walk up the path hierarchy to find the first ancestor directory whose
430 // filename ends with ".yazeproj". If `path` itself is a .yazeproj directory,
431 // returns it as-is. Returns an empty string when no bundle root is found.
432 static std::string ResolveBundleRoot(const std::string& path);
433
434 // Methods
435 absl::Status Create(const std::string& project_name,
436 const std::string& base_path);
437 absl::Status Open(const std::string& project_path);
438 // Parse an in-memory native project descriptor as if it lived at
439 // `project_path`. Used by the raw project editor to validate and adopt a
440 // draft before it replaces the active descriptor on disk.
441 absl::Status LoadFromString(const std::string& content,
442 const std::string& project_path);
443 absl::Status Save();
444 // Create a new descriptor without replacing a file that appeared after the
445 // caller's preflight check.
446 absl::Status SaveNew();
447 absl::Status SaveAs(const std::string& new_path);
448 absl::Status ImportZScreamProject(const std::string& zscream_project_path);
449 absl::Status ExportForZScream(const std::string& target_path);
450
451 // Settings management
452 absl::Status LoadAllSettings();
453 absl::Status SaveAllSettings();
454 absl::Status ResetToDefaults();
455
456 // Labels management
457 absl::Status InitializeEmbeddedLabels(
458 const std::unordered_map<std::string,
459 std::unordered_map<std::string, std::string>>&
460 labels); // Load all default Zelda3 labels
461 std::string GetLabel(const std::string& resource_type, int id,
462 const std::string& default_value = "") const;
463
469 absl::Status ImportLabelsFromZScream(const std::string& filepath);
470
476 absl::Status ImportLabelsFromZScreamContent(const std::string& content);
477
482
483 // Validation and integrity
484 absl::Status Validate() const;
485 std::vector<std::string> GetMissingFiles() const;
486 absl::Status RepairProject();
487
488 // Utilities
489 // Normalize filesystem paths to absolute paths based on the project file
490 // location. This avoids relying on the process working directory when
491 // opening ROMs/projects (important for iOS and portable bundles).
493 std::string GetDisplayName() const;
494 std::string GetRelativePath(const std::string& absolute_path) const;
495 std::string GetAbsolutePath(const std::string& relative_path) const;
496 // [atlas] annotations / symbols resolved against the project file.
497 std::vector<std::string> AtlasAnnotationPaths() const;
498 std::string AtlasSymbolsPath() const;
499 // [planning] file resolved against the project file; empty when unset.
500 std::string PlanningFilePath() const;
501 bool IsEmpty() const;
502 std::string MakeStorageKey(absl::string_view suffix) const;
503
504 // Project state
505 bool project_opened() const { return !name.empty() && !filepath.empty(); }
506
507 // Hack manifest (ASM integration) reload hook (safe no-op if unset).
508 void ReloadHackManifest();
509 void ReloadZ3dkSettings();
510 bool HasZ3dkConfig() const { return z3dk_settings.loaded; }
511 std::string GetZ3dkArtifactPath(absl::string_view artifact_name) const;
512
513 private:
514 absl::StatusOr<std::string> SerializeToString() const;
515 absl::Status ParseFromString(const std::string& content);
516 absl::Status LoadFromYazeFormat(const std::string& project_path);
517 absl::Status SaveToYazeFormat(bool replace_existing = true);
518 absl::Status ImportFromZScreamFormat(const std::string& project_path);
519
520#ifdef YAZE_ENABLE_JSON_PROJECT_FORMAT
521 absl::Status LoadFromJsonFormat(const std::string& project_path);
522 absl::Status SaveToJsonFormat();
523#endif
524
525 void InitializeDefaults();
526 void TryLoadZ3dkConfig();
527 void TryLoadHackManifest();
528 std::string GenerateProjectId() const;
529};
530
536 public:
537 // Project templates
539 std::string name;
540 std::string description;
541 std::string icon;
543 };
544
545 static std::vector<ProjectTemplate> GetProjectTemplates();
546 static absl::StatusOr<YazeProject> CreateFromTemplate(
547 const std::string& template_name, const std::string& project_name,
548 const std::string& base_path);
549
550 // Project discovery and management
551 static std::vector<std::string> FindProjectsInDirectory(
552 const std::string& directory);
553 static absl::Status BackupProject(const YazeProject& project);
554 static absl::Status RestoreProject(const std::string& backup_path);
555
556 // Format conversion utilities
557 static absl::Status ConvertProject(const std::string& source_path,
558 const std::string& target_path,
559 ProjectFormat target_format);
560
561 // Validation and repair
562 static absl::Status ValidateProjectStructure(const YazeProject& project);
563 static std::vector<std::string> GetRecommendedFixesForProject(
564 const YazeProject& project);
565};
566
567// Compatibility - ResourceLabelManager (still used by ROM class)
569 bool LoadLabels(const std::string& filename);
570 bool SaveLabels();
571 void DisplayLabels(bool* p_open);
572 void EditLabel(const std::string& type, const std::string& key,
573 const std::string& newValue);
574 void SelectableLabelWithNameEdit(bool selected, const std::string& type,
575 const std::string& key,
576 const std::string& defaultValue);
577 std::string GetLabel(const std::string& type, const std::string& key);
578 std::string CreateOrGetLabel(const std::string& type, const std::string& key,
579 const std::string& defaultValue);
580
581 bool labels_loaded_ = false;
582 std::string filename_;
584 std::string key_name;
586 };
587
588 std::unordered_map<std::string, std::unordered_map<std::string, std::string>>
590};
591
592// Compatibility - RecentFilesManager
593const std::string kRecentFilesFilename = "recent_files.txt";
594
596 public:
597 // Singleton pattern - get the global instance
599 static RecentFilesManager instance;
600 return instance;
601 }
602
603 // Delete copy constructor and assignment operator
606
607 void AddFile(const std::string& file_path) {
608 // Add a file to the list, avoiding duplicates
609 // Move to front if already exists (MRU - Most Recently Used)
610 auto it = std::find(recent_files_.begin(), recent_files_.end(), file_path);
611 if (it != recent_files_.end()) {
612 recent_files_.erase(it);
613 }
614 recent_files_.insert(recent_files_.begin(), file_path);
615
616 // Limit to 20 most recent files
617 if (recent_files_.size() > 20) {
618 recent_files_.resize(20);
619 }
621 }
622
623 void RemoveFile(const std::string& file_path) {
624 auto it = std::find(recent_files_.begin(), recent_files_.end(), file_path);
625 if (it != recent_files_.end()) {
626 recent_files_.erase(it);
628 }
629 }
630
631 void Save();
632
633 void Load();
634
635 const std::vector<std::string>& GetRecentFiles() const {
636 return recent_files_;
637 }
638
639 void Clear() {
640 recent_files_.clear();
642 }
643
645 [[nodiscard]] std::uint64_t GetGeneration() const { return generation_; }
646
647 private:
649 Load(); // Load on construction
650 }
651
652 std::string GetFilePath() const;
653
655
656 std::vector<std::string> recent_files_;
657 std::uint64_t generation_ = 0;
658};
659
660} // namespace project
661} // namespace yaze
662
663#endif // YAZE_CORE_PROJECT_H
Loads and queries the hack manifest JSON for yaze-ASM integration.
Enhanced project management with templates and validation.
Definition project.h:535
static std::vector< std::string > FindProjectsInDirectory(const std::string &directory)
Definition project.cc:2721
static absl::Status ValidateProjectStructure(const YazeProject &project)
Definition project.cc:2784
static absl::StatusOr< YazeProject > CreateFromTemplate(const std::string &template_name, const std::string &project_name, const std::string &base_path)
Definition project.cc:2679
static std::vector< std::string > GetRecommendedFixesForProject(const YazeProject &project)
Definition project.cc:2789
static std::vector< ProjectTemplate > GetProjectTemplates()
Definition project.cc:2532
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)
Definition project.cc:2751
void RemoveFile(const std::string &file_path)
Definition project.h:623
std::string GetFilePath() const
Definition project.cc:3584
void AddFile(const std::string &file_path)
Definition project.h:607
static RecentFilesManager & GetInstance()
Definition project.h:598
std::uint64_t GetGeneration() const
Bumps when recent file list changes (add/remove/clear/load).
Definition project.h:645
const std::vector< std::string > & GetRecentFiles() const
Definition project.h:635
RecentFilesManager(const RecentFilesManager &)=delete
std::vector< std::string > recent_files_
Definition project.h:656
RecentFilesManager & operator=(const RecentFilesManager &)=delete
std::string RomRoleToString(RomRole role)
Definition project.cc:396
absl::Status WriteProjectFileAtomically(absl::string_view target_path, absl::string_view contents, bool replace_existing)
Definition project.cc:387
RomRole ParseRomRole(absl::string_view value)
Definition project.cc:410
const std::string kRecentFilesFilename
Definition project.h:593
ProjectFormat
Supported project file formats.
Definition project.h:28
RomWritePolicy ParseRomWritePolicy(absl::string_view value)
Definition project.cc:436
std::string RomWritePolicyToString(RomWritePolicy policy)
Definition project.cc:424
Atlas map views ([atlas]).
Definition project.h:134
std::vector< std::string > annotations
Definition project.h:137
bool operator==(const AtlasSettings &other) const
Definition project.h:153
Dungeon overlay configuration (per-project).
Definition project.h:94
std::vector< uint16_t > track_object_ids
Definition project.h:101
std::vector< uint16_t > minecart_sprite_ids
Definition project.h:102
std::vector< uint16_t > track_stop_tiles
Definition project.h:97
std::vector< uint16_t > track_tiles
Definition project.h:96
std::vector< uint16_t > track_switch_tiles
Definition project.h:98
Project rules for graphics sheets ([graphics_sheets]).
Definition project.h:114
std::vector< uint16_t > reserved_sheets
Definition project.h:115
std::map< uint16_t, std::vector< uint16_t > > reserved_blocks
Definition project.h:117
std::vector< uint16_t > flagged_sheets
Definition project.h:116
Planning editor sidecar ([planning]).
Definition project.h:167
bool operator==(const PlanningSettings &other) const
Definition project.h:174
Lines of a .yaze file that this build does not model.
Definition project.h:193
std::vector< Section > sections
Definition project.h:205
Enhanced metadata for project tracking.
Definition project.h:37
std::vector< std::string > tags
Definition project.h:44
std::string CreateOrGetLabel(const std::string &type, const std::string &key, const std::string &defaultValue)
Definition project.cc:2940
std::string GetLabel(const std::string &type, const std::string &key)
Definition project.cc:2927
void EditLabel(const std::string &type, const std::string &key, const std::string &newValue)
Definition project.cc:2909
bool LoadLabels(const std::string &filename)
Definition project.cc:2824
void SelectableLabelWithNameEdit(bool selected, const std::string &type, const std::string &key, const std::string &defaultValue)
Definition project.cc:2915
std::unordered_map< std::string, std::unordered_map< std::string, std::string > > labels_
Definition project.h:589
std::string expected_hash
Definition project.h:224
RomWritePolicy write_policy
Definition project.h:225
Consolidated workspace and UI settings.
Definition project.h:58
std::map< std::string, std::string > custom_keybindings
Definition project.h:85
std::vector< std::string > saved_layouts
Definition project.h:66
std::map< std::string, bool > editor_visibility
Definition project.h:87
std::vector< std::string > recent_files
Definition project.h:86
std::vector< std::string > favorite_models
Definition project.h:397
std::vector< std::string > model_chain
Definition project.h:398
Modern project structure with comprehensive settings consolidation.
Definition project.h:287
std::string rom_backup_folder
Definition project.h:306
std::unordered_map< int, std::vector< std::string > > custom_object_files
Definition project.h:342
YazeProject & operator=(YazeProject &&)=default
absl::Status ResetToDefaults()
Definition project.cc:1892
std::string custom_objects_folder
Definition project.h:327
absl::Status RepairProject()
Definition project.cc:1967
std::string MakeStorageKey(absl::string_view suffix) const
Definition project.cc:746
static std::string ResolveBundleRoot(const std::string &path)
Definition project.cc:511
struct yaze::project::YazeProject::MusicPersistence music_persistence
YazeProject & operator=(const YazeProject &)=default
bool project_opened() const
Definition project.h:505
std::string sprite_catalog_file
Definition project.h:331
absl::StatusOr< std::string > SerializeToString() const
Definition project.cc:995
std::string zscream_project_file
Definition project.h:414
absl::Status ExportForZScream(const std::string &target_path)
Definition project.cc:1859
ProjectMetadata metadata
Definition project.h:299
absl::Status SaveToYazeFormat(bool replace_existing=true)
Definition project.cc:1803
absl::Status ImportZScreamProject(const std::string &zscream_project_path)
Definition project.cc:1836
absl::Status SaveAllSettings()
Definition project.cc:1887
absl::Status LoadFromString(const std::string &content, const std::string &project_path)
Definition project.cc:703
absl::Status ImportLabelsFromZScreamContent(const std::string &content)
Import labels from ZScream format content directly.
Definition project.cc:3048
std::string git_repository
Definition project.h:374
core::HackManifest hack_manifest
Definition project.h:360
void InitializeResourceLabelProvider()
Initialize the global ResourceLabelProvider with this project's labels.
Definition project.cc:3072
absl::Status ParseFromString(const std::string &content)
Definition project.cc:1365
std::string cutscene_shots
Definition project.h:318
std::vector< std::string > additional_roms
Definition project.h:307
bool HasZ3dkConfig() const
Definition project.h:510
std::string terrain_catalog_file
Definition project.h:336
std::string patches_folder
Definition project.h:313
absl::Status LoadFromYazeFormat(const std::string &project_path)
Definition project.cc:1782
std::unordered_map< std::string, std::unordered_map< std::string, std::string > > resource_labels
Definition project.h:353
std::vector< std::string > AtlasAnnotationPaths() const
Definition project.cc:2089
std::string GenerateProjectId() const
Definition project.cc:2523
absl::Status Create(const std::string &project_name, const std::string &base_path)
Definition project.cc:458
std::string assets_folder
Definition project.h:312
GraphicsSheetSettings graphics_sheets
Definition project.h:348
std::string AtlasSymbolsPath() const
Definition project.cc:2098
YazeProject(const YazeProject &)=default
absl::Status LoadAllSettings()
Definition project.cc:1881
std::string labels_filename
Definition project.h:314
std::vector< std::string > asm_sources
Definition project.h:371
std::string hack_manifest_file
Definition project.h:329
std::string GetDisplayName() const
Definition project.cc:2001
PlanningSettings planning
Definition project.h:350
std::string PlanningFilePath() const
Definition project.cc:2102
std::vector< std::string > GetMissingFiles() const
Definition project.cc:1942
WorkspaceSettings workspace_settings
Definition project.h:346
std::string GetZ3dkArtifactPath(absl::string_view artifact_name) const
Definition project.cc:2132
std::string output_folder
Definition project.h:367
std::string asm_entry_point
Definition project.h:370
std::string GetRelativePath(const std::string &absolute_path) const
Definition project.cc:2008
std::vector< SpriteAssetBinding > sprite_assets
Definition project.h:333
absl::Status InitializeEmbeddedLabels(const std::unordered_map< std::string, std::unordered_map< std::string, std::string > > &labels)
Definition project.cc:2955
ProjectFilePassthrough file_passthrough
Definition project.h:426
absl::Status SaveAs(const std::string &new_path)
Definition project.cc:734
absl::Status SaveNew()
Definition project.cc:699
struct yaze::project::YazeProject::AgentSettings agent_settings
std::string custom_collision_json
Definition project.h:325
DungeonOverlaySettings dungeon_overlay
Definition project.h:347
std::string palette_catalog_file
Definition project.h:339
absl::Status ImportFromZScreamFormat(const std::string &project_path)
Definition project.cc:2110
std::string GetAbsolutePath(const std::string &relative_path) const
Definition project.cc:2028
std::string overworld_graphics_preview
Definition project.h:320
std::string GetLabel(const std::string &resource_type, int id, const std::string &default_value="") const
Definition project.cc:3013
std::string sprite_source_root
Definition project.h:332
absl::Status Open(const std::string &project_path)
Definition project.cc:537
absl::Status ImportLabelsFromZScream(const std::string &filepath)
Import labels from a ZScream DefaultNames.txt file.
Definition project.cc:3028
YazeProject(YazeProject &&)=default
std::string last_build_hash
Definition project.h:376
std::map< std::string, std::string > zscream_mappings
Definition project.h:415
std::string dungeon_tile_patterns
Definition project.h:322
absl::Status Validate() const
Definition project.cc:1897
core::FeatureFlags::Flags feature_flags
Definition project.h:345
std::vector< std::string > build_configurations
Definition project.h:368
core::RomAddressOverrides rom_address_overrides
Definition project.h:351
std::string symbols_filename
Definition project.h:315
Z3dkSettings z3dk_settings
Definition project.h:363
std::vector< std::string > include_paths
Definition project.h:246
std::string std_includes_path
Definition project.h:250
std::vector< std::string > main_files
Definition project.h:249
std::vector< std::string > emits
Definition project.h:248
std::vector< std::pair< std::string, std::string > > defines
Definition project.h:247
Z3dkArtifactPaths artifact_paths
Definition project.h:267
std::optional< bool > lsp_log_enabled
Definition project.h:257
std::vector< Z3dkMemoryRange > prohibited_memory_ranges
Definition project.h:256
std::string std_defines_path
Definition project.h:251