Matching Fixes

This commit is contained in:
inspectredc
2025-01-03 11:05:00 -06:00
committed by Lywx
parent 31ab0a91d0
commit fdc2a4164c
2 changed files with 17 additions and 6 deletions
+14 -5
View File
@@ -11,6 +11,7 @@
#define TRACK_SEGMENT_FORM_MASK 0x38000
#define TRACK_SEGMENT_FLAG_CONTINUE 0x40000000
#define FORMAT_HEX(x, w) std::hex << std::setfill('0') << std::setw(w) << x
#define FORMAT_FLOAT(x, w, p) std::dec << std::setfill(' ') << std::fixed << std::setprecision(p) << std::setw(w) << x
uint32_t FZX::CourseData::CalculateChecksum(void) {
@@ -72,11 +73,11 @@ ExportResult FZX::CourseCodeExporter::Export(std::ostream &write, std::shared_pt
write << fourSpaceTab << "0x" << std::hex << std::uppercase << course->CalculateChecksum() << std::dec << ", /* Checksum */\n";
write << fourSpaceTab << (int32_t)course->mFlag << ", /* Flag */\n";
write << fourSpaceTab << "\"" << course->mFileName;
write << fourSpaceTab << "\"" << course->mFileName << std::hex;
for (size_t i = 0; i < 22 - course->mFileName.length(); i++) {
write << "\\0";
write << "\\x" << FORMAT_HEX((uint32_t)(uint8_t)course->mFileNameExtra.at(i), 2);
}
write << "\", /* File Name */\n";
write << std::dec << "\", /* File Name */\n";
write << fourSpaceTab << "{ /* Control Points */\n";
@@ -85,7 +86,7 @@ ExportResult FZX::CourseCodeExporter::Export(std::ostream &write, std::shared_pt
if (i < controlPointCount) {
const ControlPointInfo& controlPointInfo = course->mControlPointInfos.at(i);
Vec3f pos(controlPointInfo.controlPoint.pos.x, controlPointInfo.controlPoint.pos.y, controlPointInfo.controlPoint.pos.z);
write << "{ { " << FORMAT_FLOAT(pos, 6, 1) << "}, ";
write << "{ { " << FORMAT_FLOAT(pos, 6, 4) << "}, ";
write << controlPointInfo.controlPoint.radiusLeft << ", ";
write << controlPointInfo.controlPoint.radiusRight << ", ";
write << "0x" << std::hex << controlPointInfo.controlPoint.trackSegmentInfo << std::dec;
@@ -265,6 +266,9 @@ ExportResult FZX::CourseBinaryExporter::Export(std::ostream &write, std::shared_
writer.Write(course->CalculateChecksum());
writer.Write(course->mFlag);
writer.Write(course->mFileName);
for (const auto extra : course->mFileNameExtra) {
writer.Write(extra);
}
for (const auto& controlPointInfo : course->mControlPointInfos) {
writer.Write(controlPointInfo.controlPoint.pos.x);
writer.Write(controlPointInfo.controlPoint.pos.y);
@@ -307,6 +311,11 @@ std::optional<std::shared_ptr<IParsedData>> FZX::CourseFactory::parse(std::vecto
}
std::string fileName(nameBuffer);
std::vector<int8_t> fileNameExtra;
for (int32_t i = fileName.length(); i < ARRAY_COUNT(nameBuffer); i++) {
fileNameExtra.push_back(nameBuffer[i]);
}
std::vector<ControlPointInfo> controlPointInfos;
for (int8_t i = 0; i < controlPointCount; i++) {
@@ -342,5 +351,5 @@ std::optional<std::shared_ptr<IParsedData>> FZX::CourseFactory::parse(std::vecto
controlPointInfos.push_back(controlPointInfo);
}
return std::make_shared<CourseData>(creatorId, venue, skybox, flag, fileName, controlPointInfos);
return std::make_shared<CourseData>(creatorId, venue, skybox, flag, fileName, fileNameExtra, controlPointInfos);
}
+3 -1
View File
@@ -59,14 +59,16 @@ public:
int8_t mSkybox;
int8_t mFlag;
std::string mFileName;
std::vector<int8_t> mFileNameExtra;
std::vector<ControlPointInfo> mControlPointInfos;
CourseData(int8_t creatorId, int8_t venue, int8_t skybox, int8_t flag, std::string fileName, std::vector<ControlPointInfo> controlPointInfos) :
CourseData(int8_t creatorId, int8_t venue, int8_t skybox, int8_t flag, std::string fileName, std::vector<int8_t> fileNameExtra, std::vector<ControlPointInfo> controlPointInfos) :
mCreatorId(creatorId),
mVenue(venue),
mSkybox(skybox),
mFlag(flag),
mFileName(std::move(fileName)),
mFileNameExtra(std::move(fileNameExtra)),
mControlPointInfos(std::move(controlPointInfos)) {}
uint32_t CalculateChecksum(void);