diff options
| -rw-r--r-- | engines/tsage/blue_force/blueforce_logic.cpp | 2 | ||||
| -rw-r--r-- | engines/tsage/blue_force/blueforce_scenes1.cpp | 41 | ||||
| -rw-r--r-- | engines/tsage/blue_force/blueforce_scenes1.h | 10 | ||||
| -rw-r--r-- | engines/tsage/globals.cpp | 36 | ||||
| -rw-r--r-- | engines/tsage/globals.h | 6 | ||||
| -rw-r--r-- | engines/tsage/graphics.cpp | 18 | ||||
| -rw-r--r-- | engines/tsage/graphics.h | 2 | ||||
| -rw-r--r-- | engines/tsage/scenes.cpp | 5 | ||||
| -rw-r--r-- | engines/tsage/staticres.cpp | 14 | ||||
| -rw-r--r-- | engines/tsage/staticres.h | 13 | 
10 files changed, 96 insertions, 51 deletions
| diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp index 0238475533..ec85e48fbf 100644 --- a/engines/tsage/blue_force/blueforce_logic.cpp +++ b/engines/tsage/blue_force/blueforce_logic.cpp @@ -186,7 +186,7 @@ void SceneExt::postInit(SceneObjectList *OwnerList) {  	Scene::postInit(OwnerList);  	if (BF_GLOBALS._v4CEA2) {  		// Blank out the bottom portion of the screen -		BF_GLOBALS._v51C24 = BF_INTERFACE_Y; +		BF_GLOBALS._interfaceY = BF_INTERFACE_Y;  		Rect r(0, BF_INTERFACE_Y, SCREEN_WIDTH, SCREEN_HEIGHT);  		BF_GLOBALS.gfxManager().getSurface().fillRect(r, 0); diff --git a/engines/tsage/blue_force/blueforce_scenes1.cpp b/engines/tsage/blue_force/blueforce_scenes1.cpp index e5d66bcbb5..650b63c24b 100644 --- a/engines/tsage/blue_force/blueforce_scenes1.cpp +++ b/engines/tsage/blue_force/blueforce_scenes1.cpp @@ -36,6 +36,17 @@ namespace BlueForce {   *   *--------------------------------------------------------------------------*/ +void Scene100::Text::dispatch() { +	SceneText::dispatch(); + +	// Keep the second text string below the first one +	Scene100 *scene = (Scene100 *)BF_GLOBALS._sceneManager._scene; +	Common::Point &pt = scene->_action1._sceneText1._position; +	scene->_action1._sceneText2.setPosition(Common::Point(pt.x,  +		pt.y + scene->_action1._textHeight)); +} + +  void Scene100::Action1::signal() {  	static byte black[3] = { 0, 0, 0 }; @@ -46,9 +57,10 @@ void Scene100::Action1::signal() {  		break;  	case 1: {  		Common::String msg1 = _resourceManager->getMessage(100, _state++); -		if (!msg1.compareTo("LASTCREDIT")) { +		if (msg1.compareTo("LASTCREDIT")) {  			Common::String msg2 = _resourceManager->getMessage(100, _state++);  			setTextStrings(msg1, msg2, this); +			--_actionIndex;  		} else {  			setTextStrings(BF_NAME, BF_ALL_RIGHTS_RESERVED, this); @@ -76,11 +88,11 @@ void Scene100::Action1::setTextStrings(const Common::String &msg1, const Common:  	_sceneText1._fontNumber = 10;  	_sceneText1._width = 160;  	_sceneText1._textMode = ALIGN_RIGHT; -	_sceneText1._color1 = _globals->_fontColors.background; -	_sceneText1._color2 = _globals->_fontColors.foreground; -	_sceneText1._color3 = _globals->_fontColors.background; +	_sceneText1._color1 = BF_GLOBALS._scenePalette._colors.foreground; +	_sceneText1._color2 = BF_GLOBALS._scenePalette._colors.background; +	_sceneText1._color3 = BF_GLOBALS._scenePalette._colors.foreground;  	_sceneText1.setup(msg1); -	_sceneText1.fixPriority(-1); +	_sceneText1.fixPriority(255);  	_sceneText1.setPosition(Common::Point(  		(SCREEN_WIDTH - _sceneText1.getFrame().getBounds().width()) / 2, 202));  	_sceneText1._moveRate = 30; @@ -90,11 +102,11 @@ void Scene100::Action1::setTextStrings(const Common::String &msg1, const Common:  	_sceneText2._fontNumber = 10;  	_sceneText2._width = _sceneText1._width;  	_sceneText2._textMode = _sceneText1._textMode; -	_sceneText2._color1 = _globals->_fontColors.background; -	_sceneText2._color2 = _globals->_fontColors.foreground; -	_sceneText2._color3 = _globals->_fontColors.background; -	_sceneText2.setup(msg1); -	_sceneText2.fixPriority(-1); +	_sceneText2._color1 = _sceneText1._color1; +	_sceneText2._color2 = 31; +	_sceneText2._color3 = _sceneText1._color3; +	_sceneText2.setup(msg2); +	_sceneText2.fixPriority(255);  	GfxSurface textSurface = _sceneText2.getFrame();  	_sceneText2.setPosition(Common::Point((SCREEN_WIDTH - textSurface.getBounds().width()) / 2, 202));  	_sceneText2._moveRate = 30; @@ -157,7 +169,7 @@ void Scene100::postInit(SceneObjectList *OwnerList) {  	BF_GLOBALS._scenePalette.loadPalette(2);  	BF_GLOBALS._v51C44 = 1;  	Scene::postInit(); -	BF_GLOBALS._v51C24 = 200; +	BF_GLOBALS._interfaceY = SCREEN_HEIGHT;  	_globals->_player.enableControl();  	_globals->_player.hide(); @@ -168,16 +180,13 @@ void Scene100::postInit(SceneObjectList *OwnerList) {  		// Title  		loadScene(100);  		BF_GLOBALS._sound1.play(2); -//		setAction(&_action2, this); +		setAction(&_action2, this);  	} else {  		// Credits  		loadScene(101);  		BF_GLOBALS._sound1.play(118); -//		setAction(&_action1, this); +		setAction(&_action1, this);  	} - -	loadScene(20); -	setZoomPercents(60, 85, 200, 100);  }  void Scene100::signal() { diff --git a/engines/tsage/blue_force/blueforce_scenes1.h b/engines/tsage/blue_force/blueforce_scenes1.h index d6cde0a44d..0769c6e3c6 100644 --- a/engines/tsage/blue_force/blueforce_scenes1.h +++ b/engines/tsage/blue_force/blueforce_scenes1.h @@ -39,12 +39,20 @@ namespace BlueForce {  using namespace TsAGE;  class Scene100: public SceneExt { +	/* Support classes */ +	class Text: public SceneText { +	public: +		virtual Common::String getClassName() { return "BF100Text"; } +		virtual void dispatch(); +	}; +  	/* Actions */  	class Action1: public ActionExt {  	private:  		void setTextStrings(const Common::String &msg1, const Common::String &msg2, Action *action);  	public: -		SceneText _sceneText1, _sceneText2; +		Text _sceneText1; +		SceneText _sceneText2;  		int _textHeight;  		virtual Common::String getClassName() { return "BF100Action1"; } diff --git a/engines/tsage/globals.cpp b/engines/tsage/globals.cpp index ce37004206..47c83fcc94 100644 --- a/engines/tsage/globals.cpp +++ b/engines/tsage/globals.cpp @@ -51,7 +51,7 @@ static SavedObject *classFactoryProc(const Common::String &className) {  /*--------------------------------------------------------------------------*/  Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface), -		_randomSource("tsage"), _unkColor1(0), _unkColor2(255), _unkColor3(255) { +		_randomSource("tsage"), _color1(0), _color2(255), _color3(255) {  	reset();  	_stripNum = 0;  	_gfxEdgeAdjust = 3; @@ -64,18 +64,26 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface  		_fontColors.foreground = 6;  		_dialogCenter.y = 80;  		// Workaround in order to use later version of the engine -		_unkColor1 = _gfxColors.foreground; -		_unkColor2 = _gfxColors.foreground; -		_unkColor3 = _gfxColors.foreground; +		_color1 = _gfxColors.foreground; +		_color2 = _gfxColors.foreground; +		_color3 = _gfxColors.foreground; +	} else if (_vm->getGameID() == GType_BlueForce) { +		// Blue Force +		_gfxFontNumber = 0; +		_gfxColors.background = 89; +		_gfxColors.foreground = 83; +		_fontColors.background = 88; +		_fontColors.foreground = 92; +		_dialogCenter.y = 165;  	} else if ((_vm->getGameID() == GType_Ringworld) &&  (_vm->getFeatures() & GF_CD)) {  		_gfxFontNumber = 50;  		_gfxColors.background = 53;  		_gfxColors.foreground = 0;  		_fontColors.background = 51;  		_fontColors.foreground = 54; -		_unkColor1 = 18; -		_unkColor2 = 18; -		_unkColor3 = 18; +		_color1 = 18; +		_color2 = 18; +		_color3 = 18;  	} else {  		_gfxFontNumber = 50;  		_gfxColors.background = 53; @@ -83,9 +91,9 @@ Globals::Globals() : _dialogCenter(160, 140), _gfxManagerInstance(_screenSurface  		_fontColors.background = 51;  		_fontColors.foreground = 54;  		// Workaround in order to use later version of the engine -		_unkColor1 = _gfxColors.foreground; -		_unkColor2 = _gfxColors.foreground; -		_unkColor3 = _gfxColors.foreground; +		_color1 = _gfxColors.foreground; +		_color2 = _gfxColors.foreground; +		_color3 = _gfxColors.foreground;  	}  	_screenSurface.setScreenSurface();  	_gfxManagers.push_back(&_gfxManagerInstance); @@ -143,9 +151,9 @@ void Globals::synchronize(Serializer &s) {  	s.syncAsSint32LE(_fontColors.foreground);  	if (s.getVersion() >= 4) { -		s.syncAsByte(_unkColor1); -		s.syncAsByte(_unkColor2); -		s.syncAsByte(_unkColor3); +		s.syncAsByte(_color1); +		s.syncAsByte(_color2); +		s.syncAsByte(_color3);  	}  	s.syncAsSint16LE(_dialogCenter.x); s.syncAsSint16LE(_dialogCenter.y); @@ -172,7 +180,7 @@ void Globals::dispatchSounds() {  namespace BlueForce {  BlueForceGlobals::BlueForceGlobals(): Globals() { -	_v51C24 = 0; +	_interfaceY = 0;  	_v51C44 = 1;  	_v4CEA2 = 0;  } diff --git a/engines/tsage/globals.h b/engines/tsage/globals.h index b581294883..c8cfc1c323 100644 --- a/engines/tsage/globals.h +++ b/engines/tsage/globals.h @@ -54,7 +54,7 @@ public:  	int _gfxFontNumber;  	GfxColors _gfxColors;  	GfxColors _fontColors; -	byte _unkColor1, _unkColor2, _unkColor3; +	byte _color1, _color2, _color3;  	SoundManager _soundManager;  	Common::Point _dialogCenter;  	WalkRegions _walkRegions; @@ -99,7 +99,7 @@ public:  extern Globals *_globals;  #define GLOBALS (*_globals) -#define BF_GLOBALS (*((BlueForceGlobals *)_globals)) +#define BF_GLOBALS (*((::TsAGE::BlueForce::BlueForceGlobals *)_globals))  // Note: Currently this can't be part of the _globals structure, since it needs to be constructed  // prior to many of the fields in Globals execute their constructors @@ -119,7 +119,7 @@ public:  	int _v501FC;  	int _v51C42;  	int _v51C44; -	int _v51C24; +	int _interfaceY;  	BlueForceGlobals();  	virtual Common::String getClassName() { return "BFGlobals"; } diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp index 7e0994696e..1884bfb4f5 100644 --- a/engines/tsage/graphics.cpp +++ b/engines/tsage/graphics.cpp @@ -626,9 +626,9 @@ void GfxElement::setDefaults() {  	_fontNumber = _globals->_gfxFontNumber;  	_colors = _globals->_gfxColors;  	_fontColors = _globals->_fontColors; -	_unkColor1 = _globals->_unkColor1; -	_unkColor2 = _globals->_unkColor2; -	_unkColor3 = _globals->_unkColor3; +	_color1 = _globals->_color1; +	_color2 = _globals->_color2; +	_color3 = _globals->_color3;  }  /** @@ -824,9 +824,9 @@ void GfxMessage::draw() {  	gfxManager.setFillFlag(false);  	gfxManager._font.setFontNumber(_fontNumber); -	gfxManager._font._colors.foreground = this->_unkColor1; -	gfxManager._font._colors2.background = this->_unkColor2; -	gfxManager._font._colors2.foreground = this->_unkColor3; +	gfxManager._font._colors.foreground = this->_color1; +	gfxManager._font._colors2.background = this->_color2; +	gfxManager._font._colors2.foreground = this->_color3;  	// Display the text  	gfxManager._font.writeLines(_message.c_str(), _bounds, _textAlign); @@ -867,9 +867,9 @@ void GfxButton::draw() {  	gfxManager._font.setFontNumber(_fontNumber);  	// -	gfxManager._font._colors.foreground = this->_unkColor1; -	gfxManager._font._colors2.background = this->_unkColor2; -	gfxManager._font._colors2.foreground = this->_unkColor3; +	gfxManager._font._colors.foreground = this->_color1; +	gfxManager._font._colors2.background = this->_color2; +	gfxManager._font._colors2.foreground = this->_color3;  	// Display the button's text  	Rect tempRect(_bounds); diff --git a/engines/tsage/graphics.h b/engines/tsage/graphics.h index 45b53612e5..06b482d7b5 100644 --- a/engines/tsage/graphics.h +++ b/engines/tsage/graphics.h @@ -177,7 +177,7 @@ public:  	uint16 _fontNumber;  	GfxColors _colors;  	GfxColors _fontColors; -	byte _unkColor1, _unkColor2, _unkColor3; +	byte _color1, _color2, _color3;  	uint16 _keycode;  public:  	GfxElement(); diff --git a/engines/tsage/scenes.cpp b/engines/tsage/scenes.cpp index 181a927c13..53e48a1d21 100644 --- a/engines/tsage/scenes.cpp +++ b/engines/tsage/scenes.cpp @@ -424,6 +424,11 @@ void Scene::refreshBackground(int xAmount, int yAmount) {  								(xSectionSrc + 1) * 160, (ySectionSrc + 1) * 100);  						Rect destBounds(xSectionDest * 160, ySectionDest * 100,  								(xSectionDest + 1) * 160, (ySectionDest + 1) * 100); +						if (_vm->getGameID() == GType_BlueForce) { +							// For Blue Force, if the scene has an interface area, exclude it from the copy +							srcBounds.bottom = MIN<int16>(srcBounds.bottom, BF_GLOBALS._interfaceY); +							destBounds.bottom = MIN<int16>(destBounds.bottom, BF_GLOBALS._interfaceY); +						}  						_backSurface.copyFrom(_backSurface, srcBounds, destBounds);  					} diff --git a/engines/tsage/staticres.cpp b/engines/tsage/staticres.cpp index 62a22cbe82..deb6fd61a6 100644 --- a/engines/tsage/staticres.cpp +++ b/engines/tsage/staticres.cpp @@ -73,7 +73,6 @@ const char *SAVE_ERROR_MSG = "Error occurred saving game. Please do not try to r  const char *SAVING_NOT_ALLOWED_MSG = "Saving is not allowed at this time.";  const char *RESTORING_NOT_ALLOWED_MSG = "Restoring is not allowed at this time.";  const char *RESTART_CONFIRM_MSG = "Do you want to restart your game?"; -const char *WATCH_INTRO_MSG = "Do you wish to watch the introduction?";  const char *INV_EMPTY_MSG = "You have nothing in your possesion.";  const char *HELP_MSG = "Ringworld\rRevenge of the Patriarch\x14\rScummVM Version\r\r\ @@ -93,12 +92,16 @@ const char *SOUND_BTN_STRING = "Sound";  const char *RESUME_BTN_STRING = " Resume \rplay";  const char *LOOK_BTN_STRING = "Look";  const char *PICK_BTN_STRING = "Pick"; -const char *START_PLAY_BTN_STRING = " Start Play "; -const char *INTRODUCTION_BTN_STRING = "Introduction";  namespace Ringworld { +// Dialog resources +const char *WATCH_INTRO_MSG = "Do you wish to watch the introduction?"; +const char *START_PLAY_BTN_STRING = " Start Play "; +const char *INTRODUCTION_BTN_STRING = "Introduction"; + +// Scene specific resources  const char *EXIT_MSG = "   EXIT   ";  const char *SCENE6100_CAREFUL = "Be careful! The probe cannot handle too much of that.";  const char *SCENE6100_TOUGHER = "Hey! This is tougher than it looks!"; @@ -125,6 +128,11 @@ const char *DEMO_RESUME_BTN_STRING = "Resume";  namespace BlueForce { +// Dialog resources +const char *WATCH_INTRO_MSG = "Do you wish to watch the introduction?"; +const char *START_PLAY_BTN_STRING = " Play "; +const char *INTRODUCTION_BTN_STRING = " Watch "; +  // Blue Force general messages  const char *BF_NAME = "Blue Force";  const char *BF_COPYRIGHT = " Copyright, 1993 Tsunami Media, Inc."; diff --git a/engines/tsage/staticres.h b/engines/tsage/staticres.h index 702e767aaf..290d627090 100644 --- a/engines/tsage/staticres.h +++ b/engines/tsage/staticres.h @@ -40,7 +40,6 @@ extern const char *SAVE_ERROR_MSG;  extern const char *SAVING_NOT_ALLOWED_MSG;  extern const char *RESTORING_NOT_ALLOWED_MSG;  extern const char *RESTART_CONFIRM_MSG; -extern const char *WATCH_INTRO_MSG;  // Dialogs  extern const char *HELP_MSG; @@ -59,11 +58,14 @@ extern const char *RESUME_BTN_STRING;  extern const char *LOOK_BTN_STRING;  extern const char *PICK_BTN_STRING;  extern const char *INV_EMPTY_MSG; -extern const char *START_PLAY_BTN_STRING; -extern const char *INTRODUCTION_BTN_STRING;  namespace Ringworld { +// Dialog resources +extern const char *WATCH_INTRO_MSG; +extern const char *START_PLAY_BTN_STRING; +extern const char *INTRODUCTION_BTN_STRING; +  // Scene specific resources  extern const char *EXIT_MSG;  extern const char *SCENE6100_CAREFUL; @@ -92,6 +94,11 @@ extern const char *DEMO_RESUME_BTN_STRING;  namespace BlueForce { +// Dialog resources +extern const char *WATCH_INTRO_MSG; +extern const char *START_PLAY_BTN_STRING; +extern const char *INTRODUCTION_BTN_STRING; +  // Blue Force messages  extern const char *BF_NAME;  extern const char *BF_COPYRIGHT; | 
