diff options
| -rw-r--r-- | engines/xeen/clouds/clouds_game.cpp | 38 | ||||
| -rw-r--r-- | engines/xeen/clouds/clouds_game.h | 42 | ||||
| -rw-r--r-- | engines/xeen/darkside/darkside_game.cpp | 228 | ||||
| -rw-r--r-- | engines/xeen/darkside/darkside_game.h | 50 | ||||
| -rw-r--r-- | engines/xeen/detection.cpp | 6 | ||||
| -rw-r--r-- | engines/xeen/module.mk | 2 | ||||
| -rw-r--r-- | engines/xeen/worldofxeen/worldofxeen_game.cpp | 183 | ||||
| -rw-r--r-- | engines/xeen/worldofxeen/worldofxeen_game.h | 30 | 
8 files changed, 208 insertions, 371 deletions
| diff --git a/engines/xeen/clouds/clouds_game.cpp b/engines/xeen/clouds/clouds_game.cpp deleted file mode 100644 index 4987ce05dd..0000000000 --- a/engines/xeen/clouds/clouds_game.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "xeen/clouds/clouds_game.h" - -namespace Xeen { - -CloudsEngine::CloudsEngine(OSystem *syst, const XeenGameDescription *gameDesc) -		: XeenEngine(syst, gameDesc) { -} - -void CloudsEngine::playGame() { -	cloudsIntro(); -} - -void CloudsEngine::cloudsIntro() { -} - -} // End of namespace Xeen diff --git a/engines/xeen/clouds/clouds_game.h b/engines/xeen/clouds/clouds_game.h deleted file mode 100644 index a8c4fbea3b..0000000000 --- a/engines/xeen/clouds/clouds_game.h +++ /dev/null @@ -1,42 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef XEEN_CLOUDS_GAME_H -#define XEEN_CLOUDS_GAME_H - -#include "xeen/xeen.h" - -namespace Xeen { - -class CloudsEngine : virtual public XeenEngine { -protected: -	void cloudsIntro(); - -	virtual void playGame(); -public: -	CloudsEngine(OSystem *syst, const XeenGameDescription *gameDesc); -	virtual ~CloudsEngine() {} -}; - -} // End of namespace Xeen - -#endif /* XEEN_CLOUDS_GAME_H */ diff --git a/engines/xeen/darkside/darkside_game.cpp b/engines/xeen/darkside/darkside_game.cpp deleted file mode 100644 index fe8c161287..0000000000 --- a/engines/xeen/darkside/darkside_game.cpp +++ /dev/null @@ -1,228 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#include "xeen/darkside/darkside_game.h" -#include "xeen/resources.h" -#include "xeen/screen.h" - -namespace Xeen { - -DarkSideEngine::DarkSideEngine(OSystem *syst, const XeenGameDescription *gameDesc) -		: XeenEngine(syst, gameDesc) { -} - -void DarkSideEngine::playGame() { -	// TODO -} - -bool DarkSideEngine::pause(uint amount) { -	while (!shouldQuit() && _events->timeElapsed() < amount) { -		_events->pollEventsAndWait(); -		if (_events->isKeyMousePressed()) -			return true; -	} - -	return shouldQuit(); -} - -void DarkSideEngine::darkSideIntro() { -	/* -	showTitle1(); -	if (shouldQuit()) -		return; - -	showTitle2(); -	if (shouldQuit()) -		return; -		*/ -	// TODO: Only show startup if not seen before -	showStartSequence(); -} - -void DarkSideEngine::showTitle1() { -	// TODO: Starting method, and sound -	//sub_28F40 -	_screen->loadPalette("dark.pal"); -	SpriteResource nwc[4] = { -		SpriteResource("nwc1.int"), SpriteResource("nwc2.int"), -		SpriteResource("nwc3.int"), SpriteResource("nwc4.int") -	}; -	Common::File voc[3]; -	voc[0].open("dragon1.voc"); -	voc[1].open("dragon2.voc"); -	voc[2].open("dragon3.voc"); - -	// Load backgrounds -	_screen->loadBackground("nwc1.raw"); -	_screen->loadPage(0); -	_screen->loadBackground("nwc2.raw"); -	_screen->loadPage(1); - -	// Draw the screen and fade it in -	_screen->horizMerge(0); -	_screen->draw(); -	_screen->fadeIn(4); - -	// Initial loop for dragon roaring -	int nwcIndex = 0, nwcFrame = 0; -	for (int idx = 0; idx < 55 && !shouldQuit(); ++idx) { -		// Render the next frame -		_events->updateGameCounter(); -		_screen->vertMerge(0); -		nwc[nwcIndex].draw(*_screen, nwcFrame); -		_screen->draw(); - -		switch (idx) { -		case 17: -			_sound->proc2(voc[0]); -			break; -		case 34: -		case 44: -			++nwcIndex; -			nwcFrame = 0; -			break; -		case 35: -			_sound->proc2(voc[1]); -			break; -		default: -			++nwcFrame; -		} - -		if (pause(2)) -			return; -	} - -	// Loop for dragon using flyspray -	for (int idx = 0; idx < 42 && !shouldQuit(); ++idx) { -		_events->updateGameCounter(); -		_screen->vertMerge(SCREEN_HEIGHT); -		nwc[3].draw(*_screen, idx); -		_screen->draw(); - -		switch (idx) { -		case 3: -			_sound->startMusic(40); -			break; -		case 11: -			_sound->startMusic(0); -		case 27: -		case 30: -			_sound->startMusic(3); -			break; -		case 31: -			_sound->proc2(voc[2]); -			break; -		case 33: -			_sound->startMusic(2); -			break; -		default: -			break; -		} - -		if (pause(2)) -			return; -	} - -	// Pause for a bit -	pause(10); -} - -void DarkSideEngine::showTitle2() { -	_screen->fadeOut(8); -	//TODO: Stuff - -	_screen->loadBackground("jvc.raw"); -	_screen->draw(); -	_screen->fadeIn(4); -	 -	_events->updateGameCounter(); -	pause(60); -} -	 -void DarkSideEngine::showStartSequence() { -	_screen->fadeOut(8); -	_screen->loadBackground("pyramid2.raw"); -	_screen->loadPage(0); -	_screen->loadPage(1); -	_screen->loadBackground("pyramid3.raw"); -	_screen->saveBackground(1); - -	SpriteResource sprites[3] = { -		SpriteResource("title.int"), SpriteResource("pyratop.int"), SpriteResource("pyramid.int") -	}; -	Common::File voc[2]; -	voc[0].open("pharoh1a.voc"); -	voc[1].open("pharoh1b.voc"); - -	_screen->vertMerge(SCREEN_HEIGHT); -	_screen->loadPage(0); -	_screen->loadPage(1); - -	int yp = 0; -	int frame = 0; -	int idx1 = 0; -	bool skipElapsed = false; -	uint32 timeExpired = 0; -//	bool fadeFlag = true; - -	for (int idx = 200; idx > 0; ) { -		_events->updateGameCounter(); -		_screen->vertMerge(yp); - -		sprites[0].draw(*_screen, 0); -		if (frame) -			sprites[0].draw(*_screen, frame); - -		idx1 = (idx1 + 1) % 4; -		if (!idx1) -			frame = (frame + 1) % 10; - -		_screen->draw(); -		if (!skipElapsed) { -			timeExpired = MAX(_events->timeElapsed(), (uint32)1); -			skipElapsed = true; -		} - -		idx -= timeExpired; -		frame = MIN(frame + timeExpired, (uint)200); - -		while (_events->timeElapsed() < 1) { -			_events->pollEventsAndWait(); -			if (_events->isKeyMousePressed()) -				return; -		} -	} - -	_screen->vertMerge(SCREEN_HEIGHT); -	_screen->saveBackground(1); -	_screen->draw(); -	_screen->freePages(); - -	_events->updateGameCounter(); -	pause(30); - -	// TODO: More -	_sound->playSong(voc[0]); -	_sound->playSong(voc[1]); -} - -} // End of namespace Xeen diff --git a/engines/xeen/darkside/darkside_game.h b/engines/xeen/darkside/darkside_game.h deleted file mode 100644 index 979885cc13..0000000000 --- a/engines/xeen/darkside/darkside_game.h +++ /dev/null @@ -1,50 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef XEEN_DARKSIDE_GAME_H -#define XEEN_DARKSIDE_GAME_H - -#include "xeen/xeen.h" - -namespace Xeen { - -class DarkSideEngine : virtual public XeenEngine { -private: -	bool pause(uint amount); - -	void showTitle1(); - -	void showTitle2(); - -	void showStartSequence(); -protected: -	void darkSideIntro(); - -	virtual void playGame(); -public: -	DarkSideEngine(OSystem *syst, const XeenGameDescription *gameDesc); -	virtual ~DarkSideEngine() {} -}; - -} // End of namespace Xeen - -#endif /* XEEN_DARKSIDE_GAME_H */ diff --git a/engines/xeen/detection.cpp b/engines/xeen/detection.cpp index 3bd4c22f97..64b28bf687 100644 --- a/engines/xeen/detection.cpp +++ b/engines/xeen/detection.cpp @@ -21,8 +21,6 @@   */  #include "xeen/xeen.h" -#include "xeen/clouds/clouds_game.h" -#include "xeen/darkside/darkside_game.h"  #include "xeen/worldofxeen/worldofxeen_game.h"  #include "base/plugins.h" @@ -116,11 +114,7 @@ bool XeenMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGame  	switch (gd->gameID) {  	case Xeen::GType_Clouds: -		*engine = new Xeen::CloudsEngine(syst, gd); -		break;  	case Xeen::GType_DarkSide: -		*engine = new Xeen::DarkSideEngine(syst, gd); -		break;  	case Xeen::GType_WorldOfXeen:  		*engine = new Xeen::WorldOfXeenEngine(syst, gd);  		break; diff --git a/engines/xeen/module.mk b/engines/xeen/module.mk index 4e64b8e815..711be847d1 100644 --- a/engines/xeen/module.mk +++ b/engines/xeen/module.mk @@ -1,8 +1,6 @@  MODULE := engines/xeen  MODULE_OBJS := \ -	clouds/clouds_game.o \ -	darkside/darkside_game.o \  	worldofxeen/worldofxeen_game.o \  	character.o \  	combat.o \ diff --git a/engines/xeen/worldofxeen/worldofxeen_game.cpp b/engines/xeen/worldofxeen/worldofxeen_game.cpp index bcfbaa1675..3b0efb2aac 100644 --- a/engines/xeen/worldofxeen/worldofxeen_game.cpp +++ b/engines/xeen/worldofxeen/worldofxeen_game.cpp @@ -25,12 +25,191 @@  namespace Xeen {  WorldOfXeenEngine::WorldOfXeenEngine(OSystem *syst, const XeenGameDescription *gameDesc) -		: CloudsEngine(syst, gameDesc), DarkSideEngine(syst, gameDesc),  -		XeenEngine(syst, gameDesc) { +		: XeenEngine(syst, gameDesc) {  }  void WorldOfXeenEngine::playGame () {  	XeenEngine::playGame();  } +void WorldOfXeenEngine::showDarkSideTitle() { +	showDarkSideTitle1(); +	if (shouldQuit()) +	return; + +	showDarkSideTitle2(); +	if (shouldQuit()) +	return; +	 +	// TODO: Only show intro sequence if not seen before +	showDarkSideIntroSequence(); +} + +void WorldOfXeenEngine::showDarkSideTitle1() { +	// TODO: Starting method, and sound +	//sub_28F40 +	_screen->loadPalette("dark.pal"); +	SpriteResource nwc[4] = { +		SpriteResource("nwc1.int"), SpriteResource("nwc2.int"), +		SpriteResource("nwc3.int"), SpriteResource("nwc4.int") +	}; +	Common::File voc[3]; +	voc[0].open("dragon1.voc"); +	voc[1].open("dragon2.voc"); +	voc[2].open("dragon3.voc"); + +	// Load backgrounds +	_screen->loadBackground("nwc1.raw"); +	_screen->loadPage(0); +	_screen->loadBackground("nwc2.raw"); +	_screen->loadPage(1); + +	// Draw the screen and fade it in +	_screen->horizMerge(0); +	_screen->draw(); +	_screen->fadeIn(4); + +	// Initial loop for dragon roaring +	int nwcIndex = 0, nwcFrame = 0; +	for (int idx = 0; idx < 55 && !shouldQuit(); ++idx) { +		// Render the next frame +		_events->updateGameCounter(); +		_screen->vertMerge(0); +		nwc[nwcIndex].draw(*_screen, nwcFrame); +		_screen->draw(); + +		switch (idx) { +		case 17: +			_sound->proc2(voc[0]); +			break; +		case 34: +		case 44: +			++nwcIndex; +			nwcFrame = 0; +			break; +		case 35: +			_sound->proc2(voc[1]); +			break; +		default: +			++nwcFrame; +		} + +		if (_events->wait(2, true)) +			return; +	} + +	// Loop for dragon using flyspray +	for (int idx = 0; idx < 42 && !shouldQuit(); ++idx) { +		_events->updateGameCounter(); +		_screen->vertMerge(SCREEN_HEIGHT); +		nwc[3].draw(*_screen, idx); +		_screen->draw(); + +		switch (idx) { +		case 3: +			_sound->startMusic(40); +			break; +		case 11: +			_sound->startMusic(0); +		case 27: +		case 30: +			_sound->startMusic(3); +			break; +		case 31: +			_sound->proc2(voc[2]); +			break; +		case 33: +			_sound->startMusic(2); +			break; +		default: +			break; +		} + +		if (_events->wait(2, true)) +			return; +	} + +	// Pause for a bit +	_events->wait(10, true); +} + +void WorldOfXeenEngine::showDarkSideTitle2() { +	_screen->fadeOut(8); +	//TODO: Stuff + +	_screen->loadBackground("jvc.raw"); +	_screen->draw(); +	_screen->fadeIn(4); + +	_events->updateGameCounter(); +	_events->wait(60, true); +} + +void WorldOfXeenEngine::showDarkSideIntroSequence() { +	_screen->fadeOut(8); +	_screen->loadBackground("pyramid2.raw"); +	_screen->loadPage(0); +	_screen->loadPage(1); +	_screen->loadBackground("pyramid3.raw"); +	_screen->saveBackground(1); + +	SpriteResource sprites[3] = { +		SpriteResource("title.int"), SpriteResource("pyratop.int"), SpriteResource("pyramid.int") +	}; +	Common::File voc[2]; +	voc[0].open("pharoh1a.voc"); +	voc[1].open("pharoh1b.voc"); + +	_screen->vertMerge(SCREEN_HEIGHT); +	_screen->loadPage(0); +	_screen->loadPage(1); + +	int yp = 0; +	int frame = 0; +	int idx1 = 0; +	bool skipElapsed = false; +	uint32 timeExpired = 0; +	//	bool fadeFlag = true; + +	for (int idx = 200; idx > 0; ) { +		_events->updateGameCounter(); +		_screen->vertMerge(yp); + +		sprites[0].draw(*_screen, 0); +		if (frame) +			sprites[0].draw(*_screen, frame); + +		idx1 = (idx1 + 1) % 4; +		if (!idx1) +			frame = (frame + 1) % 10; + +		_screen->draw(); +		if (!skipElapsed) { +			timeExpired = MAX(_events->timeElapsed(), (uint32)1); +			skipElapsed = true; +		} + +		idx -= timeExpired; +		frame = MIN(frame + timeExpired, (uint)200); + +		while (_events->timeElapsed() < 1) { +			_events->pollEventsAndWait(); +			if (_events->isKeyMousePressed()) +				return; +		} +	} + +	_screen->vertMerge(SCREEN_HEIGHT); +	_screen->saveBackground(1); +	_screen->draw(); +	_screen->freePages(); + +	_events->updateGameCounter(); +	_events->wait(30, true); + +	// TODO: More +	_sound->playSong(voc[0]); +	_sound->playSong(voc[1]); +} +  } // End of namespace Xeen diff --git a/engines/xeen/worldofxeen/worldofxeen_game.h b/engines/xeen/worldofxeen/worldofxeen_game.h index 7227e11fc4..9a3cee185d 100644 --- a/engines/xeen/worldofxeen/worldofxeen_game.h +++ b/engines/xeen/worldofxeen/worldofxeen_game.h @@ -23,12 +23,36 @@  #ifndef XEEN_WORLDOFXEEN_GAME_H  #define XEEN_WORLDOFXEEN_GAME_H -#include "xeen/clouds/clouds_game.h" -#include "xeen/darkside/darkside_game.h" +#include "xeen/xeen.h"  namespace Xeen { -class WorldOfXeenEngine : public DarkSideEngine, CloudsEngine { +/** + * Implements a descendant of the base Xeen engine to handle  + * Clouds of Xeen, Dark Side of Xeen, and Worlds of Xeen specific + * game code + */ +class WorldOfXeenEngine: public XeenEngine { +private: +	/** +	 * Shows the first part of the Dark Side of Xeen title sequence +	 */ +	void showDarkSideTitle1(); + +	/** +	 * Shows the second part of the Dark Side of Xeen title sequence +	 */ +	void showDarkSideTitle2(); + +	/** +	 * Shows the Dark Side of Xeen title sequence +	 */ +	void showDarkSideTitle(); + +	/** +	 * Shows the Dark Side of Xeen introduction sequence +	 */ +	void showDarkSideIntroSequence();  protected:  	virtual void playGame();  public: | 
