#pragma once #include "../BaseFactory.h" namespace MK64 { struct BombKartSpawns { uint16_t waypointIndex; uint16_t startingState; std::string unk_04; float x; float z; float unk10; float unk14; }; struct CourseMetadata { uint32_t id; std::string name; std::string debugName; std::string cup; int32_t cupIndex; std::string courseLength; std::string kartAIBehaviourLUT; std::string kartAIMaximumSeparation; std::string kartAIMinimumSeparation; std::string D_800DCBB4; uint32_t steeringSensitivity; std::vector bombKartSpawns; std::vector pathSizes; std::vector D_0D009418; std::vector D_0D009568; std::vector D_0D0096B8; std::vector D_0D009808; std::vector pathTable; std::vector pathTableUnknown; std::vector skyColors; std::vector skyColors2; }; class MetadataData : public IParsedData { public: std::vector mMetadata; explicit MetadataData(std::vector metadata) : mMetadata(metadata) {} }; class CourseMetadataBinaryExporter : public BaseExporter { ExportResult Export(std::ostream& write, std::shared_ptr data, std::string& entryName, YAML::Node& node, std::string* replacement) override; }; class CourseMetadataCodeExporter : public BaseExporter { ExportResult Export(std::ostream& write, std::shared_ptr data, std::string& entryName, YAML::Node& node, std::string* replacement) override; }; class CourseMetadataFactory : public BaseFactory { public: std::optional> parse(std::vector& buffer, YAML::Node& data) override; std::optional> parse_modding(std::vector& buffer, YAML::Node& data) override { return std::nullopt; } inline std::unordered_map> GetExporters() override { return { REGISTER(Code, CourseMetadataCodeExporter) }; } bool SupportModdedAssets() override { return false; } }; }