本文整理汇总了C++中SaveStateDescriptor类的典型用法代码示例。如果您正苦于以下问题:C++ SaveStateDescriptor类的具体用法?C++ SaveStateDescriptor怎么用?C++ SaveStateDescriptor使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SaveStateDescriptor类的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: querySaveMetaInfos
virtual SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const {
Wintermute::BasePersistenceManager pm(target, true);
SaveStateDescriptor retVal;
retVal.setDescription("Invalid savegame");
pm.getSaveStateDesc(slot, retVal);
return retVal;
}
示例2: atoi
SaveStateList DrasculaMetaEngine::listSaves(const char *target) const {
Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
Common::StringArray filenames;
Common::String pattern = target;
pattern += ".###";
filenames = saveFileMan->listSavefiles(pattern);
SaveStateList saveList;
int slotNum = 0;
for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
// Obtain the last 3 digits of the filename, since they correspond to the save slot
slotNum = atoi(file->c_str() + file->size() - 3);
if (slotNum >= 0 && slotNum <= getMaximumSaveSlot()) {
Common::InSaveFile *in = saveFileMan->openForLoading(*file);
if (in) {
SaveStateDescriptor desc = loadMetaData(in, slotNum, false);
if (desc.getSaveSlot() != slotNum) {
// invalid
delete in;
continue;
}
saveList.push_back(desc);
delete in;
}
}
}
// Sort saves based on slot number.
Common::sort(saveList.begin(), saveList.end(), SaveStateDescriptorSlotComparator());
return saveList;
}
示例3: SaveStateDescriptor
SaveStateDescriptor DrasculaMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
Common::String fileName = Common::String::format("%s.%03d", target, slot);
Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(fileName);
SaveStateDescriptor desc;
// Do not allow save slot 0 (used for auto-saving) to be deleted or
// overwritten.
desc.setDeletableFlag(slot != 0);
desc.setWriteProtectedFlag(slot == 0);
if (in) {
desc = Drascula::loadMetaData(in, slot, false);
if (desc.getSaveSlot() != slot) {
delete in;
return SaveStateDescriptor();
}
Graphics::Surface *const thumbnail = Graphics::loadThumbnail(*in);
desc.setThumbnail(thumbnail);
delete in;
}
return desc;
}
示例4: pattern
SaveStateList FullpipeMetaEngine::listSaves(const char *target) const {
Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
Common::StringArray filenames;
Common::String pattern("fullpipe.s##");
filenames = saveFileMan->listSavefiles(pattern);
SaveStateList saveList;
for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
// Obtain the last 2 digits of the filename, since they correspond to the save slot
int slotNum = atoi(file->c_str() + file->size() - 2);
if (slotNum >= 0 && slotNum <= getMaximumSaveSlot()) {
Common::ScopedPtr<Common::InSaveFile> in(saveFileMan->openForLoading(*file));
if (in) {
Fullpipe::FullpipeSavegameHeader header;
Fullpipe::readSavegameHeader(in.get(), header);
SaveStateDescriptor desc;
parseSavegameHeader(header, desc);
desc.setSaveSlot(slotNum);
saveList.push_back(desc);
}
}
}
// Sort saves based on slot number.
Common::sort(saveList.begin(), saveList.end(), SaveStateDescriptorSlotComparator());
return saveList;
}
示例5: readSavegameHeader
bool readSavegameHeader(Common::InSaveFile *in, FullpipeSavegameHeader &header) {
header.thumbnail = NULL;
uint oldPos = in->pos();
in->seek(-4, SEEK_END);
int headerOffset = in->readUint32LE();
// Sanity check
if (headerOffset >= in->pos() || headerOffset == 0) {
in->seek(oldPos, SEEK_SET); // Rewind the file
fillDummyHeader(header);
return false;
}
in->seek(headerOffset, SEEK_SET);
in->read(header.id, 6);
// Validate the header Id
if (strcmp(header.id, "SVMCR")) {
in->seek(oldPos, SEEK_SET); // Rewind the file
fillDummyHeader(header);
return false;
}
header.version = in->readByte();
if (header.version != FULLPIPE_SAVEGAME_VERSION) {
in->seek(oldPos, SEEK_SET); // Rewind the file
fillDummyHeader(header);
return false;
}
header.date = in->readUint32LE();
header.time = in->readUint16LE();
header.playtime = in->readUint32LE();
// Generate savename
SaveStateDescriptor desc;
parseSavegameHeader(header, desc);
header.saveName = Common::String::format("%s %s", desc.getSaveDate().c_str(), desc.getSaveTime().c_str());
// Get the thumbnail
header.thumbnail = Graphics::loadThumbnail(*in);
in->seek(oldPos, SEEK_SET); // Rewind the file
if (!header.thumbnail)
return false;
return true;
}
示例6: parseSavegameHeader
void parseSavegameHeader(Fullpipe::FullpipeSavegameHeader &header, SaveStateDescriptor &desc) {
int day = (header.date >> 24) & 0xFF;
int month = (header.date >> 16) & 0xFF;
int year = header.date & 0xFFFF;
desc.setSaveDate(year, month, day);
int hour = (header.time >> 8) & 0xFF;
int minutes = header.time & 0xFF;
desc.setSaveTime(hour, minutes);
desc.setPlayTime(header.playtime * 1000);
desc.setDescription(header.description);
}
示例7: querySaveMetaInfos
SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const override {
SaveStateDescriptor descriptor;
if (slot == 0) {
descriptor.setWriteProtectedFlag(true);
descriptor.setDeletableFlag(false);
}
Common::String filename = StarkEngine::formatSaveName(target, slot);
Common::InSaveFile *save = g_system->getSavefileManager()->openForLoading(filename);
if (!save) {
return descriptor;
}
SaveMetadata metadata;
Common::ErrorCode readError = metadata.read(save, filename);
if (readError != Common::kNoError) {
delete save;
return descriptor;
}
descriptor.setDescription(metadata.description);
if (metadata.version >= 9) {
Graphics::Surface *thumb = metadata.readGameScreenThumbnail(save);
descriptor.setThumbnail(thumb);
descriptor.setPlayTime(metadata.totalPlayTime);
descriptor.setSaveDate(metadata.saveYear, metadata.saveMonth, metadata.saveDay);
descriptor.setSaveTime(metadata.saveHour, metadata.saveMinute);
}
delete save;
return descriptor;
}
示例8: getSaveStateDesc
void BasePersistenceManager::getSaveStateDesc(int slot, SaveStateDescriptor &desc) {
Common::String filename = getFilenameForSlot(slot);
debugC(kWintermuteDebugSaveGame, "Trying to list savegame %s in slot %d", filename.c_str(), slot);
if (DID_FAIL(readHeader(filename))) {
warning("getSavedDesc(%d) - Failed for %s", slot, filename.c_str());
return;
}
desc.setSaveSlot(slot);
desc.setDescription(_savedDescription);
desc.setDeletableFlag(true);
desc.setWriteProtectedFlag(false);
if (_thumbnailDataSize > 0) {
Common::MemoryReadStream thumbStream(_thumbnailData, _thumbnailDataSize);
Graphics::BitmapDecoder bmpDecoder;
if (bmpDecoder.loadStream(thumbStream)) {
Graphics::Surface *surf = NULL;
surf = bmpDecoder.getSurface()->convertTo(g_system->getOverlayFormat());
TransparentSurface *scaleableSurface = new TransparentSurface(*surf, false);
Graphics::Surface *scaled = scaleableSurface->scale(kThumbnailWidth, kThumbnailHeight2);
desc.setThumbnail(scaled);
delete scaleableSurface;
delete surf;
}
}
desc.setSaveDate(_savedTimestamp.tm_year, _savedTimestamp.tm_mon, _savedTimestamp.tm_mday);
desc.setSaveTime(_savedTimestamp.tm_hour, _savedTimestamp.tm_min);
desc.setPlayTime(0);
}
示例9: f
SaveStateDescriptor FullpipeMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
Common::ScopedPtr<Common::InSaveFile> f(g_system->getSavefileManager()->openForLoading(
Fullpipe::getSavegameFile(slot)));
if (f) {
Fullpipe::FullpipeSavegameHeader header;
Fullpipe::readSavegameHeader(f.get(), header);
// Create the return descriptor
SaveStateDescriptor desc;
parseSavegameHeader(header, desc);
desc.setSaveSlot(slot);
desc.setThumbnail(header.thumbnail);
return desc;
}
return SaveStateDescriptor();
}
示例10: atoi
SaveStateList MacVentureMetaEngine::listSaves(const char *target) const {
Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
Common::StringArray filenames;
Common::String pattern = target;
pattern += ".###";
filenames = saveFileMan->listSavefiles(pattern);
SaveStateList saveList;
for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
int slotNum = atoi(file->c_str() + file->size() - 3);
SaveStateDescriptor desc;
// Do not allow save slot 0 (used for auto-saving) to be deleted or
// overwritten.
desc.setDeletableFlag(slotNum != 0);
desc.setWriteProtectedFlag(slotNum == 0);
if (slotNum >= 0 && slotNum <= getMaximumSaveSlot()) {
Common::InSaveFile *in = saveFileMan->openForLoading(*file);
if (in) {
desc = loadMetaData(in, slotNum);
if (desc.getSaveSlot() != slotNum) {
// invalid
delete in;
continue;
}
saveList.push_back(desc);
delete in;
}
}
}
// Sort saves based on slot number.
Common::sort(saveList.begin(), saveList.end(), SaveStateDescriptorSlotComparator());
return saveList;
}
示例11: getSaveStateDesc
void BasePersistenceManager::getSaveStateDesc(int slot, SaveStateDescriptor &desc) {
Common::String filename = getFilenameForSlot(slot);
debugC(kWintermuteDebugSaveGame, "Trying to list savegame %s in slot %d", filename.c_str(), slot);
if (DID_FAIL(readHeader(filename))) {
debugC(kWintermuteDebugSaveGame, "getSavedDesc(%d) - Failed for %s", slot, filename.c_str());
return;
}
desc.setSaveSlot(slot);
desc.setDescription(_savedDescription);
desc.setDeletableFlag(true);
desc.setWriteProtectedFlag(false);
int thumbSize = 0;
byte *thumbData = nullptr;
if (_scummVMThumbSize > 0) {
thumbSize = _scummVMThumbSize;
thumbData = _scummVMThumbnailData;
} else if (_thumbnailDataSize > 0) {
thumbSize = _thumbnailDataSize;
thumbData = _thumbnailData;
}
if (thumbSize > 0) {
Common::MemoryReadStream thumbStream(thumbData, thumbSize, DisposeAfterUse::NO);
Graphics::BitmapDecoder bmpDecoder;
if (bmpDecoder.loadStream(thumbStream)) {
const Graphics::Surface *bmpSurface = bmpDecoder.getSurface();
TransparentSurface *scaleableSurface = new TransparentSurface(*bmpSurface, false);
Graphics::Surface *scaled = scaleableSurface->scale(kThumbnailWidth, kThumbnailHeight2);
Graphics::Surface *thumb = scaled->convertTo(g_system->getOverlayFormat());
desc.setThumbnail(thumb);
delete scaleableSurface;
scaled->free();
delete scaled;
}
}
desc.setSaveDate(_savedTimestamp.tm_year, _savedTimestamp.tm_mon, _savedTimestamp.tm_mday);
desc.setSaveTime(_savedTimestamp.tm_hour, _savedTimestamp.tm_min);
desc.setPlayTime(0);
}
示例12: cmpSave
static bool cmpSave(const SaveStateDescriptor &x, const SaveStateDescriptor &y) {
return x.getSaveSlot() < y.getSaveSlot();
}