diff options
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/hopkins/globals.cpp | 8 | ||||
| -rw-r--r-- | engines/hopkins/globals.h | 4 | ||||
| -rw-r--r-- | engines/hopkins/hopkins.cpp | 28 | ||||
| -rw-r--r-- | engines/hopkins/menu.cpp | 2 | ||||
| -rw-r--r-- | engines/hopkins/objects.cpp | 35 | ||||
| -rw-r--r-- | engines/hopkins/objects.h | 7 | ||||
| -rw-r--r-- | engines/hopkins/saveload.cpp | 8 | ||||
| -rw-r--r-- | engines/hopkins/script.cpp | 2 | ||||
| -rw-r--r-- | engines/hopkins/talk.cpp | 8 | 
9 files changed, 56 insertions, 46 deletions
| diff --git a/engines/hopkins/globals.cpp b/engines/hopkins/globals.cpp index e90748236a..837aad1313 100644 --- a/engines/hopkins/globals.cpp +++ b/engines/hopkins/globals.cpp @@ -116,14 +116,11 @@ Globals::Globals() {  	NUM_FICHIER_OBJ = 0;  	nbrligne = 0;  	_boxWidth = 0; -	_forestFl = false;  	_objectWidth = _objectHeight = 0; -	_helicopterFl = false;  	_catalogPos = 0;  	_catalogSize = 0;  	iRegul = 0;  	_exitId = 0; -	_mapCarPosX = _mapCarPosY = 0;  	PERSO = 0;  	_screenId = 0;  	_prevScreenId = 0; @@ -163,7 +160,6 @@ Globals::Globals() {  	_saveData = NULL;  	GESTE = NULL;  	_inventoryObject = NULL; -	_forestSprite = NULL;  	_answerBuffer = g_PTRNUL;  	ADR_FICHIER_OBJ = NULL;  	PERSO = NULL; @@ -204,7 +200,6 @@ Globals::~Globals() {  	freeMemory((byte *)_saveData);  	freeMemory(GESTE);  	freeMemory(_inventoryObject); -	freeMemory(_forestSprite);  	freeMemory(_answerBuffer);  	freeMemory(ADR_FICHIER_OBJ);  	freeMemory(PERSO); @@ -283,6 +278,7 @@ void Globals::clearAll() {  	}  	_vm->_linesManager.clearAll(); +	_vm->_objectsManager.clearAll();  	_saveData = (Sauvegarde *)malloc(sizeof(Sauvegarde));  	memset(_saveData, 0, sizeof(Sauvegarde)); @@ -293,8 +289,6 @@ void Globals::clearAll() {  	_inventoryObject = allocMemory(2500);  	ADR_FICHIER_OBJ = g_PTRNUL; -	_forestSprite = g_PTRNUL; -	_forestFl = false;  	GESTE = g_PTRNUL;  	GESTE_FLAG = 0; diff --git a/engines/hopkins/globals.h b/engines/hopkins/globals.h index c2b9ec6e69..9c730bb1da 100644 --- a/engines/hopkins/globals.h +++ b/engines/hopkins/globals.h @@ -282,8 +282,6 @@ public:  	bool _cityMapEnabledFl;  	bool _linuxEndDemoFl;  	bool _censorshipFl; -	bool _helicopterFl; -	bool _forestFl;  	bool _introSpeechOffFl;  	bool _cacheFl;  	bool _forceHideText; @@ -299,7 +297,6 @@ public:  	int _screenId;  	int _prevScreenId;  	int _boxWidth; -	int _mapCarPosX, _mapCarPosY;  	int _characterMaxPosY;  	int _baseMapColor;  	int _spriteSize[500]; @@ -307,7 +304,6 @@ public:  	int _oldMouseZoneId;  	int _oldMouseX, _oldMouseY;  	uint _speed; -	byte *_forestSprite;  	byte *_answerBuffer;  	Sauvegarde *_saveData;  	Language _language; diff --git a/engines/hopkins/hopkins.cpp b/engines/hopkins/hopkins.cpp index 0b5aa67aae..f899ee3e61 100644 --- a/engines/hopkins/hopkins.cpp +++ b/engines/hopkins/hopkins.cpp @@ -117,8 +117,8 @@ bool HopkinsEngine::runWin95Demo() {  	_globals.loadObjects();  	_objectsManager.changeObject(14);  	_objectsManager.addObject(14); +	_objectsManager._helicopterFl = false; -	_globals._helicopterFl = false;  	_globals.iRegul = 1;  	_graphicsManager.lockScreen(); @@ -162,7 +162,7 @@ bool HopkinsEngine::runWin95Demo() {  	_globals.iRegul = 1;  	_globals.PERSO = _fileManager.loadFile("PERSO.SPR");  	_globals.PERSO_TYPE = 0; -	_globals._mapCarPosX = _globals._mapCarPosY = 0; +	_objectsManager._mapCarPosX = _objectsManager._mapCarPosY = 0;  	memset(_globals._saveData, 0, 2000);  	_globals._exitId = 0; @@ -428,8 +428,8 @@ bool HopkinsEngine::runLinuxDemo() {  	_globals.loadObjects();  	_objectsManager.changeObject(14);  	_objectsManager.addObject(14); +	_objectsManager._helicopterFl = false; -	_globals._helicopterFl = false;  	_eventsManager.mouseOff();  	_graphicsManager.lockScreen(); @@ -452,7 +452,7 @@ bool HopkinsEngine::runLinuxDemo() {  	_globals.iRegul = 0;  	_globals.PERSO = _fileManager.loadFile("PERSO.SPR");  	_globals.PERSO_TYPE = 0; -	_globals._mapCarPosX = _globals._mapCarPosY = 0; +	_objectsManager._mapCarPosX = _objectsManager._mapCarPosY = 0;  	memset(_globals._saveData, 0, 2000);  	_globals._exitId = 0; @@ -755,12 +755,12 @@ bool HopkinsEngine::runFull() {  	_objectsManager.addObject(14);  	if (getPlatform() == Common::kPlatformLinux) { -		_globals._helicopterFl = false; +		_objectsManager._helicopterFl = false;  		_eventsManager.mouseOff();  		// No code has been added to display the version as it's wrong   		// in my copy: it mentions a Win95 version v4 using DirectDraw (Strangerke)  	} else if (getPlatform() == Common::kPlatformWindows) { -		_globals._helicopterFl = false; +		_objectsManager._helicopterFl = false;  		_globals.iRegul = 1;  		// This code displays the game version.  		// It wasn't present in the original and could be put in the debugger @@ -811,7 +811,7 @@ bool HopkinsEngine::runFull() {  	_globals.iRegul = 0;  	_globals.PERSO = _fileManager.loadFile("PERSO.SPR");  	_globals.PERSO_TYPE = 0; -	_globals._mapCarPosX = _globals._mapCarPosY = 0; +	_objectsManager._mapCarPosX = _objectsManager._mapCarPosY = 0;  	memset(_globals._saveData, 0, 2000);  	_globals._exitId = 0; @@ -1142,17 +1142,17 @@ bool HopkinsEngine::runFull() {  			_linesManager.setMaxLineIdx(40);  			_globals._characterMaxPosY = 435;  			_globals._disableInventFl = false; -			_globals._forestFl = true; +			_objectsManager._forestFl = true;  			Common::String im = Common::String::format("IM%d", _globals._exitId);  			_soundManager.WSOUND(13); -			if (_globals._forestSprite == g_PTRNUL) { -				_globals._forestSprite = _objectsManager.loadSprite("HOPDEG.SPR"); +			if (_objectsManager._forestSprite == g_PTRNUL) { +				_objectsManager._forestSprite = _objectsManager.loadSprite("HOPDEG.SPR");  				_soundManager.loadSample(1, "SOUND41.WAV");  			}  			_objectsManager.PERSONAGE2(im, im, "BANDIT", im, 13, false);  			if (_globals._exitId < 35 || _globals._exitId > 49) { -				_globals._forestSprite = _globals.freeMemory(_globals._forestSprite); -				_globals._forestFl = false; +				_objectsManager._forestSprite = _globals.freeMemory(_objectsManager._forestSprite); +				_objectsManager._forestFl = false;  				_soundManager.DEL_SAMPLE(1);  			}  			break; @@ -1956,7 +1956,7 @@ void HopkinsEngine::restoreSystem() {  void HopkinsEngine::endLinuxDemo() {  	_globals._linuxEndDemoFl = true;  	_graphicsManager.RESET_SEGMENT_VESA(); -	_globals._forestFl = false; +	_objectsManager._forestFl = false;  	_eventsManager._breakoutFl = false;  	_globals._disableInventFl = true;  	_graphicsManager.loadImage("BOX"); @@ -2832,7 +2832,7 @@ bool HopkinsEngine::displayAdultDisclaimer() {  	_graphicsManager._maxX = SCREEN_WIDTH;  	_graphicsManager._maxY = SCREEN_HEIGHT - 1;  	_eventsManager._breakoutFl = false; -	_globals._forestFl = false; +	_objectsManager._forestFl = false;  	_globals._disableInventFl = true;  	_globals._exitId = 0; diff --git a/engines/hopkins/menu.cpp b/engines/hopkins/menu.cpp index 33369a47ec..798acc2a8e 100644 --- a/engines/hopkins/menu.cpp +++ b/engines/hopkins/menu.cpp @@ -53,7 +53,7 @@ int MenuManager::menu() {  	result = 0;  	while (!g_system->getEventManager()->shouldQuit()) { -		_vm->_globals._forestFl = false; +		_vm->_objectsManager._forestFl = false;  		_vm->_eventsManager._breakoutFl = false;  		_vm->_globals._disableInventFl = true;  		_vm->_globals._exitId = 0; diff --git a/engines/hopkins/objects.cpp b/engines/hopkins/objects.cpp index e9db707e98..7c30286e5e 100644 --- a/engines/hopkins/objects.cpp +++ b/engines/hopkins/objects.cpp @@ -38,6 +38,7 @@ ObjectsManager::ObjectsManager() {  		Common::fill((byte *)&_sprite[i], (byte *)&_sprite[i] + sizeof(SpriteItem), 0);  	} +	_helicopterFl = false;  	_priorityFl = false;  	_oldBorderPos = Common::Point(0, 0);  	_oldBorderSpriteIndex = 0; @@ -70,12 +71,24 @@ ObjectsManager::ObjectsManager() {  	_oldSpriteIndex = 0;  	_oldFlipFl = false;  	_curObjectIndex = 0; +	_forestFl = false; +	_mapCarPosX = _mapCarPosY = 0; +	_forestSprite = NULL; +} + +ObjectsManager::~ObjectsManager() { +	_vm->_globals.freeMemory(_forestSprite);  }  void ObjectsManager::setParent(HopkinsEngine *vm) {  	_vm = vm;  } +void ObjectsManager::clearAll() { +	_forestFl = false; +	_forestSprite = g_PTRNUL; +} +  /**   * Change Object   */ @@ -1810,12 +1823,12 @@ void ObjectsManager::handleCityMap() {  	_vm->_globals.CACHE_OFF(20);  	_vm->_globals.CACHE_ON(); -	if (!_vm->_globals._mapCarPosX && !_vm->_globals._mapCarPosY) { -		_vm->_globals._mapCarPosX = 900; -		_vm->_globals._mapCarPosY = 319; +	if (!_mapCarPosX && !_mapCarPosY) { +		_mapCarPosX = 900; +		_mapCarPosY = 319;  	} -	addStaticSprite(_spritePtr, Common::Point(_vm->_globals._mapCarPosX, _vm->_globals._mapCarPosY), 0, 1, 0, false, 5, 5); -	_vm->_eventsManager.setMouseXY(_vm->_globals._mapCarPosX, _vm->_globals._mapCarPosY); +	addStaticSprite(_spritePtr, Common::Point(_mapCarPosX, _mapCarPosY), 0, 1, 0, false, 5, 5); +	_vm->_eventsManager.setMouseXY(_mapCarPosX, _mapCarPosY);  	_vm->_eventsManager.mouseOn();  	_vm->_graphicsManager.scrollScreen(getSpriteX(0) - 320);  	_vm->_graphicsManager._scrollOffset = getSpriteX(0) - 320; @@ -1872,8 +1885,8 @@ void ObjectsManager::handleCityMap() {  		_vm->_graphicsManager.fadeOutLong();  	_vm->_globals.iRegul = 0;  	_vm->_graphicsManager._noFadingFl = false; -	_vm->_globals._mapCarPosX = getSpriteX(0); -	_vm->_globals._mapCarPosY = getSpriteY(0); +	_mapCarPosX = getSpriteX(0); +	_mapCarPosY = getSpriteY(0);  	removeSprite(0);  	_spritePtr = _vm->_globals.freeMemory(_spritePtr);  	clearScreen(); @@ -1958,7 +1971,7 @@ void ObjectsManager::handleLeftButton() {  	_vm->_globals.GOACTION = false;  	int16 *oldRoute = _vm->_linesManager._route;  	_vm->_linesManager._route = (int16 *)g_PTRNUL; -	if (_vm->_globals._forestFl && _zoneNum >= 20 && _zoneNum <= 23) { +	if (_forestFl && _zoneNum >= 20 && _zoneNum <= 23) {  		if (getSpriteY(0) > 374 && getSpriteY(0) <= 410) {  			_vm->_linesManager._route = (int16 *)g_PTRNUL;  			setSpriteIndex(0, _vm->_globals._oldDirectionSpriteIdx); @@ -2027,7 +2040,7 @@ void ObjectsManager::PARADISE() {  	char result = _vm->_globals._saveData->_data[svField1];  	if (result && _vm->_globals._saveData->_data[svField2] && result != 4 && result > 3) {  		_vm->_fontManager.hideText(5); -		if (!_vm->_globals._forestFl || _zoneNum < 20 || _zoneNum > 23) { +		if (!_forestFl || _zoneNum < 20 || _zoneNum > 23) {  			if (_vm->_graphicsManager._largeScreenFl) {  				_vm->_graphicsManager._scrollStatus = 2;  				if (_vm->_eventsManager._startPos.x + 320 - getSpriteX(0) > 160) { @@ -3955,7 +3968,7 @@ void ObjectsManager::PERSONAGE2(const Common::String &backgroundFile, const Comm  		breakFlag = true;  	} -	if (_vm->_globals._exitId != 8 || _vm->_globals._screenId != 5 || !_vm->_globals._helicopterFl) { +	if (_vm->_globals._exitId != 8 || _vm->_globals._screenId != 5 || !_helicopterFl) {  		if (!_vm->_graphicsManager._noFadingFl)  			_vm->_graphicsManager.fadeOutLong();  		_vm->_graphicsManager._noFadingFl = false; @@ -3968,7 +3981,7 @@ void ObjectsManager::PERSONAGE2(const Common::String &backgroundFile, const Comm  			_vm->_graphicsManager.FIN_VISU();  		clearScreen();  	} else { -		_vm->_globals._helicopterFl = false; +		_helicopterFl = false;  	}  	_vm->_globals.iRegul = 0;  } diff --git a/engines/hopkins/objects.h b/engines/hopkins/objects.h index c10b895399..816e616a3f 100644 --- a/engines/hopkins/objects.h +++ b/engines/hopkins/objects.h @@ -66,10 +66,12 @@ public:  	int _saveLoadX, _saveLoadY;  	int _oldInventoryPosX, _oldInventoryPosY;  	int _oldCharacterPosX, _oldCharacterPosY; +	int _mapCarPosX, _mapCarPosY;  	int _eraseVisibleCounter;  	byte *_saveLoadSprite;  	byte *_saveLoadSprite2;  	byte *_spritePtr; +	byte *_forestSprite;  	const byte *_oldSpriteData;  	bool PERSO_ON;  	bool _saveLoadFl; @@ -90,9 +92,14 @@ public:  	int _oldSpriteIndex;  	bool _oldFlipFl;  	int _curObjectIndex; +	bool _helicopterFl; +	bool _forestFl;  public:  	ObjectsManager(); +	~ObjectsManager(); +  	void setParent(HopkinsEngine *vm); +	void clearAll();  	void changeObject(int objIndex);  	byte *CAPTURE_OBJET(int objIndex, bool mode); diff --git a/engines/hopkins/saveload.cpp b/engines/hopkins/saveload.cpp index e692aef81c..7f0dd9cd60 100644 --- a/engines/hopkins/saveload.cpp +++ b/engines/hopkins/saveload.cpp @@ -146,8 +146,8 @@ Common::Error SaveLoadManager::saveGame(int slot, const Common::String &saveName  	for (int i = 0; i < 35; ++i)  		_vm->_globals._saveData->_inventory[i] = _vm->_globals._inventory[i]; -	_vm->_globals._saveData->_mapCarPosX = _vm->_globals._mapCarPosX; -	_vm->_globals._saveData->_mapCarPosY = _vm->_globals._mapCarPosY; +	_vm->_globals._saveData->_mapCarPosX = _vm->_objectsManager._mapCarPosX; +	_vm->_globals._saveData->_mapCarPosY = _vm->_objectsManager._mapCarPosY;  	/* Create the savegame */  	Common::OutSaveFile *savefile = g_system->getSavefileManager()->openForSaving(_vm->generateSaveName(slot)); @@ -205,8 +205,8 @@ Common::Error SaveLoadManager::loadGame(int slot) {  	_vm->_globals._exitId = _vm->_globals._saveData->_data[svField5];  	_vm->_globals._saveData->_data[svField6] = 0;  	_vm->_globals._screenId = 0; -	_vm->_globals._mapCarPosX = _vm->_globals._saveData->_mapCarPosX; -	_vm->_globals._mapCarPosY = _vm->_globals._saveData->_mapCarPosY; +	_vm->_objectsManager._mapCarPosX = _vm->_globals._saveData->_mapCarPosX; +	_vm->_objectsManager._mapCarPosY = _vm->_globals._saveData->_mapCarPosY;  	return Common::kNoError;  } diff --git a/engines/hopkins/script.cpp b/engines/hopkins/script.cpp index c25aacc414..f124280c75 100644 --- a/engines/hopkins/script.cpp +++ b/engines/hopkins/script.cpp @@ -614,7 +614,7 @@ int ScriptManager::handleOpcode(byte *dataP) {  				_vm->_graphicsManager.fadeOutLong();  			_vm->_globals._disableInventFl = false; -			_vm->_globals._helicopterFl = true; +			_vm->_objectsManager._helicopterFl = true;  			break;  		case 16: diff --git a/engines/hopkins/talk.cpp b/engines/hopkins/talk.cpp index 319b9f93a6..a05e42c2a9 100644 --- a/engines/hopkins/talk.cpp +++ b/engines/hopkins/talk.cpp @@ -884,7 +884,7 @@ void TalkManager::REPONSE2(int a1, int a2) {  	if (a1 == 22 || a1 == 23) {  		_vm->_objectsManager.setFlipSprite(0, false);  		_vm->_objectsManager.setSpriteIndex(0, 62); -		_vm->_objectsManager.SPACTION(_vm->_globals._forestSprite, "2,3,4,5,6,7,8,9,10,11,12,-1,", 0, 0, 4, false); +		_vm->_objectsManager.SPACTION(_vm->_objectsManager._forestSprite, "2,3,4,5,6,7,8,9,10,11,12,-1,", 0, 0, 4, false);  		if (a1 == 22) {  			_vm->_objectsManager.lockAnimX(6, _vm->_objectsManager.getBobPosX(3));  			_vm->_objectsManager.lockAnimX(8, _vm->_objectsManager.getBobPosX(3)); @@ -896,7 +896,7 @@ void TalkManager::REPONSE2(int a1, int a2) {  		_vm->_objectsManager.stopBobAnimation(4);  		_vm->_objectsManager.setBobAnimation(6);  		_vm->_soundManager.PLAY_SAMPLE2(1); -		_vm->_objectsManager.SPACTION1(_vm->_globals._forestSprite, "13,14,15,14,13,12,13,14,15,16,-1,", 0, 0, 4); +		_vm->_objectsManager.SPACTION1(_vm->_objectsManager._forestSprite, "13,14,15,14,13,12,13,14,15,16,-1,", 0, 0, 4);  		do  			_vm->_eventsManager.VBL();  		while (_vm->_objectsManager.getBobAnimDataIdx(6) < 12); @@ -932,7 +932,7 @@ void TalkManager::REPONSE2(int a1, int a2) {  	} else if (a1 == 20 || a1 == 21) {  		_vm->_objectsManager.setFlipSprite(0, true);  		_vm->_objectsManager.setSpriteIndex(0, 62); -		_vm->_objectsManager.SPACTION(_vm->_globals._forestSprite, "2,3,4,5,6,7,8,9,10,11,12,-1,", 0, 0, 4, true); +		_vm->_objectsManager.SPACTION(_vm->_objectsManager._forestSprite, "2,3,4,5,6,7,8,9,10,11,12,-1,", 0, 0, 4, true);  		if (a1 == 20) {  			_vm->_objectsManager.lockAnimX(5, _vm->_objectsManager.getBobPosX(1));  			_vm->_objectsManager.lockAnimX(7, _vm->_objectsManager.getBobPosX(1)); @@ -944,7 +944,7 @@ void TalkManager::REPONSE2(int a1, int a2) {  		_vm->_objectsManager.stopBobAnimation(2);  		_vm->_objectsManager.setBobAnimation(5);  		_vm->_soundManager.PLAY_SAMPLE2(1); -		_vm->_objectsManager.SPACTION1(_vm->_globals._forestSprite, "13,14,15,14,13,12,13,14,15,16,-1,", 0, 0, 4); +		_vm->_objectsManager.SPACTION1(_vm->_objectsManager._forestSprite, "13,14,15,14,13,12,13,14,15,16,-1,", 0, 0, 4);  		do  			_vm->_eventsManager.VBL();  		while (_vm->_objectsManager.getBobAnimDataIdx(5) < 12); | 
