summaryrefslogtreecommitdiff
path: root/tools/msgenc/MessagesDecoder.h
blob: 98c2383fe17714ab2fbac41adb5103e98f298d98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifndef GUARD_MESSAGESDECODER_H
#define GUARD_MESSAGESDECODER_H


#include "MessagesConverter.h"

enum StrConvMode {
    STR_CONV_MODE_LEFT_ALIGN = 0,
    STR_CONV_MODE_RIGHT_ALIGN,
    STR_CONV_MODE_LEADING_ZEROS
};

class MessagesDecoder : public MessagesConverter
{
    map <uint16_t, string> cmdmap;
    map <uint16_t, string> charmap;
    set<uint16_t> strvar_codes;

    void ReadMessagesFromBin(string& filename);
    void WriteMessagesToText(string& filename);
    template <typename T> void WriteBinaryFile(string& filename, T& data);
    static u16string DecodeTrainerNameMessage(u16string const &message);
    string DecodeMessage(u16string& message, int& i);
    void CharmapRegisterCharacter(string& code, uint16_t value) override;
    void CmdmapRegisterCommand(string& command, uint16_t value) override;

public:
    MessagesDecoder(string &_textfilename, int _key, string &_charmapfilename, string &_binfilename) : MessagesConverter(CONV_DECODE, _textfilename, _key, _charmapfilename, _binfilename) {}
    void ReadInput() override;
    void Convert() override;
    void WriteOutput() override;
    ~MessagesDecoder() override = default;
};


#endif //GUARD_MESSAGESDECODER_H