mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-01 08:05:07 -04:00
80 lines
2.4 KiB
C++
80 lines
2.4 KiB
C++
|
#include "CollisionExporter.h"
|
||
|
#include "Globals.h"
|
||
|
#include "RoomExporter.h"
|
||
|
#include "TextureExporter.h"
|
||
|
|
||
|
enum class ExporterFileMode
|
||
|
{
|
||
|
ModeExample1 = (int)ZFileMode::Custom + 1,
|
||
|
ModeExample2 = (int)ZFileMode::Custom + 2,
|
||
|
ModeExample3 = (int)ZFileMode::Custom + 3,
|
||
|
};
|
||
|
|
||
|
static void ExporterParseFileMode(const std::string& buildMode, ZFileMode& fileMode)
|
||
|
{
|
||
|
if (buildMode == "me1")
|
||
|
fileMode = (ZFileMode)ExporterFileMode::ModeExample1;
|
||
|
else if (buildMode == "me2")
|
||
|
fileMode = (ZFileMode)ExporterFileMode::ModeExample2;
|
||
|
else if (buildMode == "me3")
|
||
|
fileMode = (ZFileMode)ExporterFileMode::ModeExample3;
|
||
|
}
|
||
|
|
||
|
static void ExporterParseArgs([[maybe_unused]] int argc, char* argv[], int& i)
|
||
|
{
|
||
|
std::string arg = argv[i];
|
||
|
|
||
|
if (arg == "--do-x")
|
||
|
{
|
||
|
}
|
||
|
else if (arg == "--do-y")
|
||
|
{
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static bool ExporterProcessFileMode(ZFileMode fileMode)
|
||
|
{
|
||
|
// Do whatever work is associated with these custom file modes...
|
||
|
// Return true to indicate one of our own file modes is being processed
|
||
|
if (fileMode == (ZFileMode)ExporterFileMode::ModeExample1)
|
||
|
return true;
|
||
|
else if (fileMode == (ZFileMode)ExporterFileMode::ModeExample2)
|
||
|
return true;
|
||
|
else if (fileMode == (ZFileMode)ExporterFileMode::ModeExample3)
|
||
|
return true;
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
static void ExporterFileBegin(ZFile* file)
|
||
|
{
|
||
|
printf("ExporterFileBegin() called on ZFile %s.\n", file->GetName().c_str());
|
||
|
}
|
||
|
|
||
|
static void ExporterFileEnd(ZFile* file)
|
||
|
{
|
||
|
printf("ExporterFileEnd() called on ZFile %s.\n", file->GetName().c_str());
|
||
|
}
|
||
|
|
||
|
static void ImportExporters()
|
||
|
{
|
||
|
// In this example we set up a new exporter called "EXAMPLE".
|
||
|
// By running ZAPD with the argument -se EXAMPLE, we tell it that we want to use this exporter
|
||
|
// for our resources.
|
||
|
ExporterSet* exporterSet = new ExporterSet();
|
||
|
exporterSet->processFileModeFunc = ExporterProcessFileMode;
|
||
|
exporterSet->parseFileModeFunc = ExporterParseFileMode;
|
||
|
exporterSet->parseArgsFunc = ExporterParseArgs;
|
||
|
exporterSet->beginFileFunc = ExporterFileBegin;
|
||
|
exporterSet->endFileFunc = ExporterFileEnd;
|
||
|
exporterSet->exporters[ZResourceType::Texture] = new ExporterExample_Texture();
|
||
|
exporterSet->exporters[ZResourceType::Room] = new ExporterExample_Room();
|
||
|
exporterSet->exporters[ZResourceType::CollisionHeader] = new ExporterExample_Collision();
|
||
|
|
||
|
Globals::AddExporter("EXAMPLE", exporterSet);
|
||
|
}
|
||
|
|
||
|
// When ZAPD starts up, it will automatically call the below function, which in turn sets up our
|
||
|
// exporters.
|
||
|
REGISTER_EXPORTER(ImportExporters);
|