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