mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-04 09:56:30 +00:00
ULTIMA8: Small cleanup for setupGame
This commit is contained in:
parent
5e957d243e
commit
07a113665d
@ -129,16 +129,11 @@ Std::string GameInfo::getPrintDetails() const {
|
||||
if (lang == "") lang = "Unknown";
|
||||
ret += lang;
|
||||
|
||||
if (_type != GAME_PENTAGRAM_MENU) {
|
||||
// version, md5 don't make sense for the pentagram menu
|
||||
|
||||
ret += ", version ";
|
||||
ret += getPrintableVersion();
|
||||
|
||||
ret += ", md5 ";
|
||||
ret += getPrintableMD5();
|
||||
}
|
||||
ret += ", version ";
|
||||
ret += getPrintableVersion();
|
||||
|
||||
ret += ", md5 ";
|
||||
ret += getPrintableMD5();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -39,8 +39,7 @@ struct GameInfo {
|
||||
GAME_UNKNOWN = 0,
|
||||
GAME_U8,
|
||||
GAME_REMORSE,
|
||||
GAME_REGRET,
|
||||
GAME_PENTAGRAM_MENU
|
||||
GAME_REGRET
|
||||
} _type;
|
||||
|
||||
// Usecode coff variant
|
||||
|
@ -363,26 +363,87 @@ Common::Error Ultima8Engine::startup() {
|
||||
}
|
||||
|
||||
bool Ultima8Engine::setupGame() {
|
||||
istring gamename = _gameDescription->desc.gameId;
|
||||
GameInfo *info = new GameInfo;
|
||||
bool detected = getGameInfo(gamename, info);
|
||||
info->_name = _gameDescription->desc.gameId;
|
||||
info->_type = GameInfo::GAME_UNKNOWN;
|
||||
info->version = 0;
|
||||
info->_language = GameInfo::GAMELANG_UNKNOWN;
|
||||
info->_ucOffVariant = GameInfo::GAME_UC_DEFAULT;
|
||||
|
||||
// output detected game info
|
||||
debugN(MM_INFO, "%s: ", gamename.c_str());
|
||||
if (detected) {
|
||||
// add game to games map
|
||||
Std::string details = info->getPrintDetails();
|
||||
debug(MM_INFO, "%s", details.c_str());
|
||||
} else {
|
||||
debug(MM_INFO, "unknown, skipping");
|
||||
if (info->_name == "ultima8")
|
||||
info->_type = GameInfo::GAME_U8;
|
||||
else if (info->_name == "remorse")
|
||||
info->_type = GameInfo::GAME_REMORSE;
|
||||
else if (info->_name == "regret")
|
||||
info->_type = GameInfo::GAME_REGRET;
|
||||
|
||||
if (info->_type == GameInfo::GAME_REMORSE) {
|
||||
switch (_gameDescription->desc.flags & ADGF_USECODE_MASK) {
|
||||
case ADGF_USECODE_DEMO:
|
||||
info->_ucOffVariant = GameInfo::GAME_UC_DEMO;
|
||||
break;
|
||||
case ADGF_USECODE_ORIG:
|
||||
info->_ucOffVariant = GameInfo::GAME_UC_ORIG;
|
||||
break;
|
||||
case ADGF_USECODE_ES:
|
||||
info->_ucOffVariant = GameInfo::GAME_UC_REM_ES;
|
||||
break;
|
||||
case ADGF_USECODE_FR:
|
||||
info->_ucOffVariant = GameInfo::GAME_UC_REM_FR;
|
||||
break;
|
||||
case ADGF_USECODE_JA:
|
||||
info->_ucOffVariant = GameInfo::GAME_UC_REM_JA;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (info->_type == GameInfo::GAME_REGRET) {
|
||||
switch (_gameDescription->desc.flags & ADGF_USECODE_MASK) {
|
||||
case ADGF_USECODE_DEMO:
|
||||
info->_ucOffVariant = GameInfo::GAME_UC_DEMO;
|
||||
break;
|
||||
case ADGF_USECODE_ORIG:
|
||||
info->_ucOffVariant = GameInfo::GAME_UC_ORIG;
|
||||
break;
|
||||
case ADGF_USECODE_DE:
|
||||
info->_ucOffVariant = GameInfo::GAME_UC_REG_DE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (_gameDescription->desc.language) {
|
||||
case Common::EN_ANY:
|
||||
info->_language = GameInfo::GAMELANG_ENGLISH;
|
||||
break;
|
||||
case Common::FR_FRA:
|
||||
info->_language = GameInfo::GAMELANG_FRENCH;
|
||||
break;
|
||||
case Common::DE_DEU:
|
||||
info->_language = GameInfo::GAMELANG_GERMAN;
|
||||
break;
|
||||
case Common::ES_ESP:
|
||||
info->_language = GameInfo::GAMELANG_SPANISH;
|
||||
break;
|
||||
case Common::JA_JPN:
|
||||
info->_language = GameInfo::GAMELANG_JAPANESE;
|
||||
break;
|
||||
default:
|
||||
error("Unknown language");
|
||||
break;
|
||||
}
|
||||
|
||||
if (info->_type == GameInfo::GAME_UNKNOWN) {
|
||||
warning("%s: unknown, skipping", info->_name.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
// output detected game info
|
||||
Std::string details = info->getPrintDetails();
|
||||
debug(MM_INFO, "%s: %s", info->_name.c_str(), details.c_str());
|
||||
|
||||
_gameInfo = info;
|
||||
|
||||
debug(MM_INFO, "Selected game: %s", info->_name.c_str());
|
||||
debug(MM_INFO, "%s", info->getPrintDetails().c_str());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -849,83 +910,6 @@ void Ultima8Engine::handleDelayedEvents() {
|
||||
_mouse->handleDelayedEvents();
|
||||
}
|
||||
|
||||
bool Ultima8Engine::getGameInfo(const istring &game, GameInfo *ginfo) {
|
||||
ginfo->_name = game;
|
||||
ginfo->_type = GameInfo::GAME_UNKNOWN;
|
||||
ginfo->version = 0;
|
||||
ginfo->_language = GameInfo::GAMELANG_UNKNOWN;
|
||||
ginfo->_ucOffVariant = GameInfo::GAME_UC_DEFAULT;
|
||||
|
||||
assert(game == "ultima8" || game == "remorse" || game == "regret");
|
||||
|
||||
if (game == "ultima8")
|
||||
ginfo->_type = GameInfo::GAME_U8;
|
||||
else if (game == "remorse")
|
||||
ginfo->_type = GameInfo::GAME_REMORSE;
|
||||
else if (game == "regret")
|
||||
ginfo->_type = GameInfo::GAME_REGRET;
|
||||
|
||||
if (ginfo->_type == GameInfo::GAME_REMORSE)
|
||||
{
|
||||
switch (_gameDescription->desc.flags & ADGF_USECODE_MASK) {
|
||||
case ADGF_USECODE_DEMO:
|
||||
ginfo->_ucOffVariant = GameInfo::GAME_UC_DEMO;
|
||||
break;
|
||||
case ADGF_USECODE_ORIG:
|
||||
ginfo->_ucOffVariant = GameInfo::GAME_UC_ORIG;
|
||||
break;
|
||||
case ADGF_USECODE_ES:
|
||||
ginfo->_ucOffVariant = GameInfo::GAME_UC_REM_ES;
|
||||
break;
|
||||
case ADGF_USECODE_FR:
|
||||
ginfo->_ucOffVariant = GameInfo::GAME_UC_REM_FR;
|
||||
break;
|
||||
case ADGF_USECODE_JA:
|
||||
ginfo->_ucOffVariant = GameInfo::GAME_UC_REM_JA;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (ginfo->_type == GameInfo::GAME_REGRET) {
|
||||
switch (_gameDescription->desc.flags & ADGF_USECODE_MASK) {
|
||||
case ADGF_USECODE_DEMO:
|
||||
ginfo->_ucOffVariant = GameInfo::GAME_UC_DEMO;
|
||||
break;
|
||||
case ADGF_USECODE_ORIG:
|
||||
ginfo->_ucOffVariant = GameInfo::GAME_UC_ORIG;
|
||||
break;
|
||||
case ADGF_USECODE_DE:
|
||||
ginfo->_ucOffVariant = GameInfo::GAME_UC_REG_DE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (_gameDescription->desc.language) {
|
||||
case Common::EN_ANY:
|
||||
ginfo->_language = GameInfo::GAMELANG_ENGLISH;
|
||||
break;
|
||||
case Common::FR_FRA:
|
||||
ginfo->_language = GameInfo::GAMELANG_FRENCH;
|
||||
break;
|
||||
case Common::DE_DEU:
|
||||
ginfo->_language = GameInfo::GAMELANG_GERMAN;
|
||||
break;
|
||||
case Common::ES_ESP:
|
||||
ginfo->_language = GameInfo::GAMELANG_SPANISH;
|
||||
break;
|
||||
case Common::JA_JPN:
|
||||
ginfo->_language = GameInfo::GAMELANG_JAPANESE;
|
||||
break;
|
||||
default:
|
||||
error("Unknown language");
|
||||
break;
|
||||
}
|
||||
|
||||
return ginfo->_type != GameInfo::GAME_UNKNOWN;
|
||||
}
|
||||
|
||||
void Ultima8Engine::writeSaveInfo(Common::WriteStream *ws) {
|
||||
TimeDate timeInfo;
|
||||
g_system->getTimeAndDate(timeInfo);
|
||||
|
@ -165,12 +165,6 @@ private:
|
||||
|
||||
void handleDelayedEvents();
|
||||
|
||||
//! Fill a GameInfo struct for the give game name
|
||||
//! \param game The id of the game to check (from pentagram.cfg)
|
||||
//! \param gameinfo The GameInfo struct to fill
|
||||
//! \return true if detected all the fields, false if detection failed
|
||||
bool getGameInfo(const istring &game, GameInfo *gameinfo);
|
||||
|
||||
bool pollEvent(Common::Event &event);
|
||||
protected:
|
||||
// Engine APIs
|
||||
|
Loading…
x
Reference in New Issue
Block a user