diff options
Diffstat (limited to 'sky/screen.cpp')
| -rw-r--r-- | sky/screen.cpp | 25 | 
1 files changed, 19 insertions, 6 deletions
| diff --git a/sky/screen.cpp b/sky/screen.cpp index 56f8aec409..555b9f873d 100644 --- a/sky/screen.cpp +++ b/sky/screen.cpp @@ -84,6 +84,13 @@ SkyScreen::~SkyScreen(void) {  	if (_backScreen) free(_backScreen);  } +void SkyScreen::clearScreen(void) { +	  +	memset(_currentScreen, 0, FULL_SCREEN_WIDTH * FULL_SCREEN_HEIGHT); +	_system->copy_rect(_currentScreen, GAME_SCREEN_WIDTH, 0, 0, GAME_SCREEN_WIDTH, GAME_SCREEN_HEIGHT); +	_system->update_screen(); +} +  //set a new palette, pal is a pointer to dos vga rgb components 0..63  void SkyScreen::setPalette(uint8 *pal) { @@ -366,6 +373,17 @@ void SkyScreen::startSequence(uint16 fileNum) {  	_seqInfo.seqDataPos = _seqInfo.seqData + 1;  	_seqInfo.delay = SEQ_DELAY;  	_seqInfo.running = true; +	_seqInfo.runningItem = false; +} + +void SkyScreen::startSequenceItem(uint16 itemNum) { + +	_seqInfo.seqData = (uint8*)SkyState::fetchItem(itemNum); +	_seqInfo.framesLeft = _seqInfo.seqData[0]; +	_seqInfo.seqDataPos = _seqInfo.seqData + 1; +	_seqInfo.delay = SEQ_DELAY; +	_seqInfo.running = true; +	_seqInfo.runningItem = true;  }  void SkyScreen::stopSequence() { @@ -423,16 +441,11 @@ void SkyScreen::processSequence(void) {  	}  	if (_seqInfo.framesLeft == 0) {  		_seqInfo.running = false; -		free(_seqInfo.seqData); +		if (!_seqInfo.runningItem) free(_seqInfo.seqData);  		_seqInfo.seqData = _seqInfo.seqDataPos = NULL;  	}  } -bool SkyScreen::sequenceRunning(void) { - -	return _seqInfo.running; -} -  //- sprites.asm routines  void SkyScreen::spriteEngine(void) { | 
