1 /*****************************************************************************
2  * Copyright (c) 2014-2020 OpenRCT2 developers
3  *
4  * For a complete list of all authors, please refer to contributors.md
5  * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
6  *
7  * OpenRCT2 is licensed under the GNU General Public License version 3.
8  *****************************************************************************/
9 
10 #pragma once
11 
12 #include "../common.h"
13 
14 #include <memory>
15 #include <string>
16 #include <string_view>
17 
18 struct ILanguagePack
19 {
20     virtual ~ILanguagePack() = default;
21 
22     virtual uint16_t GetId() const abstract;
23     virtual uint32_t GetCount() const abstract;
24 
25     virtual void RemoveString(rct_string_id stringId) abstract;
26     virtual void SetString(rct_string_id stringId, const std::string& str) abstract;
27     virtual const utf8* GetString(rct_string_id stringId) const abstract;
28     virtual rct_string_id GetObjectOverrideStringId(std::string_view legacyIdentifier, uint8_t index) abstract;
29     virtual rct_string_id GetScenarioOverrideStringId(const utf8* scenarioFilename, uint8_t index) abstract;
30 };
31 
32 namespace LanguagePackFactory
33 {
34     std::unique_ptr<ILanguagePack> FromFile(uint16_t id, const utf8* path);
35     std::unique_ptr<ILanguagePack> FromText(uint16_t id, const utf8* text);
36 } // namespace LanguagePackFactory
37