anchor.diff:  end;
   
   
  -procedure TKMCampaign.SaveProgress(M: TKMemoryStream);
  -begin
  -  M.Write(fUnlockedMaps);
  -end;
  -
  -
   {When player completes one map we allow to reveal the next one, note that
   player may be replaying previous maps, in that case his progress remains the same}
   procedure TKMCampaign.SetUnlockedMaps(Value: byte);
  
positive.code: end;
  
  
  procedure TKMCampaign.LoadProgress(M: TKMemoryStream);
  begin
    M.Read(fUnlockedMaps);
  end;
  
  
  //Mission texts of original campaigns are available in all languages,
  //custom campaigns are unlikely to have more texts in more than 1-2 languages
  function TKMCampaign.MissionText(aIndex: byte): string;
  
negative.code:     for I := 0 to Count - 1 do
      begin
        M.Write(Campaigns[I].ShortTitle);
        M.Write(Campaigns[I].UnlockedMaps);
      end;
  
      M.SaveToFile(FileName);
  