#pragma once #include "../../Platform/stdafx.h" class LevelSummary; class ProgressListener; class LevelData; class LevelStorage; class ConsoleSaveFile; class LevelStorageSource { public: virtual std::wstring getName() = 0; virtual std::shared_ptr selectLevel( ConsoleSaveFile* saveFile, const std::wstring& levelId, bool createPlayerDir) = 0; virtual std::vector* getLevelList() = 0; virtual void clearAll() = 0; virtual LevelData* getDataTagFor(ConsoleSaveFile* saveFile, const std::wstring& levelId) = 0; /** * Tests if a levelId can be used to store a level. For example, a levelId * can't be called COM1 on Windows systems, because that is a reserved file * handle. *

* Also, a new levelId may not overwrite an existing one. * * @param levelId * @return */ virtual bool isNewLevelIdAcceptable(const std::wstring& levelId) = 0; virtual void deleteLevel(const std::wstring& levelId) = 0; virtual void renameLevel(const std::wstring& levelId, const std::wstring& newLevelName) = 0; virtual bool isConvertible(ConsoleSaveFile* saveFile, const std::wstring& levelId) = 0; virtual bool requiresConversion(ConsoleSaveFile* saveFile, const std::wstring& levelId) = 0; virtual bool convertLevel(ConsoleSaveFile* saveFile, const std::wstring& levelId, ProgressListener* progress) = 0; };