diff options
Diffstat (limited to 'engines/bbvs/minigames/minigame.cpp')
-rw-r--r-- | engines/bbvs/minigames/minigame.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/engines/bbvs/minigames/minigame.cpp b/engines/bbvs/minigames/minigame.cpp index 299836ab00..888040f87a 100644 --- a/engines/bbvs/minigames/minigame.cpp +++ b/engines/bbvs/minigames/minigame.cpp @@ -21,11 +21,14 @@ */ #include "bbvs/minigames/minigame.h" +#include "common/savefile.h" namespace Bbvs { Minigame::Minigame(BbvsEngine *vm) : _vm(vm), _spriteModule(0) { + + memset(_hiScoreTable, 0, sizeof(_hiScoreTable)); } Minigame::~Minigame() { @@ -71,4 +74,31 @@ bool Minigame::isAnySoundPlaying(const uint *indices, uint count) { return false; } +void Minigame::saveHiscore(int minigameNum, int score) { + Common::String filename = _vm->getTargetName() + "-highscore.dat"; + Common::OutSaveFile *file = g_system->getSavefileManager()->openForSaving(filename); + if (file) { + // Reserve a byte for future usage (rarely a bad idea, you never know...) + file->writeByte(0); + _hiScoreTable[minigameNum] = score; + for (int i = 0; i < kMinigameCount; ++i) + file->writeUint32LE(_hiScoreTable[i]); + delete file; + } +} + +int Minigame::loadHiscore(int minigameNum) { + int score = 0; + Common::String filename = _vm->getTargetName() + "-highscore.dat"; + Common::InSaveFile *file = g_system->getSavefileManager()->openForLoading(filename); + if (file) { + file->readByte(); + for (int i = 0; i < kMinigameCount; ++i) + _hiScoreTable[i] = file->readUint32LE(); + delete file; + score = _hiScoreTable[minigameNum]; + } + return score; +} + } // End of namespace Bbvs |