Play-/Source/win32ui/MemoryCard.cpp

72 lines
1.4 KiB
C++
Raw Normal View History

#include <boost/filesystem/operations.hpp>
#include "MemoryCard.h"
namespace filesystem = boost::filesystem;
2014-08-03 23:35:05 -04:00
CMemoryCard::CMemoryCard(const filesystem::path& basePath)
: m_basePath(basePath)
{
ScanSaves();
}
CMemoryCard::~CMemoryCard()
{
2014-08-03 23:35:05 -04:00
}
size_t CMemoryCard::GetSaveCount() const
{
2014-08-03 23:35:05 -04:00
return m_saves.size();
}
2014-08-03 23:35:05 -04:00
const CSave* CMemoryCard::GetSaveByIndex(size_t index) const
{
2014-08-03 23:35:05 -04:00
return m_saves[index].get();
}
filesystem::path CMemoryCard::GetBasePath() const
{
2014-08-03 23:35:05 -04:00
return m_basePath;
}
void CMemoryCard::RefreshContents()
{
2014-08-03 23:35:05 -04:00
m_saves.clear();
ScanSaves();
}
void CMemoryCard::ScanSaves()
{
try
{
2014-08-03 23:35:05 -04:00
filesystem::directory_iterator endIterator;
for(filesystem::directory_iterator elementIterator(m_basePath);
elementIterator != endIterator; elementIterator++)
{
2014-08-03 23:35:05 -04:00
filesystem::path element(*elementIterator);
2014-08-03 23:35:05 -04:00
if(filesystem::is_directory(element))
{
2014-08-03 23:35:05 -04:00
filesystem::path iconSysPath = element / "icon.sys";
//Check if 'icon.sys' exists in this directory
2014-08-03 23:35:05 -04:00
if(filesystem::exists(iconSysPath))
{
try
{
m_saves.push_back(std::make_shared<CSave>(element));
}
catch(const std::exception& exception)
{
printf("Failed to create save: %s\r\n", exception.what());
}
}
}
}
}
2014-08-03 23:35:05 -04:00
catch(const std::exception& exception)
{
2014-08-03 23:35:05 -04:00
printf("Exception caught in CMemoryCard::ScanSaves: %s\r\n", exception.what());
}
}