diff options
Diffstat (limited to 'engines/cge2/snail.cpp')
| -rw-r--r-- | engines/cge2/snail.cpp | 20 | 
1 files changed, 17 insertions, 3 deletions
| diff --git a/engines/cge2/snail.cpp b/engines/cge2/snail.cpp index edbc78c7ad..3de42ddfc0 100644 --- a/engines/cge2/snail.cpp +++ b/engines/cge2/snail.cpp @@ -29,6 +29,7 @@  #include "cge2/fileio.h"  #include "cge2/hero.h"  #include "cge2/text.h" +#include "cge2/sound.h"  namespace CGE2 { @@ -284,7 +285,7 @@ void CommandHandler::runCommand() {  			_vm->snReach(spr, tailCmd._val);  			break;  		case kCmdSound: -			_vm->snSound(spr, tailCmd._val, _count); +			_vm->snSound(spr, tailCmd._val);  			_count = 1;  			break;  		case kCmdMap: @@ -462,8 +463,21 @@ void CGE2Engine::snReach(Sprite *spr, int val) {  	warning("STUB: CGE2Engine::snReach()");  } -void CGE2Engine::snSound(Sprite *spr, int val, int cnt) { -	warning("STUB: CGE2Engine::snSound()"); +void CGE2Engine::snSound(Sprite *spr, int wav) { +	if (wav == -1) +		_sound->stop(); +	else { +		if (_sound->_smpinf._counter && wav < 20) +			return; +		if (_commandStat._wait && ((wav & 255) > 80)) +			return; + +		_commandStat._ref[1] = wav; +		_commandStat._ref[0] = !_fx->exist(_commandStat._ref[1]); +		_sound->play(_fx->load(_commandStat._ref[1], _commandStat._ref[0]), +			(spr) ? (spr->_pos2D.x / (kScrWidth / 16)) : 8); +	} +	  }  void CGE2Engine::snRoom(Sprite *spr, int val) { | 
