summaryrefslogtreecommitdiff
path: root/tools/msgenc
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-08-07 18:15:57 +0200
committerGitHub <noreply@github.com>2020-08-07 18:15:57 +0200
commit8c3282cded0a1f6a54160e7166bfea23ec31da7e (patch)
tree4773d2f08e7c7207a884ac2bd6c0e79cb3cd5835 /tools/msgenc
parent14655718ad3fa1ea0ce481b599943b3480ad9e3e (diff)
parent20573e3d384f73f63836864a0c6c9b0069ee9e9d (diff)
Merge pull request #259 from PikalaxALT/pikalax_work
Refactor message command syntax; decomp string16 funcs
Diffstat (limited to 'tools/msgenc')
-rw-r--r--tools/msgenc/msgenc.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/tools/msgenc/msgenc.cpp b/tools/msgenc/msgenc.cpp
index e28232a6..24bcda8d 100644
--- a/tools/msgenc/msgenc.cpp
+++ b/tools/msgenc/msgenc.cpp
@@ -99,16 +99,29 @@ void encode_messages() {
size_t k = message.find('}', j);
string enclosed = message.substr(j + 1, k - j - 1);
j = k;
- if (enclosed.find("STRVAR ") == 0) {
- enclosed = enclosed.substr(7);
+ size_t pos = enclosed.find(' ');
+ string command = enclosed.substr(0, pos);
+ enclosed = enclosed.substr(pos + 1);
+ uint16_t command_i = charmap[command];
+ if (command_i != 0 || command == "STRVAR") {
encoded += enc_short(0xFFFE, seed);
+ vector<uint16_t> args;
+ if (command_i != 0) {
+ args.push_back(command_i);
+ }
do {
k = enclosed.find(',');
string num = enclosed.substr(0, k);
uint16_t num_i = stoi(num);
- encoded += enc_short(num_i, seed);
+ args.push_back(num_i);
enclosed = enclosed.substr(k + 1);
} while (k++ != string::npos);
+ encoded += enc_short(args[0], seed);
+ args.erase(args.begin());
+ encoded += enc_short(args.size(), seed);
+ for (auto num_i : args) {
+ encoded += enc_short(num_i, seed);
+ }
} else {
encoded += enc_short(stoi(enclosed, nullptr, 16), seed);
}