fix Word Select mapping across versions

This commit is contained in:
Martin Michelsen
2023-10-20 16:19:03 -07:00
parent 6933a4338b
commit bf346d3f95
12 changed files with 2300 additions and 14 deletions
+37
View File
@@ -0,0 +1,37 @@
#pragma once
#include <inttypes.h>
#include <phosg/JSON.hh>
#include <string>
#include <vector>
#include "CommandFormats.hh"
#include "QuestScript.hh"
class WordSelectTable {
public:
explicit WordSelectTable(const JSON& json);
WordSelectMessage translate(
const WordSelectMessage& msg,
QuestScriptVersion from_version,
QuestScriptVersion to_version) const;
private:
struct Token {
uint16_t dc_value;
uint16_t pc_value;
uint16_t gc_value;
uint16_t ep3_value;
uint16_t bb_value;
uint16_t value_for_version(QuestScriptVersion version) const;
};
std::vector<size_t> dc_index;
std::vector<size_t> pc_index;
std::vector<size_t> gc_index;
std::vector<size_t> ep3_index;
std::vector<size_t> bb_index;
std::vector<Token> tokens;
};