asset rework

This commit is contained in:
Jorijn van der Graaf 2025-05-23 23:53:15 +02:00
commit df4ee20976
22 changed files with 145 additions and 87 deletions

View file

@ -1,5 +1,5 @@
/*
Crafter.Build
Crafter®.Asset
Copyright (C) 2025 Catcrafts®
Catcrafts.net
@ -35,7 +35,6 @@ int main(int argc, char* argv[]) {
return -1;
}
std::string command = std::string(argv[1]);
if(command == "help") {
@ -59,11 +58,10 @@ int main(int argc, char* argv[]) {
std::cout << "Asset file does not exist" << std::endl;
return -1;
}
Asset asset;
asset.LoadFull(argv[2]);
AssetLoad asset(argv[2]);
std::cout << "<name>\t<type>\t<size>" << std::endl;
for(const AssetEntry& entry : asset.entries) {
std::cout << std::format("{}\t{}\t{}", entry.name, entry.type, entry.data.size()) << std::endl;
std::cout << std::format("{}\t{}\t{}", entry.name, entry.type, entry.lenght) << std::endl;
}
}
} else if(command == "remove") {
@ -78,8 +76,8 @@ int main(int argc, char* argv[]) {
std::cout << "Asset file does not exist" << std::endl;
return -1;
}
Asset asset;
asset.LoadFull(argv[2]);
AssetLoad asset(argv[2]);
if(asset.entries.size() == 0) {
std::cout << "Nothing to remove, asset file empty" << std::endl;
}
@ -87,7 +85,8 @@ int main(int argc, char* argv[]) {
if (it->name == argv[3]) {
asset.entries.erase(it);
fs::remove(argv[2]);
asset.Save(argv[2]);
AssetSave ass2(asset.entries, std::move(asset.LoadAll()));
ass2.Save(argv[2]);
return 0;
}
std::cout << std::format("Entry {} not found", argv[3]) << std::endl;
@ -110,11 +109,6 @@ int main(int argc, char* argv[]) {
std::cout << "Missing argument {entry name}. Run help for help" << std::endl;
return -1;
}
Asset asset;
if(fs::exists(argv[2])) {
asset.LoadFull(argv[2]);
fs::remove(argv[2]);
}
AssetEntry entry;
entry.name = std::string(argv[6]);
entry.type = std::string(argv[4]);
@ -123,11 +117,16 @@ int main(int argc, char* argv[]) {
std::cout << std::format("Unkown serializer {}", argv[5]) << std::endl;
return -1;
} else {
entry.data = pos->second(argv[3]);
}
asset.entries.push_back(entry);
asset.Save(argv[2]);
AssetSave asset;
if(fs::exists(argv[2])) {
AssetLoad assload(argv[2]);
asset = AssetSave(assload.entries, std::move(assload.LoadAll()));
fs::remove(argv[2]);
}
asset.AddEntry(entry.name, entry.type, pos->second(argv[3]));
asset.Save(argv[2]);
}
} else if(command == "extract") {
if(argc == 2) {
std::cout << "Missing argument {file}. Run help for help" << std::endl;
@ -146,8 +145,7 @@ int main(int argc, char* argv[]) {
std::cout << "Asset file does not exist" << std::endl;
return -1;
}
Asset asset;
asset.LoadFull(argv[2]);
AssetLoad asset(argv[2]);
auto pos = extractors.find(argv[4]);
if (pos == extractors.end()) {
std::cout << std::format("Unkown extractor {}", argv[4]) << std::endl;
@ -155,8 +153,8 @@ int main(int argc, char* argv[]) {
} else {
for(const AssetEntry& entry : asset.entries) {
if(entry.name == std::string(argv[3])) {
pos->second(argv[5], entry.data.data());
return 0;
std::vector<char> loaded = asset.Load(entry);
pos->second(argv[5], loaded.data());
}
}
std::cout << std::format("Entry {} not found", argv[3]) << std::endl;
@ -165,18 +163,4 @@ int main(int argc, char* argv[]) {
} else {
std::cout << "Unkown command, use help for help" << std::endl;
}
// Asset test;
// AssetEntry entry;
// entry.name = "Logo";
// entry.type = "Crafter.Graphics.TextureR8B8G8A8";
// //entry.data = serializers.find("PNG:Crafter.Graphics.TextureR8B8G8A8")->second("/home/jorijn/Pictures/3dfortslogo.png");
// test.entries.push_back(entry);
// test.Save("test.cras");
// Asset test2;
// test2.LoadFull("test.cras");
//extractors.find(std::format("{}:PNG", test2.entries[0].type))->second("/home/jorijn/repos/Crafter/Crafter.Asset/test.png", test2.entries[0].data.data());
}
}