mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-03 09:23:37 +00:00
WINTERMUTE: Use simple achievements API
This commit is contained in:
parent
4d582218a9
commit
4bcf76dd9e
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -46,8 +46,6 @@ public:
|
||||
|
||||
private:
|
||||
void init();
|
||||
|
||||
Common::AchievementsInfo _achievementsInfo;
|
||||
};
|
||||
|
||||
} // End of namespace Wintermute
|
||||
|
@ -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;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
Loading…
x
Reference in New Issue
Block a user