[Scummvm-git-logs] scummvm master -> cf6c790c31eddac745e48837054c55007fe367eb
lolbot-iichan
lolbot_iichan at mail.ru
Sat May 29 19:40:08 UTC 2021
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
65a8943624 ACHIEVEMENTS: add average rate statistics API
12bfe5de04 AGS: Use AchMan for int statistics
cf6c790c31 AGS: Use AchMan for float statistics
Commit: 65a8943624d0af79bf2b23818387770cb546b97a
https://github.com/scummvm/scummvm/commit/65a8943624d0af79bf2b23818387770cb546b97a
Author: lb_ii (lolbot_iichan at mail.ru)
Date: 2021-05-29T22:40:05+03:00
Commit Message:
ACHIEVEMENTS: add average rate statistics API
Changed paths:
common/achievements.cpp
common/achievements.h
diff --git a/common/achievements.cpp b/common/achievements.cpp
index b44dfaa06b..19f1045a40 100644
--- a/common/achievements.cpp
+++ b/common/achievements.cpp
@@ -137,28 +137,66 @@ bool AchievementsManager::clearAchievement(const String &id) {
}
-bool AchievementsManager::setStatFloat(const String &id, float value) {
+bool AchievementsManager::setStatFloatEx(const String &id, float value, const String §ion) {
if (!isReady()) {
return false;
}
String tmp = Common::String::format("%8.8f", value);
- _iniFile->setKey(id, "statistics", tmp);
+ _iniFile->setKey(id, section, tmp);
_iniFile->saveToSaveFile(_iniFileName);
return 0;
}
-float AchievementsManager::getStatFloat(const String &id) {
+float AchievementsManager::getStatFloatEx(const String &id, const String §ion) {
if (!isReady()) {
return 0.0;
}
String tmp;
- _iniFile->getKey(id, "statistics", tmp);
+ _iniFile->getKey(id, section, tmp);
return (float)atof(tmp.c_str());
}
+
+bool AchievementsManager::setStatFloat(const String &id, float value) {
+ return setStatFloatEx(id, value, "statistics");
+}
+
+
+float AchievementsManager::getStatFloat(const String &id) {
+ return getStatFloatEx(id, "statistics");
+}
+
+
+bool AchievementsManager::updateAverageRateStatFloat(const String &id, float count, float times) {
+ if (!isReady()) {
+ return false;
+ }
+
+ float old_count = getStatFloatEx(id + "_count", "rates");
+ float old_times = getStatFloatEx(id + "_times", "rates");
+
+ setStatFloatEx(id + "_count", old_count + count, "rates");
+ setStatFloatEx(id + "_times", old_times + times, "rates");
+
+ return 0;
+}
+
+
+float AchievementsManager::getAverageRateStatFloat(const String &id) {
+ if (!isReady()) {
+ return 0.0;
+ }
+
+ float count = getStatFloatEx(id + "_count", "rates");
+ float times = getStatFloatEx(id + "_times", "rates");
+
+ return (times != 0) ? (count / times) : 0.0;
+}
+
+
bool AchievementsManager::setStatInt(String const &id, int value) {
if (!isReady()) {
return false;
@@ -199,6 +237,7 @@ bool AchievementsManager::resetAllStats() {
}
_iniFile->removeSection("statistics");
+ _iniFile->removeSection("rates");
_iniFile->saveToSaveFile(_iniFileName);
return 0;
}
diff --git a/common/achievements.h b/common/achievements.h
index a8e4364ae9..4f9543eef5 100644
--- a/common/achievements.h
+++ b/common/achievements.h
@@ -151,6 +151,23 @@ public:
*/
bool setStatFloat(const String &id, float value);
+ /**
+ * Get an average rate statistic (float).
+ * Calcucated by devision the sum of count by the sum of times.
+ *
+ * @param[in] id Internal ID of the achievement.
+ */
+ float getAverageRateStatFloat(const String &id);
+
+ /**
+ * Update an average rate statistic (float).
+ *
+ * @param[in] id Internal ID of the achievement.
+ * @param[in] count Value to which the statistic count is increased.
+ * @param[in] times Value to which the statistic times is increased.
+ */
+ bool updateAverageRateStatFloat(const String &id, float count, float times);
+
/** @} */
/**
@@ -163,6 +180,9 @@ public:
/** @} */
private:
+ float getStatFloatEx(const String &id, const String §ion);
+ bool setStatFloatEx(const String &id, float value, const String §ion);
+
INIFile *_iniFile;
String _iniFileName;
Common::Array<AchievementDescription> _descriptions;
Commit: 12bfe5de043dfdd33045a0503f2440170306cfee
https://github.com/scummvm/scummvm/commit/12bfe5de043dfdd33045a0503f2440170306cfee
Author: lb_ii (lolbot_iichan at mail.ru)
Date: 2021-05-29T22:40:05+03:00
Commit Message:
AGS: Use AchMan for int statistics
Changed paths:
engines/ags/plugins/ags_galaxy_steam/ags_galaxy_steam.cpp
diff --git a/engines/ags/plugins/ags_galaxy_steam/ags_galaxy_steam.cpp b/engines/ags/plugins/ags_galaxy_steam/ags_galaxy_steam.cpp
index 1ff1f2e6c4..a072432ca5 100644
--- a/engines/ags/plugins/ags_galaxy_steam/ags_galaxy_steam.cpp
+++ b/engines/ags/plugins/ags_galaxy_steam/ags_galaxy_steam.cpp
@@ -77,7 +77,8 @@ void AGS2Client::ResetAchievement(ScriptMethodParams ¶ms) {
}
void AGS2Client::GetIntStat(ScriptMethodParams ¶ms) {
- params._result = 0;
+ PARAMS1(char *, id);
+ params._result = AchMan.getStatInt(id);
}
void AGS2Client::GetFloatStat(ScriptMethodParams ¶ms) {
@@ -89,7 +90,8 @@ void AGS2Client::GetAverageRateStat(ScriptMethodParams ¶ms) {
}
void AGS2Client::SetIntStat(ScriptMethodParams ¶ms) {
- params._result = 0;
+ PARAMS2(char *, id, int, value);
+ params._result = AchMan.setStatInt(id, value);
}
void AGS2Client::SetFloatStat(ScriptMethodParams ¶ms) {
Commit: cf6c790c31eddac745e48837054c55007fe367eb
https://github.com/scummvm/scummvm/commit/cf6c790c31eddac745e48837054c55007fe367eb
Author: lb_ii (lolbot_iichan at mail.ru)
Date: 2021-05-29T22:40:05+03:00
Commit Message:
AGS: Use AchMan for float statistics
Changed paths:
engines/ags/plugins/ags_galaxy_steam/ags_galaxy_steam.cpp
engines/ags/plugins/ags_pal_render/pal_render.h
engines/ags/plugins/plugin_base.h
diff --git a/engines/ags/plugins/ags_galaxy_steam/ags_galaxy_steam.cpp b/engines/ags/plugins/ags_galaxy_steam/ags_galaxy_steam.cpp
index a072432ca5..e5c4ff5763 100644
--- a/engines/ags/plugins/ags_galaxy_steam/ags_galaxy_steam.cpp
+++ b/engines/ags/plugins/ags_galaxy_steam/ags_galaxy_steam.cpp
@@ -82,11 +82,13 @@ void AGS2Client::GetIntStat(ScriptMethodParams ¶ms) {
}
void AGS2Client::GetFloatStat(ScriptMethodParams ¶ms) {
- params._result = 0;
+ PARAMS1(char *, id);
+ params._result = PARAM_FROM_FLOAT(AchMan.getStatFloat(id));
}
void AGS2Client::GetAverageRateStat(ScriptMethodParams ¶ms) {
- params._result = 0;
+ PARAMS1(char *, id);
+ params._result = PARAM_FROM_FLOAT(AchMan.getAverageRateStatFloat(id));
}
void AGS2Client::SetIntStat(ScriptMethodParams ¶ms) {
@@ -95,11 +97,13 @@ void AGS2Client::SetIntStat(ScriptMethodParams ¶ms) {
}
void AGS2Client::SetFloatStat(ScriptMethodParams ¶ms) {
- params._result = 0;
+ PARAMS2(char *, id, int32, value);
+ params._result = AchMan.setStatFloat(id, PARAM_TO_FLOAT(value));
}
void AGS2Client::UpdateAverageRateStat(ScriptMethodParams ¶ms) {
- params._result = 0;
+ PARAMS3(char *, id, int32, count, int32, times);
+ params._result = AchMan.updateAverageRateStatFloat(id, PARAM_TO_FLOAT(count), PARAM_TO_FLOAT(times));
}
void AGS2Client::ResetStatsAndAchievements(ScriptMethodParams ¶ms) {
diff --git a/engines/ags/plugins/ags_pal_render/pal_render.h b/engines/ags/plugins/ags_pal_render/pal_render.h
index 5ee805e99d..2c1f70d41b 100644
--- a/engines/ags/plugins/ags_pal_render/pal_render.h
+++ b/engines/ags/plugins/ags_pal_render/pal_render.h
@@ -31,18 +31,6 @@ namespace AGS3 {
namespace Plugins {
namespace AGSPalRender {
-inline float PARAM_TO_FLOAT(int32 xi) {
- float x;
- memcpy(&x, &xi, sizeof(float));
- return x;
-}
-
-inline int32 PARAM_FROM_FLOAT(float x) {
- int32 xi;
- memcpy(&xi, &x, sizeof(float));
- return xi;
-}
-
struct PALSTRUCT {
byte r;
byte b;
diff --git a/engines/ags/plugins/plugin_base.h b/engines/ags/plugins/plugin_base.h
index 8981e79092..babfd2c399 100644
--- a/engines/ags/plugins/plugin_base.h
+++ b/engines/ags/plugins/plugin_base.h
@@ -35,6 +35,18 @@ namespace Plugins {
#define SCRIPT_METHOD(NAME) registerFunction(engine, #NAME, &NAME)
#define SCRIPT_METHOD_EXT(NAME, PROC) registerFunction(engine, #NAME, &(PROC))
+inline float PARAM_TO_FLOAT(int32 xi) {
+ float x;
+ memcpy(&x, &xi, sizeof(float));
+ return x;
+}
+
+inline int32 PARAM_FROM_FLOAT(float x) {
+ int32 xi;
+ memcpy(&xi, &x, sizeof(float));
+ return xi;
+}
+
#define PARAMS1(T1, N1) \
T1 N1 = (T1)params[0]
#define PARAMS2(T1, N1, T2, N2) \
More information about the Scummvm-git-logs
mailing list