Torch
Loading...
Searching...
No Matches
DialogFactory.h
1#pragma once
2
3#include <factories/BaseFactory.h>
4#include "factories/bk64/BKHeaderExporter.h"
5
6namespace BK64 {
7
8typedef struct DialogString {
9 uint8_t cmd;
10 std::string str;
12
13// One language's dialog: the bottom text box plus the top one.
14typedef struct DialogLang {
15 std::vector<DialogString> bottom;
16 std::vector<DialogString> top;
18
19class DialogData : public IParsedData {
20 public:
21 // Always set. English on PAL/JP, the lone language on US.
22 std::vector<DialogString> mBottom;
23 std::vector<DialogString> mTop;
24
25 // PAL only: index 0=French, 1=German
26 std::vector<DialogLang> mExtraLangs;
27
28 DialogData(std::vector<DialogString> bottom, std::vector<DialogString> top)
29 : mBottom(std::move(bottom)), mTop(std::move(top)) {
30 }
31
32 DialogData(std::vector<DialogString> bottom, std::vector<DialogString> top, std::vector<DialogLang> extraLangs)
33 : mBottom(std::move(bottom)), mTop(std::move(top)), mExtraLangs(std::move(extraLangs)) {
34 }
35};
36
38 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName,
39 YAML::Node& node, std::string* replacement) override;
40};
41
43 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName,
44 YAML::Node& node, std::string* replacement) override;
45};
46
48 ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName,
49 YAML::Node& node, std::string* replacement) override;
50};
51
52class DialogFactory : public BaseFactory {
53 public:
54 std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data) override;
55 std::optional<std::shared_ptr<IParsedData>> parse_modding(std::vector<uint8_t>& buffer, YAML::Node& data) override;
56 inline std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
57 return { REGISTER(Code, DialogCodeExporter) REGISTER(Header, BKHeaderExporter)
58 REGISTER(Binary, DialogBinaryExporter) REGISTER(Modding, DialogModdingExporter) };
59 }
60 bool SupportModdedAssets() override {
61 return true;
62 }
63};
64} // namespace BK64
Definition BKHeaderExporter.h:8
Definition DialogFactory.h:37
Definition DialogFactory.h:42
Definition DialogFactory.h:52
Definition DialogFactory.h:47
Definition BaseFactory.h:96
Definition BaseFactory.h:102
Definition BaseFactory.h:88
Definition DialogFactory.h:14
Definition DialogFactory.h:8