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