diff options
Diffstat (limited to 'engines/saga/interface.cpp')
| -rw-r--r-- | engines/saga/interface.cpp | 60 | 
1 files changed, 23 insertions, 37 deletions
| diff --git a/engines/saga/interface.cpp b/engines/saga/interface.cpp index 5153c1890e..5b15fc9803 100644 --- a/engines/saga/interface.cpp +++ b/engines/saga/interface.cpp @@ -124,8 +124,7 @@ static const int IHNMTextStringIdsLUT[56] = {  #define buttonRes1 0x42544E01  Interface::Interface(SagaEngine *vm) : _vm(vm) { -	byte *resource; -	size_t resourceLength; +	ByteArray resourceData;  	int i;  #if 0 @@ -170,27 +169,23 @@ Interface::Interface(SagaEngine *vm) : _vm(vm) {  		}  	} -	_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->mainPanelResourceId, resource, resourceLength); -	_vm->decodeBGImage(resource, resourceLength, _mainPanel.image, &_mainPanel.imageWidth, &_mainPanel.imageHeight); - -	free(resource); +	_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->mainPanelResourceId, resourceData); +	_vm->decodeBGImage(resourceData, _mainPanel.image, &_mainPanel.imageWidth, &_mainPanel.imageHeight);  	// Converse panel  	_conversePanel.buttons = _vm->getDisplayInfo().conversePanelButtons;  	_conversePanel.buttonsCount = _vm->getDisplayInfo().conversePanelButtonsCount; -	_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->conversePanelResourceId, resource, resourceLength); -	_vm->decodeBGImage(resource, resourceLength, _conversePanel.image, &_conversePanel.imageWidth, &_conversePanel.imageHeight); -	free(resource); +	_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->conversePanelResourceId, resourceData); +	_vm->decodeBGImage(resourceData, _conversePanel.image, &_conversePanel.imageWidth, &_conversePanel.imageHeight);  	// Option panel  	if (!_vm->_script->isNonInteractiveDemo()) {  		_optionPanel.buttons = _vm->getDisplayInfo().optionPanelButtons;  		_optionPanel.buttonsCount = _vm->getDisplayInfo().optionPanelButtonsCount; -		_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->optionPanelResourceId, resource, resourceLength); -		_vm->decodeBGImage(resource, resourceLength, _optionPanel.image, &_optionPanel.imageWidth, &_optionPanel.imageHeight); -		free(resource); +		_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->optionPanelResourceId, resourceData); +		_vm->decodeBGImage(resourceData, _optionPanel.image, &_optionPanel.imageWidth, &_optionPanel.imageHeight);  	} else {  		_optionPanel.buttons = NULL;  		_optionPanel.buttonsCount = 0; @@ -203,9 +198,8 @@ Interface::Interface(SagaEngine *vm) : _vm(vm) {  		_quitPanel.buttons = _vm->getDisplayInfo().quitPanelButtons;  		_quitPanel.buttonsCount = _vm->getDisplayInfo().quitPanelButtonsCount; -		_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->warningPanelResourceId, resource, resourceLength); -		_vm->decodeBGImage(resource, resourceLength, _quitPanel.image, &_quitPanel.imageWidth, &_quitPanel.imageHeight); -		free(resource); +		_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->warningPanelResourceId, resourceData); +		_vm->decodeBGImage(resourceData, _quitPanel.image, &_quitPanel.imageWidth, &_quitPanel.imageHeight);  	}  	// Save panel @@ -213,9 +207,8 @@ Interface::Interface(SagaEngine *vm) : _vm(vm) {  		_savePanel.buttons = _vm->getDisplayInfo().savePanelButtons;  		_savePanel.buttonsCount = _vm->getDisplayInfo().savePanelButtonsCount; -		_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->warningPanelResourceId, resource, resourceLength); -		_vm->decodeBGImage(resource, resourceLength, _savePanel.image, &_savePanel.imageWidth, &_savePanel.imageHeight); -		free(resource); +		_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->warningPanelResourceId, resourceData); +		_vm->decodeBGImage(resourceData, _savePanel.image, &_savePanel.imageWidth, &_savePanel.imageHeight);  	}  	// Load panel @@ -223,9 +216,8 @@ Interface::Interface(SagaEngine *vm) : _vm(vm) {  		_loadPanel.buttons = _vm->getDisplayInfo().loadPanelButtons;  		_loadPanel.buttonsCount = _vm->getDisplayInfo().loadPanelButtonsCount; -		_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->warningPanelResourceId, resource, resourceLength); -		_vm->decodeBGImage(resource, resourceLength, _loadPanel.image, &_loadPanel.imageWidth, &_loadPanel.imageHeight); -		free(resource); +		_vm->_resource->loadResource(_interfaceContext, _vm->getResourceDescription()->warningPanelResourceId, resourceData); +		_vm->decodeBGImage(resourceData, _loadPanel.image, &_loadPanel.imageWidth, &_loadPanel.imageHeight);  	}  #endif @@ -2695,8 +2687,7 @@ void Interface::loadState(Common::InSaveFile *in) {  void Interface::mapPanelShow() {  	int i; -	byte *resource; -	size_t resourceLength; +	ByteArray resourceData;  	Rect rect;  	ByteArray image;  	int imageWidth, imageHeight; @@ -2707,9 +2698,8 @@ void Interface::mapPanelShow() {  	rect.left = rect.top = 0; -	_vm->_resource->loadResource(_interfaceContext, -			 _vm->_resource->convertResourceId(RID_ITE_TYCHO_MAP), resource, resourceLength); -	if (resourceLength == 0) { +	_vm->_resource->loadResource(_interfaceContext, _vm->_resource->convertResourceId(RID_ITE_TYCHO_MAP), resourceData); +	if (resourceData.empty()) {  		error("Interface::mapPanelShow() unable to load Tycho map resource");  	} @@ -2723,8 +2713,8 @@ void Interface::mapPanelShow() {  	_vm->_render->setFlag(RF_MAP); -	_vm->decodeBGImage(resource, resourceLength, image, &imageWidth, &imageHeight); -	pal = _vm->getImagePal(resource, resourceLength); +	_vm->decodeBGImage(resourceData, image, &imageWidth, &imageHeight); +	pal = _vm->getImagePal(resourceData);  	for (i = 0; i < PAL_ENTRIES; i++) {  		cPal[i].red = *pal++; @@ -2744,7 +2734,6 @@ void Interface::mapPanelShow() {  		_vm->_system->delayMillis(5);  	} -	free(resource);  	setSaveReminderState(false); @@ -2801,8 +2790,7 @@ void Interface::keyBoss() {  	_vm->_music->pause();  	int i; -	byte *resource; -	size_t resourceLength; +	ByteArray resourceData;  	Rect rect;  	ByteArray image;  	int imageWidth, imageHeight; @@ -2813,20 +2801,20 @@ void Interface::keyBoss() {  	rect.left = rect.top = 0; -	_vm->_resource->loadResource(_interfaceContext, RID_IHNM_BOSS_SCREEN, resource, resourceLength); -	if (resourceLength == 0) { +	_vm->_resource->loadResource(_interfaceContext, RID_IHNM_BOSS_SCREEN, resourceData); +	if (resourceData.empty()) {  		error("Interface::bossKey() unable to load Boss image resource");  	}  	_bossMode = _panelMode;  	setMode(kPanelBoss); -	_vm->decodeBGImage(resource, resourceLength, image, &imageWidth, &imageHeight); +	_vm->decodeBGImage(resourceData, image, &imageWidth, &imageHeight);  	rect.setWidth(imageWidth);  	rect.setHeight(imageHeight);  	_vm->_gfx->getCurrentPal(_mapSavedPal); -	pal = _vm->getImagePal(resource, resourceLength); +	pal = _vm->getImagePal(resourceData);  	cPal[0].red = 0;  	cPal[0].green = 0; @@ -2841,8 +2829,6 @@ void Interface::keyBoss() {  	_vm->_gfx->drawRegion(rect, image.getBuffer());  	_vm->_gfx->setPalette(cPal); - -	free(resource);  } | 
