[Scummvm-cvs-logs] scummvm master -> 07d8e5643b11e109da5f3e9fabaed023e5717457

dreammaster dreammaster at scummvm.org
Thu Aug 1 03:02:18 CEST 2013


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
07d8e5643b HOPKINS: Reverted to saving Breakout high scores in a separate file


Commit: 07d8e5643b11e109da5f3e9fabaed023e5717457
    https://github.com/scummvm/scummvm/commit/07d8e5643b11e109da5f3e9fabaed023e5717457
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-07-31T18:01:04-07:00

Commit Message:
HOPKINS: Reverted to saving Breakout high scores in a separate file

Changed paths:
    engines/hopkins/computer.cpp
    engines/hopkins/detection.cpp
    engines/hopkins/globals.cpp
    engines/hopkins/globals.h
    engines/hopkins/hopkins.h
    engines/hopkins/saveload.cpp
    engines/hopkins/saveload.h
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_logic.h
    engines/tsage/ringworld2/ringworld2_scenes0.cpp
    engines/tsage/ringworld2/ringworld2_scenes0.h
    engines/tsage/ringworld2/ringworld2_scenes1.h



diff --git a/engines/hopkins/computer.cpp b/engines/hopkins/computer.cpp
index 82e0dd0..489e7e1 100644
--- a/engines/hopkins/computer.cpp
+++ b/engines/hopkins/computer.cpp
@@ -578,7 +578,11 @@ void ComputerManager::displayGamesSubMenu() {
  * Load Highscore from file
  */
 void ComputerManager::loadHiscore() {
-	const byte *ptr = _vm->_globals->_highScoreData;
+	byte *ptr = _vm->_globals->allocMemory(100);
+	memset(ptr, 0, 100);
+
+	if (_vm->_saveLoad->saveExists(_vm->targetName() + "-highscore.dat"))
+		_vm->_saveLoad->load(_vm->targetName() + "-highscore.dat", ptr);
 
 	for (int scoreIndex = 0; scoreIndex < 6; ++scoreIndex) {
 		_score[scoreIndex]._name = "      ";
@@ -600,6 +604,7 @@ void ComputerManager::loadHiscore() {
 	}
 
 	_lowestHiScore = atol(_score[5]._score.c_str());
+	_vm->_globals->freeMemory(ptr);
 }
 
 /**
@@ -985,8 +990,8 @@ void ComputerManager::saveScore() {
 		}
 	}
 
-	byte *ptr = _vm->_globals->_highScoreData;
-	memset(ptr, 0, 99);
+	byte *ptr = _vm->_globals->allocMemory(100);
+	memset(ptr, 0, 100);
 	for (int scorePlaceIdx = 0; scorePlaceIdx <= 5; scorePlaceIdx++) {
 		int curBufPtr = 16 * scorePlaceIdx;
 		for (int namePos = 0; namePos < 6; namePos++) {
@@ -1006,6 +1011,9 @@ void ComputerManager::saveScore() {
 		};
 		ptr[curBufPtr + 15] = 0;
 	}
+
+	_vm->_saveLoad->saveFile(_vm->targetName() + "-highscore.dat", ptr, 100);
+	_vm->_globals->freeMemory(ptr);
 }
 
 /**
diff --git a/engines/hopkins/detection.cpp b/engines/hopkins/detection.cpp
index 9d16b0a..45b6c2b 100644
--- a/engines/hopkins/detection.cpp
+++ b/engines/hopkins/detection.cpp
@@ -56,6 +56,10 @@ bool HopkinsEngine::getIsDemo() const {
 	return _gameDescription->desc.flags & ADGF_DEMO;
 }
 
+Common::String HopkinsEngine::targetName() const {
+	return _targetName;
+}
+
 } // End of namespace Hopkins
 
 static const PlainGameDescriptor hopkinsGames[] = {
diff --git a/engines/hopkins/globals.cpp b/engines/hopkins/globals.cpp
index 97d6c40..a9a0a81 100644
--- a/engines/hopkins/globals.cpp
+++ b/engines/hopkins/globals.cpp
@@ -70,8 +70,6 @@ Globals::Globals(HopkinsEngine *vm) {
 	for (int i = 0; i < 36; ++i)
 		_inventory[i] = 0;
 
-	Common::fill(&_highScoreData[0], &_highScoreData[100], 0);
-
 	// Initialize fields
 	_language = LANG_EN;
 
diff --git a/engines/hopkins/globals.h b/engines/hopkins/globals.h
index a76323b..94512c3d 100644
--- a/engines/hopkins/globals.h
+++ b/engines/hopkins/globals.h
@@ -206,7 +206,6 @@ public:
 	Common::String _zoneFilename;
 	Common::String _textFilename;
 	byte *_levelSpriteBuf;
-	byte _highScoreData[100];
 
 	EventMode _eventMode;
 
diff --git a/engines/hopkins/hopkins.h b/engines/hopkins/hopkins.h
index 398e41a..54e7c90 100644
--- a/engines/hopkins/hopkins.h
+++ b/engines/hopkins/hopkins.h
@@ -164,6 +164,7 @@ public:
 	Common::Platform getPlatform() const;
 	uint16 getVersion() const;
 	bool getIsDemo() const;
+	Common::String targetName() const;
 
 	int getRandomNumber(int maxNumber);
 	Common::String generateSaveName(int slotNumber);
diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp
index 14b1662..20ef5da 100644
--- a/engines/hopkins/saveload.cpp
+++ b/engines/hopkins/saveload.cpp
@@ -55,6 +55,13 @@ bool SaveLoadManager::save(const Common::String &file, const void *buf, size_t n
 		return false;
 }
 
+bool SaveLoadManager::saveExists(const Common::String &file) {
+	Common::InSaveFile *savefile = g_system->getSavefileManager()->openForLoading(file);
+	bool result = savefile != NULL;
+	delete savefile;
+	return result;
+}
+
 // Save File
 bool SaveLoadManager::saveFile(const Common::String &file, const void *buf, size_t n) {
 	return save(file, buf, n);
@@ -251,10 +258,6 @@ void SaveLoadManager::createThumbnail(Graphics::Surface *s) {
 }
 
 void SaveLoadManager::syncSavegameData(Common::Serializer &s, int version) {
-	if (version >= 3)
-		// Sync embedded Breakout game high score data
-		s.syncBytes(&_vm->_globals->_highScoreData[0], 100);
-
 	s.syncBytes(&_vm->_globals->_saveData->_data[0], 2050);
 	syncCharacterLocation(s, _vm->_globals->_saveData->_cloneHopkins);
 	syncCharacterLocation(s, _vm->_globals->_saveData->_realHopkins);
diff --git a/engines/hopkins/saveload.h b/engines/hopkins/saveload.h
index e4ee3aa..191cb9e 100644
--- a/engines/hopkins/saveload.h
+++ b/engines/hopkins/saveload.h
@@ -35,7 +35,7 @@ namespace Hopkins {
 
 class HopkinsEngine;
 
-#define HOPKINS_SAVEGAME_VERSION 3
+#define HOPKINS_SAVEGAME_VERSION 2
 
 struct hopkinsSavegameHeader {
 	uint8 _version;
@@ -56,6 +56,7 @@ private:
 public:
 	SaveLoadManager(HopkinsEngine *vm);
 
+	bool saveExists(const Common::String &file);
 	bool save(const Common::String &file, const void *buf, size_t n);
 	bool saveFile(const Common::String &file, const void *buf, size_t n);
 	void load(const Common::String &file, byte *buf);
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index ac6ba52..d9bb504 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -2454,6 +2454,19 @@ void ScannerDialog::proc12(int visage, int stripFrameNum, int frameNum, int posX
 	}
 }
 
+/*--------------------------------------------------------------------------*/
+
+FinePositionedObject::FinePositionedObject(): SceneObject() {
+	_x100 = _y100 = 0;
+}
+
+void FinePositionedObject::synchronize(Serializer &s) {
+	EventHandler::synchronize(s);
+
+	s.syncAsSint32LE(_x100);
+	s.syncAsSint32LE(_y100);
+}
+
 } // End of namespace Ringworld2
 
 } // End of namespace TsAGE
diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 2cf48f3..371ec6b 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -514,6 +514,16 @@ public:
 	void proc12(int visage, int stripFrameNum, int frameNum, int posX, int posY);
 };
 
+class FinePositionedObject: public SceneObject {
+public:
+	int _x100, _y100;
+public:
+	FinePositionedObject();
+
+	virtual Common::String getClassName() { return "FinePositionedObject"; }
+	virtual void synchronize(Serializer &s);
+};
+
 } // End of namespace Ringworld2
 
 } // End of namespace TsAGE
diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.cpp b/engines/tsage/ringworld2/ringworld2_scenes0.cpp
index 4018921..b977ea1 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes0.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes0.cpp
@@ -2312,19 +2312,6 @@ void Scene205::Action1::textLoop() {
 
 /*--------------------------------------------------------------------------*/
 
-Scene205::Object::Object(): SceneObject() {
-	_x100 = _y100 = 0;
-}
-
-void Scene205::Object::synchronize(Serializer &s) {
-	EventHandler::synchronize(s);
-
-	s.syncAsSint32LE(_x100);
-	s.syncAsSint32LE(_y100);
-}
-
-/*--------------------------------------------------------------------------*/
-
 Scene205::Scene205(): SceneExt() {
 	_yp = 0;
 	_textIndex = 1;
diff --git a/engines/tsage/ringworld2/ringworld2_scenes0.h b/engines/tsage/ringworld2/ringworld2_scenes0.h
index 80dab89..b7268da 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes0.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes0.h
@@ -273,13 +273,8 @@ class Scene205: public SceneExt {
 	};
 
 	/* Objects */
-	class Object: public SceneObject {
-	public:
-		int _x100, _y100;
-	public:
-		Object();
-
-		virtual void synchronize(Serializer &s);
+	class Object: public FinePositionedObject {
+		// TODO: More derived logic
 	};
 private:
 	void setup();
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h
index 0da6b3f..f3e9436 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.h
@@ -39,6 +39,19 @@ namespace Ringworld2 {
 
 using namespace TsAGE;
 
+class Scene1000 : public SceneExt {
+public:
+	SequenceManager _sequenceManager1;
+	SequenceManager _sequenceManager2;
+	SpeakerGameText _gameTextSpeaker;
+
+public:
+	virtual void postInit(SceneObjectList *OwnerList = NULL);
+	virtual void remove();
+	virtual void signal();
+	virtual void dispatch();
+};
+
 class Scene1010 : public SceneExt {
 public:
 	SequenceManager _sequenceManager;






More information about the Scummvm-git-logs mailing list