mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-02 00:42:24 +00:00
TETRAEDGE: Add ability to pick different languages
This commit is contained in:
parent
31aeb928fc
commit
7bbe0f530d
@ -37,4 +37,25 @@ TetraedgeMetaEngineDetection::TetraedgeMetaEngineDetection() : AdvancedMetaEngin
|
||||
_flags = kADFlagMatchFullPaths;
|
||||
}
|
||||
|
||||
|
||||
DetectedGame TetraedgeMetaEngineDetection::toDetectedGame(const ADDetectedGame &adGame, ADDetectedGameExtraInfo *extraInfo) const {
|
||||
DetectedGame game = AdvancedMetaEngineDetection::toDetectedGame(adGame);
|
||||
|
||||
// The AdvancedDetector model only allows specifying a single supported
|
||||
// game language. Both games support multiple languages
|
||||
if (game.gameId == "syberia" || game.gameId == "syberia2") {
|
||||
const Common::Language *language = TetraedgeMetaEngine::getGameLanguages();
|
||||
while (*language != Common::UNK_LANG) {
|
||||
// "ru" only present on syberia 1
|
||||
if (game.gameId == "syberia2" && *language == Common::RU_RUS)
|
||||
continue;
|
||||
game.appendGUIOptions(Common::getGameGUIOptionsDescriptionLanguage(*language));
|
||||
language++;
|
||||
}
|
||||
}
|
||||
|
||||
return game;
|
||||
}
|
||||
|
||||
|
||||
REGISTER_PLUGIN_STATIC(TETRAEDGE_DETECTION, PLUGIN_TYPE_ENGINE_DETECTION, TetraedgeMetaEngineDetection);
|
||||
|
@ -47,6 +47,8 @@ public:
|
||||
TetraedgeMetaEngineDetection();
|
||||
~TetraedgeMetaEngineDetection() override {}
|
||||
|
||||
DetectedGame toDetectedGame(const ADDetectedGame &adGame, ADDetectedGameExtraInfo *extraInfo) const override;
|
||||
|
||||
const char *getEngineName() const override {
|
||||
return "Tetraedge Engine";
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ const ADGameDescription GAME_DESCRIPTIONS[] = {
|
||||
"syberia",
|
||||
nullptr,
|
||||
AD_ENTRY1s("MacOS/Syberia", "d:6951fb8f71fe06f34684564625f73cd8", 10640592),
|
||||
Common::EN_ANY,
|
||||
Common::UNK_LANG,
|
||||
Common::kPlatformMacintosh,
|
||||
ADGF_TESTING,
|
||||
GUIO1(GAMEOPTION_CORRECT_MOVIE_ASPECT)
|
||||
@ -47,7 +47,7 @@ const ADGameDescription GAME_DESCRIPTIONS[] = {
|
||||
"syberia2",
|
||||
nullptr,
|
||||
AD_ENTRY1s("MacOS/Syberia 2", "d:c447586a3cb3d46d6127b467e7fb9a86", 12021136),
|
||||
Common::EN_ANY,
|
||||
Common::UNK_LANG,
|
||||
Common::kPlatformMacintosh,
|
||||
ADGF_TESTING,
|
||||
GUIO1(GAMEOPTION_CORRECT_MOVIE_ASPECT)
|
||||
|
@ -65,6 +65,20 @@ bool TetraedgeMetaEngine::hasFeature(MetaEngineFeature f) const {
|
||||
(f == kSupportsLoadingDuringStartup);
|
||||
}
|
||||
|
||||
/*static*/
|
||||
const Common::Language *TetraedgeMetaEngine::getGameLanguages() {
|
||||
static Common::Language languages[] = {
|
||||
Common::EN_ANY,
|
||||
Common::FR_FRA,
|
||||
Common::DE_DEU,
|
||||
Common::IT_ITA,
|
||||
Common::ES_ESP,
|
||||
Common::RU_RUS,
|
||||
Common::UNK_LANG
|
||||
};
|
||||
return languages;
|
||||
}
|
||||
|
||||
void TetraedgeMetaEngine::getSavegameThumbnail(Graphics::Surface &thumb) {
|
||||
Tetraedge::TetraedgeEngine::getSavegameThumbnail(thumb);
|
||||
}
|
||||
|
@ -43,6 +43,9 @@ public:
|
||||
* Used by e.g. the launcher to determine whether to enable the Load button.
|
||||
*/
|
||||
bool hasFeature(MetaEngineFeature f) const override;
|
||||
|
||||
static const Common::Language *getGameLanguages();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -23,9 +23,12 @@
|
||||
#include "common/fs.h"
|
||||
#include "common/debug.h"
|
||||
#include "common/config-manager.h"
|
||||
#include "common/language.h"
|
||||
|
||||
#include "tetraedge/te/te_core.h"
|
||||
|
||||
#include "tetraedge/tetraedge.h"
|
||||
|
||||
#include "tetraedge/te/te_png.h"
|
||||
#include "tetraedge/te/te_images_sequence.h"
|
||||
#include "tetraedge/te/te_jpeg.h"
|
||||
@ -46,8 +49,14 @@ void TeCore::addLoc(TeILoc *loc) {
|
||||
}
|
||||
|
||||
void TeCore::create() {
|
||||
// TODO: Get language from the game definition. For now just default to en.
|
||||
language("en");
|
||||
const char *langCode = getLanguageCode(g_engine->getGameLanguage());
|
||||
const Common::String confLang = ConfMan.get("language");
|
||||
Common::String useLang = "en";
|
||||
if (langCode)
|
||||
useLang = langCode;
|
||||
if (!confLang.empty())
|
||||
useLang = confLang;
|
||||
language(useLang);
|
||||
_coreNotReady = false;
|
||||
_activityTrackingTimer.alarmSignal().add(this, &TeCore::onActivityTrackingAlarm);
|
||||
warning("TODO: TeCore::create: Finish implementing me.");
|
||||
|
@ -134,6 +134,10 @@ Common::String TetraedgeEngine::getGameId() const {
|
||||
return _gameDescription->gameId;
|
||||
}
|
||||
|
||||
Common::Language TetraedgeEngine::getGameLanguage() const {
|
||||
return _gameDescription->language;
|
||||
}
|
||||
|
||||
bool TetraedgeEngine::canLoadGameStateCurrently() {
|
||||
return _game && _application && !_application->mainMenu().isEntered();
|
||||
}
|
||||
@ -208,6 +212,7 @@ void TetraedgeEngine::registerConfigDefaults() {
|
||||
ConfMan.registerDefault("correct_movie_aspect", true);
|
||||
}
|
||||
|
||||
|
||||
Common::Error TetraedgeEngine::run() {
|
||||
if (getGameId() == "syberia")
|
||||
_gameType = kSyberia;
|
||||
@ -316,4 +321,5 @@ void TetraedgeEngine::getSavegameThumbnail(Graphics::Surface &thumb) {
|
||||
g_engine->getApplication()->getSavegameThumbnail(thumb);
|
||||
}
|
||||
|
||||
|
||||
} // namespace Tetraedge
|
||||
|
@ -86,6 +86,8 @@ public:
|
||||
*/
|
||||
Common::String getGameId() const;
|
||||
|
||||
Common::Language getGameLanguage() const;
|
||||
|
||||
/**
|
||||
* Gets a random number
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user