Skip to content

Commit

Permalink
fix: only take screenshot when achievement is successfully added (#2819)
Browse files Browse the repository at this point in the history
Updated the luaPlayerAddAchievement method to capture screenshots only upon successful achievement addition, enhancing the game's responsiveness and resource efficiency. Also standardized the capitalization in log messages for the "Title System" and introduced a new screenshot type, SCREENSHOT_TYPE_GIFTOFLIFE, to support a specific feature called "Gift of Life."
  • Loading branch information
omarcopires authored Aug 19, 2024
1 parent 2c6b196 commit 71dbe1b
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/game/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10591,7 +10591,7 @@ std::map<uint16_t, Achievement> Game::getAchievements() {

void Game::logCyclopediaStats() {
g_logger().info("Loaded {} badges from Badge System", m_badges.size());
g_logger().info("Loaded {} titles from Title system", m_titles.size());
g_logger().info("Loaded {} titles from Title System", m_titles.size());
}

std::unordered_set<Badge> Game::getBadges() {
Expand Down
1 change: 1 addition & 0 deletions src/lua/functions/core/game/lua_enums.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ void LuaEnums::initOthersEnums(lua_State* L) {
registerEnum(L, SCREENSHOT_TYPE_PLAYERATTACKING);
registerEnum(L, SCREENSHOT_TYPE_TREASUREFOUND);
registerEnum(L, SCREENSHOT_TYPE_SKILLUP);
registerEnum(L, SCREENSHOT_TYPE_GIFTOFLIFE);
}

void LuaEnums::initAccountEnums(lua_State* L) {
Expand Down
8 changes: 6 additions & 2 deletions src/lua/functions/creatures/player/player_functions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4224,8 +4224,12 @@ int PlayerFunctions::luaPlayerAddAchievement(lua_State* L) {
achievementId = g_game().getAchievementByName(getString(L, 2)).id;
}

player->sendTakeScreenshot(SCREENSHOT_TYPE_ACHIEVEMENT);
pushBoolean(L, player->achiev()->add(achievementId, getBoolean(L, 3, true)));
bool success = player->achiev()->add(achievementId, getBoolean(L, 3, true));
if (success) {
player->sendTakeScreenshot(SCREENSHOT_TYPE_ACHIEVEMENT);
}

pushBoolean(L, success);
return 1;
}

Expand Down
3 changes: 2 additions & 1 deletion src/utils/utils_definitions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -736,5 +736,6 @@ enum Screenshot_t : uint8_t {
SCREENSHOT_TYPE_PLAYERKILL = 9,
SCREENSHOT_TYPE_PLAYERATTACKING = 10,
SCREENSHOT_TYPE_TREASUREFOUND = 11,
SCREENSHOT_TYPE_SKILLUP = 12
SCREENSHOT_TYPE_SKILLUP = 12,
SCREENSHOT_TYPE_GIFTOFLIFE = 13,
};

0 comments on commit 71dbe1b

Please sign in to comment.