aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/avalanche/avalanche.cpp2
-rw-r--r--engines/avalanche/avalanche.h8
-rw-r--r--engines/avalanche/detection.cpp268
3 files changed, 144 insertions, 134 deletions
diff --git a/engines/avalanche/avalanche.cpp b/engines/avalanche/avalanche.cpp
index d1a19b89d2..f66e293aed 100644
--- a/engines/avalanche/avalanche.cpp
+++ b/engines/avalanche/avalanche.cpp
@@ -41,7 +41,7 @@ namespace Avalanche {
AvalancheEngine *AvalancheEngine::s_Engine = 0;
- AvalancheEngine::AvalancheEngine(OSystem *syst, const ADGameDescription *gd) : Engine(syst), _gameDescription(gd) {
+ AvalancheEngine::AvalancheEngine(OSystem *syst, const AvalancheGameDescription *gd) : Engine(syst), _gameDescription(gd) {
_system = syst;
_console = new AvalancheConsole(this);
_rnd = 0;
diff --git a/engines/avalanche/avalanche.h b/engines/avalanche/avalanche.h
index b0b42ac409..6837ea5aa7 100644
--- a/engines/avalanche/avalanche.h
+++ b/engines/avalanche/avalanche.h
@@ -38,11 +38,13 @@ class RandomSource;
namespace Avalanche {
+struct AvalancheGameDescription;
+
static const int kSavegameVersion = 1;
class AvalancheEngine : public Engine {
public:
- AvalancheEngine(OSystem *syst, const ADGameDescription *gd);
+ AvalancheEngine(OSystem *syst, const AvalancheGameDescription *gd);
~AvalancheEngine();
OSystem *_system;
@@ -51,11 +53,11 @@ public:
Common::RandomSource *_rnd;
- const ADGameDescription *_gameDescription;
+ const AvalancheGameDescription *_gameDescription;
uint32 getFeatures() const;
const char *getGameId() const;
- void initGame(const ADGameDescription *gd);
+ void initGame(const AvalancheGameDescription *gd);
Common::Platform getPlatform() const;
diff --git a/engines/avalanche/detection.cpp b/engines/avalanche/detection.cpp
index 7ab4101844..10d23bbb7e 100644
--- a/engines/avalanche/detection.cpp
+++ b/engines/avalanche/detection.cpp
@@ -34,16 +34,24 @@
namespace Avalanche {
+struct AvalancheGameDescription {
+ ADGameDescription desc;
+};
+
uint32 AvalancheEngine::getFeatures() const {
- return _gameDescription->flags;
+ return _gameDescription->desc.flags;
}
const char *AvalancheEngine::getGameId() const {
- return _gameDescription->gameid;
+ return _gameDescription->desc.gameid;
}
+static const PlainGameDescriptor avalancheGames[] = {
+ {"avalot", "Lord Avalot d'Argent"},
+ {0, 0}
+};
+
static const ADGameDescription gameDescriptions[] = {
- // Avalanche English
{
"Avalanche", 0,
{
@@ -52,7 +60,7 @@ static const ADGameDescription gameDescriptions[] = {
AD_LISTEND
},
Common::EN_ANY,
- Common::kPlatformPCEngine,
+ Common::kPlatformDOS,
ADGF_NO_FLAGS,
GUIO0()
},
@@ -62,7 +70,7 @@ static const ADGameDescription gameDescriptions[] = {
class AvalancheMetaEngine : public AdvancedMetaEngine {
public:
- AvalancheMetaEngine() : AdvancedMetaEngine(gameDescriptions, sizeof(ADGameDescription), 0) {
+ AvalancheMetaEngine() : AdvancedMetaEngine(gameDescriptions, sizeof(AvalancheGameDescription), avalancheGames) {
}
const char *getName() const {
@@ -76,135 +84,135 @@ public:
bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *gd) const;
bool hasFeature(MetaEngineFeature f) const;
- int getMaximumSaveSlot() const;
+ /*int getMaximumSaveSlot() const;
SaveStateList listSaves(const char *target) const;
SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const;
- void removeSaveState(const char *target, int slot) const;
+ void removeSaveState(const char *target, int slot) const;*/
};
bool AvalancheMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *gd) const {
- if (gd) {
- *engine = new AvalancheEngine(syst, (const ADGameDescription *)gd);
- ((AvalancheEngine *)*engine)->initGame((const ADGameDescription *)gd);
- }
+ if (gd) /*{*/
+ *engine = new AvalancheEngine(syst, (const AvalancheGameDescription *)gd);
+ /* ((AvalancheEngine *)*engine)->initGame((const ADGameDescription *)gd);
+ }*/
return gd != 0;
}
bool AvalancheMetaEngine::hasFeature(MetaEngineFeature f) const {
- return
- (f == kSupportsListSaves) ||
- (f == kSupportsLoadingDuringStartup) ||
- (f == kSupportsDeleteSave) ||
- (f == kSavesSupportMetaInfo) ||
- (f == kSavesSupportThumbnail) ||
- (f == kSavesSupportCreationDate);
-}
-
-int AvalancheMetaEngine::getMaximumSaveSlot() const { return 99; }
-
-SaveStateList AvalancheMetaEngine::listSaves(const char *target) const {
- Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
- Common::StringArray filenames;
- Common::String pattern = target;
- pattern += "-??.SAV";
-
- filenames = saveFileMan->listSavefiles(pattern);
- sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..)
-
- SaveStateList saveList;
- char slot[3];
- int slotNum = 0;
- for (Common::StringArray::const_iterator filename = filenames.begin(); filename != filenames.end(); ++filename) {
- slot[0] = filename->c_str()[filename->size() - 6];
- slot[1] = filename->c_str()[filename->size() - 5];
- slot[2] = '\0';
- // Obtain the last 2 digits of the filename (without extension), since they correspond to the save slot
- slotNum = atoi(slot);
- if (slotNum >= 0 && slotNum <= getMaximumSaveSlot()) {
- Common::InSaveFile *file = saveFileMan->openForLoading(*filename);
- if (file) {
- int saveVersion = file->readByte();
-
- if (saveVersion != kSavegameVersion) {
- warning("Savegame of incompatible version");
- delete file;
- continue;
- }
-
- // read name
- uint16 nameSize = file->readUint16BE();
- if (nameSize >= 255) {
- delete file;
- continue;
- }
- char name[256];
- file->read(name, nameSize);
- name[nameSize] = 0;
-
- saveList.push_back(SaveStateDescriptor(slotNum, name));
- delete file;
- }
- }
- }
-
- return saveList;
+ return false;
+ /*(f == kSupportsListSaves) ||
+ (f == kSupportsLoadingDuringStartup) ||
+ (f == kSupportsDeleteSave) ||
+ (f == kSavesSupportMetaInfo) ||
+ (f == kSavesSupportThumbnail) ||
+ (f == kSavesSupportCreationDate);*/
}
-SaveStateDescriptor AvalancheMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
- Common::String fileName = Common::String::format("%s-%02d.SAV", target, slot);
- Common::InSaveFile *file = g_system->getSavefileManager()->openForLoading(fileName);
-
- if (file) {
- int saveVersion = file->readByte();
-
- if (saveVersion != kSavegameVersion) {
- warning("Savegame of incompatible version");
- delete file;
- return SaveStateDescriptor();
- }
-
- uint32 saveNameLength = file->readUint16BE();
- char saveName[256];
- file->read(saveName, saveNameLength);
- saveName[saveNameLength] = 0;
-
- SaveStateDescriptor desc(slot, saveName);
-
- Graphics::Surface *const thumbnail = Graphics::loadThumbnail(*file);
- desc.setThumbnail(thumbnail);
-
- desc.setDeletableFlag(true);
- desc.setWriteProtectedFlag(false);
-
- uint32 saveDate = file->readUint32BE();
- uint16 saveTime = file->readUint16BE();
-
- int day = (saveDate >> 24) & 0xFF;
- int month = (saveDate >> 16) & 0xFF;
- int year = saveDate & 0xFFFF;
-
- desc.setSaveDate(year, month, day);
-
- int hour = (saveTime >> 8) & 0xFF;
- int minutes = saveTime & 0xFF;
-
- desc.setSaveTime(hour, minutes);
-
- // Slot 0 is used for the 'restart game' save in all Avalanche games, thus
- // we prevent it from being deleted.
- desc.setDeletableFlag(slot != 0);
- desc.setWriteProtectedFlag(slot == 0);
-
- delete file;
- return desc;
- }
- return SaveStateDescriptor();
-}
-
-void AvalancheMetaEngine::removeSaveState(const char *target, int slot) const {
- Common::String fileName = Common::String::format("%s-%02d.SAV", target, slot);
- g_system->getSavefileManager()->removeSavefile(fileName);
-}
+//int AvalancheMetaEngine::getMaximumSaveSlot() const { return 99; }
+//
+//SaveStateList AvalancheMetaEngine::listSaves(const char *target) const {
+// Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
+// Common::StringArray filenames;
+// Common::String pattern = target;
+// pattern += "-??.SAV";
+//
+// filenames = saveFileMan->listSavefiles(pattern);
+// sort(filenames.begin(), filenames.end()); // Sort (hopefully ensuring we are sorted numerically..)
+//
+// SaveStateList saveList;
+// char slot[3];
+// int slotNum = 0;
+// for (Common::StringArray::const_iterator filename = filenames.begin(); filename != filenames.end(); ++filename) {
+// slot[0] = filename->c_str()[filename->size() - 6];
+// slot[1] = filename->c_str()[filename->size() - 5];
+// slot[2] = '\0';
+// // Obtain the last 2 digits of the filename (without extension), since they correspond to the save slot
+// slotNum = atoi(slot);
+// if (slotNum >= 0 && slotNum <= getMaximumSaveSlot()) {
+// Common::InSaveFile *file = saveFileMan->openForLoading(*filename);
+// if (file) {
+// int saveVersion = file->readByte();
+//
+// if (saveVersion != kSavegameVersion) {
+// warning("Savegame of incompatible version");
+// delete file;
+// continue;
+// }
+//
+// // read name
+// uint16 nameSize = file->readUint16BE();
+// if (nameSize >= 255) {
+// delete file;
+// continue;
+// }
+// char name[256];
+// file->read(name, nameSize);
+// name[nameSize] = 0;
+//
+// saveList.push_back(SaveStateDescriptor(slotNum, name));
+// delete file;
+// }
+// }
+// }
+//
+// return saveList;
+//}
+//
+//SaveStateDescriptor AvalancheMetaEngine::querySaveMetaInfos(const char *target, int slot) const {
+// Common::String fileName = Common::String::format("%s-%02d.SAV", target, slot);
+// Common::InSaveFile *file = g_system->getSavefileManager()->openForLoading(fileName);
+//
+// if (file) {
+// int saveVersion = file->readByte();
+//
+// if (saveVersion != kSavegameVersion) {
+// warning("Savegame of incompatible version");
+// delete file;
+// return SaveStateDescriptor();
+// }
+//
+// uint32 saveNameLength = file->readUint16BE();
+// char saveName[256];
+// file->read(saveName, saveNameLength);
+// saveName[saveNameLength] = 0;
+//
+// SaveStateDescriptor desc(slot, saveName);
+//
+// Graphics::Surface *const thumbnail = Graphics::loadThumbnail(*file);
+// desc.setThumbnail(thumbnail);
+//
+// desc.setDeletableFlag(true);
+// desc.setWriteProtectedFlag(false);
+//
+// uint32 saveDate = file->readUint32BE();
+// uint16 saveTime = file->readUint16BE();
+//
+// int day = (saveDate >> 24) & 0xFF;
+// int month = (saveDate >> 16) & 0xFF;
+// int year = saveDate & 0xFFFF;
+//
+// desc.setSaveDate(year, month, day);
+//
+// int hour = (saveTime >> 8) & 0xFF;
+// int minutes = saveTime & 0xFF;
+//
+// desc.setSaveTime(hour, minutes);
+//
+// // Slot 0 is used for the 'restart game' save in all Avalanche games, thus
+// // we prevent it from being deleted.
+// desc.setDeletableFlag(slot != 0);
+// desc.setWriteProtectedFlag(slot == 0);
+//
+// delete file;
+// return desc;
+// }
+// return SaveStateDescriptor();
+//}
+//
+//void AvalancheMetaEngine::removeSaveState(const char *target, int slot) const {
+// Common::String fileName = Common::String::format("%s-%02d.SAV", target, slot);
+// g_system->getSavefileManager()->removeSavefile(fileName);
+//}
} // End of namespace Avalanche
@@ -214,10 +222,10 @@ REGISTER_PLUGIN_DYNAMIC(AVALANCHE, PLUGIN_TYPE_ENGINE, Avalanche::AvalancheMetaE
REGISTER_PLUGIN_STATIC(AVALANCHE, PLUGIN_TYPE_ENGINE, Avalanche::AvalancheMetaEngine);
#endif
-namespace Avalanche {
-
-void AvalancheEngine::initGame(const ADGameDescription *gd) {
- _platform = gd->platform;
-}
-
-} // End of namespace Avalanche
+//namespace Avalanche {
+//
+//void AvalancheEngine::initGame(const ADGameDescription *gd) {
+// _platform = gd->platform;
+//}
+//
+//} // End of namespace Avalanche