summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Damon <mattdamon@damon.matt>2022-01-21 23:44:41 -0500
committerMatt Damon <mattdamon@damon.matt>2022-01-21 23:44:41 -0500
commit2f079c82bfc6f6b0727c327cf375de83d284db3b (patch)
tree79ae5ff65061ee78ba56c38dab2c919b6cf72c92
parent96d7f8c6c407e4df498c46d4b48db334949b2306 (diff)
Array and text exporter stuff
-rw-r--r--OTRExporter/ArrayExporter.cpp77
-rw-r--r--OTRExporter/Main.cpp2
-rw-r--r--OTRExporter/OTRExporter.vcxproj2
-rw-r--r--OTRExporter/OTRExporter.vcxproj.filters6
-rw-r--r--OTRExporter/TextExporter.cpp23
-rw-r--r--OTRExporter/TextExporter.h12
6 files changed, 92 insertions, 30 deletions
diff --git a/OTRExporter/ArrayExporter.cpp b/OTRExporter/ArrayExporter.cpp
index 0cfbaed..d0d8dc7 100644
--- a/OTRExporter/ArrayExporter.cpp
+++ b/OTRExporter/ArrayExporter.cpp
@@ -11,37 +11,54 @@ void OTRExporter_Array::Save(ZResource* res, fs::path outPath, BinaryWriter* wri
for (int i = 0; i < arr->arrayCnt; i++)
{
- ZScalar* scal = (ZScalar*)arr->resList[i];
-
- writer->Write((uint32_t)scal->scalarType);
-
- switch (scal->scalarType)
+ if (arr->resList[i]->GetResourceType() == ZResourceType::Vertex)
+ {
+ ZVtx* vtx = (ZVtx*)arr->resList[i];
+ writer->Write(vtx->x);
+ writer->Write(vtx->y);
+ writer->Write(vtx->z);
+ writer->Write(vtx->flag);
+ writer->Write(vtx->s);
+ writer->Write(vtx->t);
+ writer->Write(vtx->r);
+ writer->Write(vtx->g);
+ writer->Write(vtx->b);
+ writer->Write(vtx->a);
+ }
+ else
{
- case ZScalarType::ZSCALAR_U8:
- writer->Write(scal->scalarData.u8);
- break;
- case ZScalarType::ZSCALAR_S8:
- writer->Write(scal->scalarData.s8);
- break;
- case ZScalarType::ZSCALAR_U16:
- writer->Write(scal->scalarData.u16);
- break;
- case ZScalarType::ZSCALAR_S16:
- writer->Write(scal->scalarData.s16);
- break;
- case ZScalarType::ZSCALAR_S32:
- writer->Write(scal->scalarData.s32);
- break;
- case ZScalarType::ZSCALAR_U32:
- writer->Write(scal->scalarData.u32);
- break;
- case ZScalarType::ZSCALAR_S64:
- writer->Write(scal->scalarData.s64);
- break;
- case ZScalarType::ZSCALAR_U64:
- writer->Write(scal->scalarData.u64);
- break;
- // OTRTODO: ADD OTHER TYPES
+ ZScalar* scal = (ZScalar*)arr->resList[i];
+
+ writer->Write((uint32_t)scal->scalarType);
+
+ switch (scal->scalarType)
+ {
+ case ZScalarType::ZSCALAR_U8:
+ writer->Write(scal->scalarData.u8);
+ break;
+ case ZScalarType::ZSCALAR_S8:
+ writer->Write(scal->scalarData.s8);
+ break;
+ case ZScalarType::ZSCALAR_U16:
+ writer->Write(scal->scalarData.u16);
+ break;
+ case ZScalarType::ZSCALAR_S16:
+ writer->Write(scal->scalarData.s16);
+ break;
+ case ZScalarType::ZSCALAR_S32:
+ writer->Write(scal->scalarData.s32);
+ break;
+ case ZScalarType::ZSCALAR_U32:
+ writer->Write(scal->scalarData.u32);
+ break;
+ case ZScalarType::ZSCALAR_S64:
+ writer->Write(scal->scalarData.s64);
+ break;
+ case ZScalarType::ZSCALAR_U64:
+ writer->Write(scal->scalarData.u64);
+ break;
+ // OTRTODO: ADD OTHER TYPES
+ }
}
}
diff --git a/OTRExporter/Main.cpp b/OTRExporter/Main.cpp
index fb57dc8..a206b20 100644
--- a/OTRExporter/Main.cpp
+++ b/OTRExporter/Main.cpp
@@ -13,6 +13,7 @@
#include "AnimationExporter.h"
#include "CutsceneExporter.h"
#include "PathExporter.h"
+#include "TextExporter.h"
#include <Globals.h>
#include <Utils/File.h>
#include <Utils/Directory.h>
@@ -184,6 +185,7 @@ static void ImportExporters()
exporterSet->exporters[ZResourceType::Vertex] = new OTRExporter_Vtx();
exporterSet->exporters[ZResourceType::Array] = new OTRExporter_Array();
exporterSet->exporters[ZResourceType::Path] = new OTRExporter_Path();
+ exporterSet->exporters[ZResourceType::Text] = new OTRExporter_Text();
Globals::AddExporter("OTR", exporterSet);
}
diff --git a/OTRExporter/OTRExporter.vcxproj b/OTRExporter/OTRExporter.vcxproj
index 74c6fa6..a3bc066 100644
--- a/OTRExporter/OTRExporter.vcxproj
+++ b/OTRExporter/OTRExporter.vcxproj
@@ -33,6 +33,7 @@
<ClInclude Include="PathExporter.h" />
<ClInclude Include="PlayerAnimationExporter.h" />
<ClInclude Include="RoomExporter.h" />
+ <ClInclude Include="TextExporter.h" />
<ClInclude Include="TextureExporter.h" />
<ClInclude Include="VtxExporter.h" />
<ClInclude Include="z64cutscene.h" />
@@ -52,6 +53,7 @@
<ClCompile Include="PathExporter.cpp" />
<ClCompile Include="PlayerAnimationExporter.cpp" />
<ClCompile Include="RoomExporter.cpp" />
+ <ClCompile Include="TextExporter.cpp" />
<ClCompile Include="TextureExporter.cpp" />
<ClCompile Include="VtxExporter.cpp" />
</ItemGroup>
diff --git a/OTRExporter/OTRExporter.vcxproj.filters b/OTRExporter/OTRExporter.vcxproj.filters
index ed559ee..08a5f46 100644
--- a/OTRExporter/OTRExporter.vcxproj.filters
+++ b/OTRExporter/OTRExporter.vcxproj.filters
@@ -69,6 +69,9 @@
<ClInclude Include="SkeletonLimbExporter.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="TextExporter.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="CollisionExporter.cpp">
@@ -116,5 +119,8 @@
<ClCompile Include="PathExporter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="TextExporter.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/OTRExporter/TextExporter.cpp b/OTRExporter/TextExporter.cpp
new file mode 100644
index 0000000..4c9821f
--- /dev/null
+++ b/OTRExporter/TextExporter.cpp
@@ -0,0 +1,23 @@
+#include "TextExporter.h"
+#include "../ZAPD/ZFile.h"
+
+void OTRExporter_Text::Save(ZResource* res, fs::path outPath, BinaryWriter* writer)
+{
+ ZText* txt = (ZText*)res;
+
+ WriteHeader(txt, outPath, writer, Ship::ResourceType::Text);
+
+ auto start = std::chrono::steady_clock::now();
+
+ //printf("Exporting Texture %s\n", tex->GetName().c_str());
+
+ writer->Write((uint32_t)txt->messages.size());
+
+ for (int i = 0; i < txt->messages.size(); i++)
+ {
+ writer->Write(txt->messages[i].id);
+ writer->Write(txt->messages[i].textboxType);
+ writer->Write(txt->messages[i].textboxYPos);
+ writer->Write(txt->messages[i].msg);
+ }
+}
diff --git a/OTRExporter/TextExporter.h b/OTRExporter/TextExporter.h
new file mode 100644
index 0000000..7ffb5b4
--- /dev/null
+++ b/OTRExporter/TextExporter.h
@@ -0,0 +1,12 @@
+#pragma once
+
+#include "ZResource.h"
+#include "ZText.h"
+#include "Exporter.h"
+#include <Utils/BinaryWriter.h>
+
+class OTRExporter_Text : public OTRExporter
+{
+public:
+ virtual void Save(ZResource* res, fs::path outPath, BinaryWriter* writer) override;
+}; \ No newline at end of file