Multiple achievements can now use the same stat as a trigger.
parent
afb32921fc
commit
528120d102
|
@ -78,7 +78,7 @@ build_windows:
|
||||||
- DLL_FILES="$(ls overlay_experimental/System/*.cpp | tr "\n" " ")"; sed "s|overlay_experimental/System/\*.cpp|$DLL_FILES|g" -i *.bat
|
- DLL_FILES="$(ls overlay_experimental/System/*.cpp | tr "\n" " ")"; sed "s|overlay_experimental/System/\*.cpp|$DLL_FILES|g" -i *.bat
|
||||||
- DLL_FILES="$(ls dll/*.proto | tr "\n" " " | sed "s/.proto/.pb.cc/g")"; sed "s|dll/\*.cc|$DLL_FILES|g" -i *.bat
|
- DLL_FILES="$(ls dll/*.proto | tr "\n" " " | sed "s/.proto/.pb.cc/g")"; sed "s|dll/\*.cc|$DLL_FILES|g" -i *.bat
|
||||||
- DLL_FILES="$(ls steamclient_loader/*.cpp | tr "\n" " ")"; sed "s|steamclient_loader/\*.cpp|$DLL_FILES|g" -i *.bat
|
- DLL_FILES="$(ls steamclient_loader/*.cpp | tr "\n" " ")"; sed "s|steamclient_loader/\*.cpp|$DLL_FILES|g" -i *.bat
|
||||||
- sed "s| /MP12 | /MP5 |g" -i *.bat
|
- sed "s| /MP12 | /MP4 |g" -i *.bat
|
||||||
- export WINEDEBUG=-all
|
- export WINEDEBUG=-all
|
||||||
- wine cmd /c build_win_debug_experimental.bat
|
- wine cmd /c build_win_debug_experimental.bat
|
||||||
- mkdir debug_experimental
|
- mkdir debug_experimental
|
||||||
|
|
|
@ -81,7 +81,7 @@ private:
|
||||||
std::map<std::string, int32> stats_cache_int;
|
std::map<std::string, int32> stats_cache_int;
|
||||||
std::map<std::string, float> stats_cache_float;
|
std::map<std::string, float> stats_cache_float;
|
||||||
|
|
||||||
std::map<std::string, achievement_trigger> achievement_stat_trigger;
|
std::map<std::string, std::vector<achievement_trigger>> achievement_stat_trigger;
|
||||||
|
|
||||||
unsigned int find_leaderboard(std::string name)
|
unsigned int find_leaderboard(std::string name)
|
||||||
{
|
{
|
||||||
|
@ -159,7 +159,7 @@ Steam_User_Stats(Settings *settings, Local_Storage *local_storage, class SteamCa
|
||||||
std::string stat_name = ascii_to_lowercase(static_cast<std::string const&>(it["progress"]["value"]["operand1"]));
|
std::string stat_name = ascii_to_lowercase(static_cast<std::string const&>(it["progress"]["value"]["operand1"]));
|
||||||
trig.min_value = static_cast<std::string const&>(it["progress"]["min_val"]);
|
trig.min_value = static_cast<std::string const&>(it["progress"]["min_val"]);
|
||||||
trig.max_value = static_cast<std::string const&>(it["progress"]["max_val"]);
|
trig.max_value = static_cast<std::string const&>(it["progress"]["max_val"]);
|
||||||
achievement_stat_trigger[stat_name] = trig;
|
achievement_stat_trigger[stat_name].push_back(trig);
|
||||||
} catch (...) {}
|
} catch (...) {}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -283,8 +283,10 @@ bool SetStat( const char *pchName, int32 nData )
|
||||||
|
|
||||||
auto stat_trigger = achievement_stat_trigger.find(stat_name);
|
auto stat_trigger = achievement_stat_trigger.find(stat_name);
|
||||||
if (stat_trigger != achievement_stat_trigger.end()) {
|
if (stat_trigger != achievement_stat_trigger.end()) {
|
||||||
if (stat_trigger->second.check_triggered(nData)) {
|
for (auto &t : stat_trigger->second) {
|
||||||
SetAchievement(stat_trigger->second.name.c_str());
|
if (t.check_triggered(nData)) {
|
||||||
|
SetAchievement(t.name.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,8 +312,10 @@ bool SetStat( const char *pchName, float fData )
|
||||||
|
|
||||||
auto stat_trigger = achievement_stat_trigger.find(stat_name);
|
auto stat_trigger = achievement_stat_trigger.find(stat_name);
|
||||||
if (stat_trigger != achievement_stat_trigger.end()) {
|
if (stat_trigger != achievement_stat_trigger.end()) {
|
||||||
if (stat_trigger->second.check_triggered(fData)) {
|
for (auto &t : stat_trigger->second) {
|
||||||
SetAchievement(stat_trigger->second.name.c_str());
|
if (t.check_triggered(fData)) {
|
||||||
|
SetAchievement(t.name.c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue