Skip to content

Commit ab6ee6c

Browse files
authored
fix modification of active published asset when merging local modifications (#1306)
1 parent 7a360ae commit ab6ee6c

3 files changed

Lines changed: 24 additions & 2 deletions

File tree

src/data/context/GameContext.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,6 @@ void GameContext::InitializeFromAchievementRuntime(const std::map<uint32_t, std:
448448
else
449449
vmAchievement->InitializeFromPublishedAchievement(*pAchievementData, "");
450450

451-
vmAchievement->SetLocalAchievementInfo(*pAchievementData);
452451
vmAchievement->SetSubsetID(pSubset->public_.id);
453452

454453
m_vAssets.Append(std::move(vmAchievement));
@@ -483,7 +482,6 @@ void GameContext::InitializeFromAchievementRuntime(const std::map<uint32_t, std:
483482
else
484483
vmLeaderboard->InitializeFromPublishedLeaderboard(*pLeaderboardData, "");
485484

486-
vmLeaderboard->SetLocalLeaderboardInfo(*pLeaderboardData);
487485
vmLeaderboard->SetSubsetID(pSubset->public_.id);
488486

489487
m_vAssets.Append(std::move(vmLeaderboard));

tests/data/context/GameContext_Tests.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -775,13 +775,17 @@ TEST_CLASS(GameContext_Tests)
775775
"\"Created\":1234567890,\"Modified\":123459999},"
776776
"{\"ID\":7,\"Title\":\"Ach2\",\"Description\":\"Desc2\",\"Flags\":5,"
777777
"\"Points\":15,\"MemAddr\":\"1=1\",\"Author\":\"Auth2\",\"BadgeName\":\"12345\","
778+
"\"Created\":1234567890,\"Modified\":123459999},"
779+
"{\"ID\":9,\"Title\":\"Ach3\",\"Description\":\"Desc3\",\"Flags\":3,"
780+
"\"Points\":5,\"MemAddr\":\"1=1\",\"Author\":\"Auth3\",\"BadgeName\":\"12345\","
778781
"\"Created\":1234567890,\"Modified\":123459999}"
779782
);
780783

781784
game.mockStorage.MockStoredData(ra::services::StorageItemType::UserAchievements, L"1",
782785
"Version\n"
783786
"Game\n"
784787
"7:1=2:Ach2b:Desc2b::::Auth2b:25:1234554321:1234555555:::54321\n"
788+
"9:1=2:Ach3b:Desc3b::::Auth3b:25:1234554321:1234555555:::54321\n"
785789
"0:\"1=1\":\"Ach3\":\"Desc3\"::::Auth3:20:1234511111:1234500000:::555\n"
786790
"0:R:1=1:Ach4:Desc4::::Auth4:10:1234511111:1234500000:::556\n"
787791
);
@@ -811,6 +815,24 @@ TEST_CLASS(GameContext_Tests)
811815
Assert::AreEqual(25, pAch->GetPoints());
812816
Assert::AreEqual(std::string("1=2"), pAch->GetTrigger());
813817

818+
const auto* pTrigger = pAch->GetRuntimeTrigger();
819+
Assert::AreEqual(2U, pTrigger->requirement->conditions->operand2.value.num); // runtime trigger updated
820+
821+
// local achievement data for 9 should be merged with server achievement data
822+
pAch = game.Assets().FindAchievement(9U);
823+
Assert::IsNotNull(pAch);
824+
Ensures(pAch != nullptr);
825+
Assert::AreEqual(std::wstring(L"Ach3b"), pAch->GetName());
826+
Assert::AreEqual(std::wstring(L"Desc3b"), pAch->GetDescription());
827+
Assert::AreEqual(std::wstring(L"Auth3"), pAch->GetAuthor()); // author not merged
828+
Assert::AreEqual(std::wstring(L"54321"), pAch->GetBadge());
829+
Assert::AreEqual(ra::data::models::AssetCategory::Core, pAch->GetCategory()); // category not merged
830+
Assert::AreEqual(25, pAch->GetPoints());
831+
Assert::AreEqual(std::string("1=2"), pAch->GetTrigger());
832+
833+
pTrigger = pAch->GetRuntimeTrigger();
834+
Assert::AreEqual(2U, pTrigger->requirement->conditions->operand2.value.num); // runtime trigger updated
835+
814836
// no server achievement, assign FirstLocalId
815837
pAch = game.Assets().FindAchievement(GameAssets::FirstLocalId);
816838
Assert::IsNotNull(pAch);

tests/services/AchievementRuntime_Tests.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,8 @@ TEST_CLASS(AchievementRuntime_Tests)
693693
const auto* pNewTrigger = pSubset->achievements->trigger;
694694
Assert::AreNotEqual(static_cast<const void*>(pOriginalTrigger), static_cast<const void*>(pNewTrigger));
695695

696+
Assert::AreEqual(2U, pNewTrigger->requirement->conditions->operand2.value.num);
697+
696698
runtime.SyncAssets();
697699

698700
pSubset = runtime.GetClient()->game->subsets;

0 commit comments

Comments
 (0)