diff options
author | red031000 <rubenru09@aol.com> | 2020-08-07 18:15:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-07 18:15:57 +0200 |
commit | 8c3282cded0a1f6a54160e7166bfea23ec31da7e (patch) | |
tree | 4773d2f08e7c7207a884ac2bd6c0e79cb3cd5835 /tools/msgenc | |
parent | 14655718ad3fa1ea0ce481b599943b3480ad9e3e (diff) | |
parent | 20573e3d384f73f63836864a0c6c9b0069ee9e9d (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.cpp | 19 |
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); } |