123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #include "olcPGE_Sprite.h"
- #include "olcPGE_ResourcePack.h"
- #include <iostream>
- #include <string>
-
- void PrintUsage() {
- std::cout << "Usage: packer --list PACK_FILE" << std::endl;
- std::cout << " packer --add PACK_FILE FILE" << std::endl;
- std::cout << " packer --remove PACK_FILE FILE" << std::endl;
- std::cout << " packer --convert PNG_FILE SPR_FILE" << std::endl;
- }
-
- void ListEntries(olc::ResourcePack& pack) {
- auto entries = pack.GetEntries();
- std::cout << "Total entries: " << entries.size() << std::endl;
- for (auto entry: entries) {
- std::cout << entry << std::endl;
- }
- }
-
- int main(int argc, char *argv[])
- {
- std::string packFile;
- std::string action;
-
- if (argc < 3) {
- PrintUsage();
- return -1;
- }
-
- action = argv[1];
- packFile = argv[2];
-
- olc::ResourcePack pack;
- if (action != "--convert") {
- pack.LoadPack(packFile);
- }
-
- if (action == "--list") {
- ListEntries(pack);
- } else if (action == "--add" || action == "--remove") {
- if (argc < 4) {
- PrintUsage();
- return -1;
- }
- for (int i = 3; i < argc; i++) {
- std::string fileName = argv[i];
- if (action == "--add") {
- if (!pack.AddToPack(fileName)) {
- std::cerr << "Could not open file " << fileName << std::endl;
- return -3;
- }
- std::cout << "+ " << fileName << std::endl;
- } else if (action == "--remove") {
- if (!pack.RemoveFromPack(fileName)) {
- std::cerr << "Could not open file " << fileName << std::endl;
- return -3;
- }
- std::cout << "- " << fileName << std::endl;
- }
- }
- std::cout << std::endl;
- ListEntries(pack);
- } else if (action == "--convert") {
- if (argc < 4) {
- PrintUsage();
- return -1;
- }
- olc::Sprite sprite;
- if (sprite.LoadFromFile(packFile) != olc::OK) {
- std::cerr << "Not valid PNG file " << packFile << std::endl;
- return -4;
- }
- std::string sprFile = argv[3];
- if (!sprite.SaveToPGESprFile(sprFile)) {
- std::cerr << "Could not save file " << sprFile << std::endl;
- return -3;
- }
- return 0;
- } else {
- PrintUsage();
- return -1;
- }
-
- if (!pack.SavePack(packFile)) {
- std::cerr << "Could not save file " << packFile << std::endl;
- }
-
- return 0;
- }
|