feat: Implement embedded labels support for Zelda3 resources in project management

This commit is contained in:
scawful
2025-10-04 01:35:14 -04:00
parent d85974be60
commit 0ff96fac45
6 changed files with 514 additions and 7 deletions

View File

@@ -63,24 +63,31 @@ absl::Status TryLoadProjectAndLabels(Rom& rom) {
if (project_status.ok()) {
std::cout << "📂 Loaded project: " << project.name << "\n";
// Load labels from project
// Initialize embedded labels (all default Zelda3 resource names)
auto labels_status = project.InitializeEmbeddedLabels();
if (labels_status.ok()) {
std::cout << "✅ Embedded labels initialized (all Zelda3 resources available)\n";
}
// Load labels from project (either embedded or external)
if (!project.labels_filename.empty()) {
auto* label_mgr = rom.resource_label();
if (label_mgr && label_mgr->LoadLabels(project.labels_filename)) {
std::cout << "🏷️ Loaded labels from: " << project.labels_filename << "\n";
std::cout << "🏷️ Loaded custom labels from: " << project.labels_filename << "\n";
}
} else if (!project.resource_labels.empty()) {
// Use labels embedded in project
} else if (!project.resource_labels.empty() || project.use_embedded_labels) {
// Use labels embedded in project or default Zelda3 labels
auto* label_mgr = rom.resource_label();
if (label_mgr) {
label_mgr->labels_ = project.resource_labels;
label_mgr->labels_loaded_ = true;
std::cout << "🏷️ Loaded embedded labels from project\n";
std::cout << "🏷️ Using embedded Zelda3 labels (rooms, sprites, entrances, items, etc.)\n";
}
}
} else {
// No project found - that's okay, continue with defaults
std::cout << " No project file found. Tools will use default labels.\n";
// No project found - use embedded defaults anyway
std::cout << " No project file found. Using embedded default Zelda3 labels.\n";
project.InitializeEmbeddedLabels();
}
return absl::OkStatus();