diff --git a/src/Common/Game/IGame.h b/src/Common/Game/IGame.h index 065e2ff0..2fb4b5c6 100644 --- a/src/Common/Game/IGame.h +++ b/src/Common/Game/IGame.h @@ -42,5 +42,7 @@ public: virtual void AddZone(Zone* zone) = 0; virtual void RemoveZone(Zone* zone) = 0; virtual std::vector GetZones() = 0; - virtual std::vector GetLanguagePrefixes() = 0; + virtual const std::vector& GetLanguagePrefixes() = 0; + + static IGame* GetGameById(GameId gameId); }; diff --git a/src/Common/Game/IW3/GameIW3.cpp b/src/Common/Game/IW3/GameIW3.cpp index 788c9017..ea8b3840 100644 --- a/src/Common/Game/IW3/GameIW3.cpp +++ b/src/Common/Game/IW3/GameIW3.cpp @@ -41,8 +41,8 @@ std::vector GameIW3::GetZones() return m_zones; } -std::vector GameIW3::GetLanguagePrefixes() +const std::vector& GameIW3::GetLanguagePrefixes() { - std::vector prefixes; + static std::vector prefixes; return prefixes; } diff --git a/src/Common/Game/IW3/GameIW3.h b/src/Common/Game/IW3/GameIW3.h index a4f10716..b212834c 100644 --- a/src/Common/Game/IW3/GameIW3.h +++ b/src/Common/Game/IW3/GameIW3.h @@ -10,7 +10,7 @@ public: void AddZone(Zone* zone) override; void RemoveZone(Zone* zone) override; std::vector GetZones() override; - std::vector GetLanguagePrefixes() override; + const std::vector& GetLanguagePrefixes() override; private: std::vector m_zones; diff --git a/src/Common/Game/IW4/GameIW4.cpp b/src/Common/Game/IW4/GameIW4.cpp index beb22d84..7d825b2c 100644 --- a/src/Common/Game/IW4/GameIW4.cpp +++ b/src/Common/Game/IW4/GameIW4.cpp @@ -41,8 +41,8 @@ std::vector GameIW4::GetZones() return m_zones; } -std::vector GameIW4::GetLanguagePrefixes() +const std::vector& GameIW4::GetLanguagePrefixes() { - std::vector prefixes; + static std::vector prefixes; return prefixes; } diff --git a/src/Common/Game/IW4/GameIW4.h b/src/Common/Game/IW4/GameIW4.h index de9cb0b7..fb335bfa 100644 --- a/src/Common/Game/IW4/GameIW4.h +++ b/src/Common/Game/IW4/GameIW4.h @@ -10,7 +10,7 @@ public: void AddZone(Zone* zone) override; void RemoveZone(Zone* zone) override; std::vector GetZones() override; - std::vector GetLanguagePrefixes() override; + const std::vector& GetLanguagePrefixes() override; private: std::vector m_zones; diff --git a/src/Common/Game/IW5/GameIW5.cpp b/src/Common/Game/IW5/GameIW5.cpp index d5c6141c..a82108b5 100644 --- a/src/Common/Game/IW5/GameIW5.cpp +++ b/src/Common/Game/IW5/GameIW5.cpp @@ -41,8 +41,8 @@ std::vector GameIW5::GetZones() return m_zones; } -std::vector GameIW5::GetLanguagePrefixes() +const std::vector& GameIW5::GetLanguagePrefixes() { - std::vector prefixes; + static std::vector prefixes; return prefixes; } diff --git a/src/Common/Game/IW5/GameIW5.h b/src/Common/Game/IW5/GameIW5.h index 9632c657..06c87139 100644 --- a/src/Common/Game/IW5/GameIW5.h +++ b/src/Common/Game/IW5/GameIW5.h @@ -10,7 +10,7 @@ public: void AddZone(Zone* zone) override; void RemoveZone(Zone* zone) override; std::vector GetZones() override; - std::vector GetLanguagePrefixes() override; + const std::vector& GetLanguagePrefixes() override; private: std::vector m_zones; diff --git a/src/Common/Game/T5/GameT5.cpp b/src/Common/Game/T5/GameT5.cpp index 28cd06e2..705f8028 100644 --- a/src/Common/Game/T5/GameT5.cpp +++ b/src/Common/Game/T5/GameT5.cpp @@ -41,23 +41,23 @@ std::vector GameT5::GetZones() return m_zones; } -std::vector GameT5::GetLanguagePrefixes() +const std::vector& GameT5::GetLanguagePrefixes() { - std::vector prefixes; - - prefixes.emplace_back(GameLanguage::LANGUAGE_ENGLISH, "en_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_FRENCH, "fr_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_FRENCH_CAN, "fc_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_GERMAN, "ge_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_AUSTRIAN, "ge_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_ITALIAN, "it_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_SPANISH, "sp_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_BRITISH, "br_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_RUSSIAN, "ru_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_POLISH, "po_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_KOREAN, "ko_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_JAPANESE, "ja_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_CZECH, "cz_"); + static std::vector prefixes{ + {GameLanguage::LANGUAGE_ENGLISH, "en_"}, + {GameLanguage::LANGUAGE_FRENCH, "fr_"}, + {GameLanguage::LANGUAGE_FRENCH_CAN, "fc_"}, + {GameLanguage::LANGUAGE_GERMAN, "ge_"}, + {GameLanguage::LANGUAGE_AUSTRIAN, "ge_"}, + {GameLanguage::LANGUAGE_ITALIAN, "it_"}, + {GameLanguage::LANGUAGE_SPANISH, "sp_"}, + {GameLanguage::LANGUAGE_BRITISH, "br_"}, + {GameLanguage::LANGUAGE_RUSSIAN, "ru_"}, + {GameLanguage::LANGUAGE_POLISH, "po_"}, + {GameLanguage::LANGUAGE_KOREAN, "ko_"}, + {GameLanguage::LANGUAGE_JAPANESE, "ja_"}, + {GameLanguage::LANGUAGE_CZECH, "cz_"}, + }; return prefixes; } diff --git a/src/Common/Game/T5/GameT5.h b/src/Common/Game/T5/GameT5.h index df413e5c..bf392a7e 100644 --- a/src/Common/Game/T5/GameT5.h +++ b/src/Common/Game/T5/GameT5.h @@ -10,7 +10,7 @@ public: void AddZone(Zone* zone) override; void RemoveZone(Zone* zone) override; std::vector GetZones() override; - std::vector GetLanguagePrefixes() override; + const std::vector& GetLanguagePrefixes() override; private: std::vector m_zones; diff --git a/src/Common/Game/T6/GameT6.cpp b/src/Common/Game/T6/GameT6.cpp index 15a9c590..10553342 100644 --- a/src/Common/Game/T6/GameT6.cpp +++ b/src/Common/Game/T6/GameT6.cpp @@ -41,26 +41,26 @@ std::vector GameT6::GetZones() return m_zones; } -std::vector GameT6::GetLanguagePrefixes() +const std::vector& GameT6::GetLanguagePrefixes() { - std::vector prefixes; - - prefixes.emplace_back(GameLanguage::LANGUAGE_ENGLISH, "en_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_FRENCH, "fr_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_FRENCH_CAN, "fc_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_GERMAN, "ge_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_AUSTRIAN, "as_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_ITALIAN, "it_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_SPANISH, "sp_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_BRITISH, "br_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_RUSSIAN, "ru_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_POLISH, "po_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_KOREAN, "ko_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_JAPANESE, "ja_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_CZECH, "cz_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_FULL_JAPANESE, "fj_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_PORTUGUESE, "bp_"); - prefixes.emplace_back(GameLanguage::LANGUAGE_MEXICAN_SPANISH, "ms_"); + static std::vector prefixes{ + {GameLanguage::LANGUAGE_ENGLISH, "en_"}, + {GameLanguage::LANGUAGE_FRENCH, "fr_"}, + {GameLanguage::LANGUAGE_FRENCH_CAN, "fc_"}, + {GameLanguage::LANGUAGE_GERMAN, "ge_"}, + {GameLanguage::LANGUAGE_AUSTRIAN, "as_"}, + {GameLanguage::LANGUAGE_ITALIAN, "it_"}, + {GameLanguage::LANGUAGE_SPANISH, "sp_"}, + {GameLanguage::LANGUAGE_BRITISH, "br_"}, + {GameLanguage::LANGUAGE_RUSSIAN, "ru_"}, + {GameLanguage::LANGUAGE_POLISH, "po_"}, + {GameLanguage::LANGUAGE_KOREAN, "ko_"}, + {GameLanguage::LANGUAGE_JAPANESE, "ja_"}, + {GameLanguage::LANGUAGE_CZECH, "cz_"}, + {GameLanguage::LANGUAGE_FULL_JAPANESE, "fj_"}, + {GameLanguage::LANGUAGE_PORTUGUESE, "bp_"}, + {GameLanguage::LANGUAGE_MEXICAN_SPANISH, "ms_"}, + }; return prefixes; } diff --git a/src/Common/Game/T6/GameT6.h b/src/Common/Game/T6/GameT6.h index ad55f99d..f5bb5441 100644 --- a/src/Common/Game/T6/GameT6.h +++ b/src/Common/Game/T6/GameT6.h @@ -10,7 +10,7 @@ public: void AddZone(Zone* zone) override; void RemoveZone(Zone* zone) override; std::vector GetZones() override; - std::vector GetLanguagePrefixes() override; + const std::vector& GetLanguagePrefixes() override; private: std::vector m_zones;