WINTERMUTE: Use simple achievements API

This commit is contained in:
lb_ii 2021-05-28 02:23:07 +03:00 committed by lolbot-iichan
parent 4d582218a9
commit 4bcf76dd9e
4 changed files with 6 additions and 46 deletions

View File

@ -32,18 +32,13 @@
namespace Wintermute {
void SetAchievement(const char *id) {
Common::AchievementsInfo info = getAchievementsInfo();
AchMan.setActiveDomain(Common::STEAM_ACHIEVEMENTS, info.appId);
AchMan.setAchievement(id, getAchievementMessage(info, id));
}
void SceneAchievements(const char *sceneFilename) {
for (const AchievementsList *i = achievementsList; i->gameId; i++) {
if (BaseEngine::instance().getGameId() == i->gameId) {
for (const Achievement *it = i->mapping; it->sceneFilename; it++) {
if (strcmp(sceneFilename, it->sceneFilename) == 0) {
SetAchievement(it->id);
AchMan.setActiveDomain(getAchievementsInfo());
AchMan.setAchievement(it->id);
return;
}
}

View File

@ -52,14 +52,7 @@ SXWMEGalaxyAPI::SXWMEGalaxyAPI(BaseGame *inGame, ScStack *stack) : BaseScriptabl
void SXWMEGalaxyAPI::init() {
const MetaEngine *meta = g_engine->getMetaEngine();
const Common::String target = BaseEngine::instance().getGameTargetName();
_achievementsInfo = meta->getAchievementsInfo(target);
if (!_achievementsInfo.appId.empty()) {
AchMan.setActiveDomain(Common::GALAXY_ACHIEVEMENTS, _achievementsInfo.appId);
} else {
warning("Unknown game accessing WMEGalaxyAPI. All achievements will be ignored.");
AchMan.unsetActiveDomain();
}
AchMan.setActiveDomain(meta->getAchievementsInfo(target));
}
@ -96,15 +89,7 @@ bool SXWMEGalaxyAPI::scCallMethod(ScScript *script, ScStack *stack, ScStack *thi
stack->correctParams(1);
const char *id = stack->pop()->getString();
Common::String msg = id;
for (uint32 i = 0; i < _achievementsInfo.descriptions.size(); i++) {
if (strcmp(_achievementsInfo.descriptions[i].id, id) == 0) {
msg = _achievementsInfo.descriptions[i].title;
break;
}
}
stack->pushBool(AchMan.setAchievement(id, msg));
stack->pushBool(AchMan.setAchievement(id));
return STATUS_OK;
}

View File

@ -46,8 +46,6 @@ public:
private:
void init();
Common::AchievementsInfo _achievementsInfo;
};
} // End of namespace Wintermute

View File

@ -49,17 +49,6 @@ Common::AchievementsInfo getAchievementsInfo() {
return meta->getAchievementsInfo(target);
}
//////////////////////////////////////////////////////////////////////////
Common::String getAchievementMessage(const Common::AchievementsInfo &info, const char *id) {
for (uint32 i = 0; i < info.descriptions.size(); i++) {
if (strcmp(info.descriptions[i].id, id) == 0) {
return info.descriptions[i].title;
}
}
return id;
}
//////////////////////////////////////////////////////////////////////////
SXSteamAPI::SXSteamAPI(BaseGame *inGame, ScStack *stack) : BaseScriptable(inGame) {
stack->correctParams(0);
@ -69,13 +58,7 @@ SXSteamAPI::SXSteamAPI(BaseGame *inGame, ScStack *stack) : BaseScriptable(inGame
//////////////////////////////////////////////////////////////////////////
void SXSteamAPI::init() {
_achievementsInfo = getAchievementsInfo();
if (!_achievementsInfo.appId.empty()) {
AchMan.setActiveDomain(Common::STEAM_ACHIEVEMENTS, _achievementsInfo.appId);
} else {
warning("Unknown game accessing SteamAPI. All achievements will be ignored.");
AchMan.unsetActiveDomain();
}
AchMan.setActiveDomain(_achievementsInfo);
}
@ -108,8 +91,7 @@ bool SXSteamAPI::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
else if (strcmp(name, "SetAchievement") == 0) {
stack->correctParams(1);
const char *id = stack->pop()->getString();
Common::String msg = getAchievementMessage(_achievementsInfo, id);
stack->pushBool(AchMan.setAchievement(id, msg));
stack->pushBool(AchMan.setAchievement(id));
return STATUS_OK;
}
//////////////////////////////////////////////////////////////////////////