@@ -268,6 +268,9 @@ void SaveSystem::CollectPlayerState()
268268 gameState_.playerHasBlanket = scene->player ? scene->player ->HasBlanket () : false ;
269269 gameState_.playerHasSlingshot = scene->player ? scene->player ->HasSlingshot () : false ;
270270 gameState_.playerHasStuffedAnimal = scene->player ? scene->player ->HasStuffedAnimal () : false ;
271+ for (int i = 0 ; i < 3 ; ++i) {
272+ gameState_.hasMemoryFragment [i] = scene->player ? scene->player ->HasMemoryFragment (i) : false ;
273+ }
271274
272275 if (pendingCheckpointPositionOverride_)
273276 {
@@ -349,6 +352,10 @@ void SaveSystem::ApplyPlayerState()
349352 scene->player ->SetHasBlanket (gameState_.playerHasBlanket );
350353 scene->player ->SetHasSlingshot (gameState_.playerHasSlingshot );
351354 scene->player ->SetHasStuffedAnimal (gameState_.playerHasStuffedAnimal );
355+ for (int i = 0 ; i < 3 ; ++i) {
356+ scene->player ->SetMemoryFragment (i, gameState_.hasMemoryFragment [i]);
357+ scene->player ->SetMemoryFragmentNew (i, false );
358+ }
352359 scene->player ->Revive ();
353360 scene->ResetHealthUI (scene->player ->health );
354361 }
@@ -503,6 +510,10 @@ bool SaveSystem::WriteXML(const std::string& filename)
503510 stateNode.append_attribute (" hasBlanket" ) = gameState_.playerHasBlanket ;
504511 stateNode.append_attribute (" hasSlingshot" ) = gameState_.playerHasSlingshot ;
505512 stateNode.append_attribute (" hasStuffedAnimal" ) = gameState_.playerHasStuffedAnimal ;
513+ for (int i = 0 ; i < 3 ; ++i) {
514+ std::string attrName = " hasMemoryFragment" + std::to_string (i);
515+ stateNode.append_attribute (attrName.c_str ()) = gameState_.hasMemoryFragment [i];
516+ }
506517
507518 // Entities node (placeholder for future)
508519 pugi::xml_node entitiesNode = root.append_child (" entities" );
@@ -577,6 +588,10 @@ bool SaveSystem::ReadXML(const std::string& filename)
577588 gameState_.playerHasBlanket = stateNode.attribute (" hasBlanket" ).as_bool (false );
578589 gameState_.playerHasSlingshot = stateNode.attribute (" hasSlingshot" ).as_bool (false );
579590 gameState_.playerHasStuffedAnimal = stateNode.attribute (" hasStuffedAnimal" ).as_bool (false );
591+ for (int i = 0 ; i < 3 ; ++i) {
592+ std::string attrName = " hasMemoryFragment" + std::to_string (i);
593+ gameState_.hasMemoryFragment [i] = stateNode.attribute (attrName.c_str ()).as_bool (false );
594+ }
580595 }
581596 }
582597
0 commit comments