Torch
Loading...
Searching...
No Matches
BKAssetFactory.h
1#pragma once
2
3#include "factories/BaseFactory.h"
4#include <string>
5#include <types/RawBuffer.h>
6#include <unordered_map>
7#include <vector>
8
9namespace BK64 {
10
25typedef struct BKAssetInfo {
26 uint32_t offset;
27 int16_t compressionFlag;
28 int16_t tFlag;
29 int32_t assetMode;
30 int32_t index;
32
33enum class BKAssetType {
34 Animation, // 0x000 - 0x0FF
35 Binary, // 0x100 - 0x1FF
36 DemoInput, // 0x200 - 0x2CF
37 Dialog, // 0x2D0 - 0x2D0
38 Model, // 0x2D1 - 0x571
39 Sprite, // 0x572 - 0x6FF
40 Map, // 0x700 - 0x7FF
41 Midi, // 0x800 - 0x8FF
42 GruntyQuestion, // 0x900 - 0x9FF
43 QuizQuestion, // 0xA00 - 0xAFF
44};
45
46class BKAssetData : public IParsedData {
47 public:
48 std::vector<BKAssetInfo> mAssetTableInfo;
49 std::unordered_map<uint32_t, std::string> mSymbolMap;
50 std::vector<uint32_t> mEmptyIds;
51
52 BKAssetData(std::vector<BKAssetInfo> assetTableInfo, std::unordered_map<uint32_t, std::string> symbolMap,
53 std::vector<uint32_t> emptyIds)
54 : mAssetTableInfo(std::move(assetTableInfo)), mSymbolMap(std::move(symbolMap)), mEmptyIds(std::move(emptyIds)) {
55 }
56};
57
59 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName,
60 YAML::Node& node, std::string* replacement) override;
61};
62
64 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName,
65 YAML::Node& node, std::string* replacement) override;
66};
67
69 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName,
70 YAML::Node& node, std::string* replacement) override;
71};
72
74 public:
75 std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data) override;
76 inline std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
77 return { REGISTER(Header, BKAssetHeaderExporter) REGISTER(Binary, BKAssetBinaryExporter)
78 REGISTER(Code, BKAssetCodeExporter) };
79 }
80
81 bool HasModdedDependencies() override {
82 return true;
83 }
84
85 bool IsDialogPackRoot() const override {
86 return true;
87 }
88
89 void PreprocessConfig(YAML::Node& cfg, N64::Cartridge* cart) override;
90};
91
92} // namespace BK64
Definition BKAssetFactory.h:63
Definition BKAssetFactory.h:68
Definition BKAssetFactory.h:73
Definition BKAssetFactory.h:58
Definition BaseFactory.h:96
Definition BaseFactory.h:102
Definition BaseFactory.h:88
Definition Cartridge.h:15
Definition BKAssetFactory.h:25