diff options
| -rw-r--r-- | saga/events.cpp | 2 | ||||
| -rw-r--r-- | saga/ite_introproc.cpp | 4 | ||||
| -rw-r--r-- | saga/scene.cpp | 36 | ||||
| -rw-r--r-- | saga/scene.h | 8 | 
4 files changed, 17 insertions, 33 deletions
diff --git a/saga/events.cpp b/saga/events.cpp index ec23f8f12e..05ea6563e7 100644 --- a/saga/events.cpp +++ b/saga/events.cpp @@ -178,7 +178,7 @@ int Events::handleContinuous(EVENT *event) {  			_vm->_scene->getBGMaskInfo(w, h, mask_buf, len);  			_vm->transitionDissolve(buf_info.bg_buf, buf_info.bg_buf_w,   					buf_info.bg_buf_h, buf_info.bg_buf_w, mask_buf, w, h, 1,  -					(320 - w) / 2, (200 - h) / 2, event_pc); +					(_vm->getDisplayWidth() - w) / 2, (_vm->getDisplayHeight() - h) / 2, event_pc);  			break;  		default:  			break; diff --git a/saga/ite_introproc.cpp b/saga/ite_introproc.cpp index 00c2d7cb77..322a88e4a5 100644 --- a/saga/ite_introproc.cpp +++ b/saga/ite_introproc.cpp @@ -46,11 +46,11 @@ using Common::DE_DEU;  LoadSceneParams ITE_IntroList[] = {  	{RID_ITE_INTRO_ANIM_SCENE, kLoadByResourceId, NULL, Scene::SC_ITEIntroAnimProc, false, kTransitionNoFade, 0}, -	{RID_ITE_CAVE_SCENE_1, kLoadByResourceId, NULL, Scene::SC_ITEIntroCave1Proc, false, kTransitionFadeNoInterface, 0}, +	{RID_ITE_CAVE_SCENE_1, kLoadByResourceId, NULL, Scene::SC_ITEIntroCave1Proc, false, kTransitionFade, 0},  	{RID_ITE_CAVE_SCENE_2, kLoadByResourceId, NULL, Scene::SC_ITEIntroCave2Proc, false, kTransitionNoFade, 0},  	{RID_ITE_CAVE_SCENE_3, kLoadByResourceId, NULL, Scene::SC_ITEIntroCave3Proc, false, kTransitionNoFade, 0},  	{RID_ITE_CAVE_SCENE_4, kLoadByResourceId, NULL, Scene::SC_ITEIntroCave4Proc, false, kTransitionNoFade, 0}, -	{RID_ITE_VALLEY_SCENE, kLoadByResourceId, NULL, Scene::SC_ITEIntroValleyProc, false, kTransitionFadeNoInterface, 0}, +	{RID_ITE_VALLEY_SCENE, kLoadByResourceId, NULL, Scene::SC_ITEIntroValleyProc, false, kTransitionFade, 0},  	{RID_ITE_TREEHOUSE_SCENE, kLoadByResourceId, NULL, Scene::SC_ITEIntroTreeHouseProc, false, kTransitionNoFade, 0},  	{RID_ITE_FAIREPATH_SCENE, kLoadByResourceId, NULL, Scene::SC_ITEIntroFairePathProc, false, kTransitionNoFade, 0},  	{RID_ITE_FAIRETENT_SCENE, kLoadByResourceId, NULL, Scene::SC_ITEIntroFaireTentProc, false, kTransitionNoFade, 0} diff --git a/saga/scene.cpp b/saga/scene.cpp index 3cf3bf5db6..163c7a7448 100644 --- a/saga/scene.cpp +++ b/saga/scene.cpp @@ -77,15 +77,14 @@ Scene::Scene(SagaEngine *vm) : _vm(vm), _initialized(false) {  		return;  	}  	_sceneCount = scene_lut_len / 2; -	_sceneMax = _sceneCount - 1; -	_sceneLUT = (int *)malloc(_sceneMax * sizeof(*_sceneLUT)); +	_sceneLUT = (int *)malloc(_sceneCount * sizeof(*_sceneLUT));  	if (_sceneLUT == NULL) {  		memoryError("Scene::Scene()");  	}  	MemoryReadStreamEndian readS(scene_lut_p, scene_lut_len, IS_BIG_ENDIAN); -	for (i = 0; i < _sceneMax; i++) { +	for (i = 0; i < _sceneCount; i++) {  		_sceneLUT[i] = readS.readUint16();  		debug(8, "sceneNumber %i has resourceId %i", i, _sceneLUT[i]);  	} @@ -96,7 +95,7 @@ Scene::Scene(SagaEngine *vm) : _vm(vm), _initialized(false) {  	debug(3, "First scene set to %d.", _firstScene); -	debug(3, "LUT has %d entries.", _sceneMax); +	debug(3, "LUT has %d entries.", _sceneCount);  	// Create scene module text list  	_textList = _vm->textCreateList(); @@ -455,7 +454,9 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {  		BGInfo backGroundInfo;  		getBGInfo(backGroundInfo);  		_sceneClip = backGroundInfo.bounds; - +		if (_sceneClip.bottom == _vm->getSceneHeight()) { +			_sceneClip.bottom = _vm->getClippedSceneHeight(); +		}  		if (!(_bg.w < _vm->getDisplayWidth() || _bg.h < _vm->getSceneHeight()))  			_outsetSceneNumber = _sceneNumber;  	} @@ -473,8 +474,7 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {  	q_event = _vm->_events->chain(q_event, &event); -	if (loadSceneParams->transitionType == kTransitionFade ||  -		loadSceneParams->transitionType == kTransitionFadeNoInterface) { +	if (loadSceneParams->transitionType == kTransitionFade ) {  		_vm->_interface->setFadeMode(kFadeOut); @@ -488,19 +488,6 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {  		event.data = current_pal;  		q_event = _vm->_events->queue(&event); -		//FIXME: do we really need two interface activation on load scene? -		// i guess kTransitionFadeNoInterface should gone -		/*  -		if (loadSceneParams->transitionType != kTransitionFadeNoInterface) { -			// Activate user interface -			event.type = IMMEDIATE_EVENT; -			event.code = INTERFACE_EVENT; -			event.op = EVENT_ACTIVATE; -			event.time = 0; -			event.duration = 0; -			q_event = _vm->_events->chain(q_event, &event); -		}*/ -  		// set fade mode  		event.type = IMMEDIATE_EVENT;  		event.code = INTERFACE_EVENT; @@ -537,8 +524,7 @@ void Scene::loadScene(LoadSceneParams *loadSceneParams) {  		q_event = _vm->_events->chain(q_event, &event);  	} -	if (loadSceneParams->transitionType == kTransitionFade ||  -		loadSceneParams->transitionType == kTransitionFadeNoInterface) { +	if (loadSceneParams->transitionType == kTransitionFade) {  		// set fade mode  		event.type = IMMEDIATE_EVENT; @@ -907,8 +893,8 @@ void Scene::draw() {  		_vm->_isoMap->draw(backBuffer);  	} else { -		bufToSurface(backBuffer, buf_info.bg_buf, _vm->getDisplayWidth(), -			_inGame ? _vm->getClippedSceneHeight() : buf_info.bg_buf_h, NULL, &bgPoint); +		bufToSurface(backBuffer, buf_info.bg_buf, buf_info.bg_buf_w, +			_sceneClip.bottom < buf_info.bg_buf_h ? _vm->getClippedSceneHeight() : buf_info.bg_buf_h, NULL, &bgPoint);  	}  } @@ -978,7 +964,7 @@ void Scene::cmdSceneChange(int argc, const char **argv) {  	scene_num = atoi(argv[1]); -	if ((scene_num < 1) || (scene_num > _sceneMax)) { +	if ((scene_num < 1) || (scene_num >= _sceneCount)) {  		_vm->_console->DebugPrintf("Invalid scene number.\n");  		return;  	} diff --git a/saga/scene.h b/saga/scene.h index 7b6767f062..7ca0e488be 100644 --- a/saga/scene.h +++ b/saga/scene.h @@ -148,8 +148,7 @@ struct SCENE_IMAGE {  enum SceneTransitionType {  	kTransitionNoFade, -	kTransitionFade, -	kTransitionFadeNoInterface +	kTransitionFade  };  enum SceneLoadFlags { @@ -255,8 +254,8 @@ class Scene {  	int getSceneResourceId(int sceneNumber) { -		if ((sceneNumber < 0) || (sceneNumber >= _sceneMax)) { - 			error("getSceneResourceId: wrong sceneNumber"); +		if ((sceneNumber < 0) || (sceneNumber >= _sceneCount)) { + 			error("getSceneResourceId: wrong sceneNumber %i", sceneNumber);  		}  		return _sceneLUT[sceneNumber];  	} @@ -278,7 +277,6 @@ class Scene {  	RSCFILE_CONTEXT *_sceneContext;  	int *_sceneLUT;  	int _sceneCount; -	int _sceneMax;  	SceneQueueList _sceneQueue;  	int _firstScene;  	bool _sceneLoaded;  | 
