aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorStrangerke2013-02-03 11:08:37 +0100
committerStrangerke2013-02-03 11:08:37 +0100
commit29ce3e23f1b1aa70a0c662a0c632ac2bdebd8149 (patch)
treed975fa06935adad66c2e8f31b4c2609f3688e076 /engines
parentc56efbb203d3a5b07070ee53bdb78a30526ac9ae (diff)
downloadscummvm-rg350-29ce3e23f1b1aa70a0c662a0c632ac2bdebd8149.tar.gz
scummvm-rg350-29ce3e23f1b1aa70a0c662a0c632ac2bdebd8149.tar.bz2
scummvm-rg350-29ce3e23f1b1aa70a0c662a0c632ac2bdebd8149.zip
HOPKINS: More refactoring in playAnim2. Get rid of the remaining GOTOs
Diffstat (limited to 'engines')
-rw-r--r--engines/hopkins/anim.cpp118
1 files changed, 54 insertions, 64 deletions
diff --git a/engines/hopkins/anim.cpp b/engines/hopkins/anim.cpp
index 24c300c210..6ce7c35d5b 100644
--- a/engines/hopkins/anim.cpp
+++ b/engines/hopkins/anim.cpp
@@ -218,12 +218,10 @@ void AnimationManager::playAnim(const Common::String &filename, uint32 rate1, ui
* Play Animation, type 2
*/
void AnimationManager::playAnim2(const Common::String &filename, uint32 rate1, uint32 rate2, uint32 rate3) {
- bool v5;
byte *screenCopy = NULL;
- int oldScrollVal = 0;
+ int oldScrollPosX = 0;
byte *screenP = NULL;
byte *ptr = NULL;
- int frameNumber;
size_t nbytes;
byte buf[6];
Common::File f;
@@ -239,6 +237,7 @@ void AnimationManager::playAnim2(const Common::String &filename, uint32 rate1, u
_vm->_saveLoadManager.saveFile("TEMP.SCR", _vm->_graphicsManager._vesaScreen, 307200);
else if (_vm->_graphicsManager._lineNbr == (SCREEN_WIDTH * 2))
_vm->_saveLoadManager.saveFile("TEMP.SCR", _vm->_graphicsManager._vesaScreen, 614400);
+
if (!_vm->_graphicsManager._lineNbr)
_vm->_graphicsManager._scrollOffset = 0;
@@ -262,7 +261,7 @@ void AnimationManager::playAnim2(const Common::String &filename, uint32 rate1, u
f.read(screenP, nbytes);
_vm->_graphicsManager.clearPalette();
- oldScrollVal = _vm->_graphicsManager._scrollPosX;
+ oldScrollPosX = _vm->_graphicsManager._scrollPosX;
_vm->_graphicsManager.SCANLINE(SCREEN_WIDTH);
_vm->_graphicsManager.scrollScreen(0);
_vm->_graphicsManager.lockScreen();
@@ -292,69 +291,64 @@ void AnimationManager::playAnim2(const Common::String &filename, uint32 rate1, u
_vm->_eventsManager._escKeyFl = false;
_vm->_soundManager.loadAnimSound();
if (_vm->_globals.iRegul == 1) {
- for (;;) {
- if (_vm->_eventsManager._escKeyFl)
- goto LABEL_114;
+ while (!_vm->_eventsManager._escKeyFl && _vm->_eventsManager._rateCounter < rate1) {
_vm->_eventsManager.refreshEvents();
- if (_vm->_eventsManager._rateCounter >= rate1)
- break;
}
}
break;
}
- _vm->_eventsManager._rateCounter = 0;
- v5 = false;
- frameNumber = 0;
- for (;;) {
- ++frameNumber;
- _vm->_soundManager.playAnimSound(frameNumber);
- memset(&buf, 0, 6);
- memset(ptr, 0, 19);
+ if (!_vm->_eventsManager._escKeyFl) {
+ _vm->_eventsManager._rateCounter = 0;
+ bool v5 = false;
+ int frameNumber = 0;
+ for (;;) {
+ if (_vm->_eventsManager._escKeyFl)
+ break;
+ ++frameNumber;
+ _vm->_soundManager.playAnimSound(frameNumber);
+ memset(ptr, 0, 19);
- if (f.read(ptr, 16) != 16)
- v5 = true;
+ if (f.read(ptr, 16) != 16)
+ v5 = true;
- if (strncmp((const char *)ptr, "IMAGE=", 6))
- v5 = true;
+ if (strncmp((const char *)ptr, "IMAGE=", 6))
+ v5 = true;
- if (!v5) {
- f.read(screenP, READ_LE_UINT32(ptr + 8));
- if (_vm->_globals.iRegul == 1) {
- while (!_vm->_eventsManager._escKeyFl) {
- _vm->_eventsManager.refreshEvents();
- _vm->_soundManager.checkSoundEnd();
- if (_vm->_eventsManager._rateCounter >= rate2)
- break;
+ if (v5) {
+ if (_vm->_globals.iRegul == 1) {
+ while (!_vm->_eventsManager._escKeyFl && _vm->_eventsManager._rateCounter < rate3) {
+ _vm->_eventsManager.refreshEvents();
+ _vm->_soundManager.checkSoundEnd();
+ }
+ }
+ break;
+ } else {
+ f.read(screenP, READ_LE_UINT32(ptr + 8));
+ if (_vm->_globals.iRegul == 1) {
+ while (!_vm->_eventsManager._escKeyFl && _vm->_eventsManager._rateCounter < rate2) {
+ _vm->_eventsManager.refreshEvents();
+ _vm->_soundManager.checkSoundEnd();
+ }
}
- }
- _vm->_eventsManager._rateCounter = 0;
- _vm->_graphicsManager.lockScreen();
- if (hasScreenCopy) {
+ _vm->_eventsManager._rateCounter = 0;
+ _vm->_graphicsManager.lockScreen();
if (*screenP != kByteStop) {
- _vm->_graphicsManager.Copy_WinScan_Vbe3(screenP, screenCopy);
- _vm->_graphicsManager.m_scroll16A(screenCopy, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0);
- }
- } else if (*screenP != kByteStop) {
- _vm->_graphicsManager.Copy_Video_Vbe16(screenP);
- }
- _vm->_graphicsManager.unlockScreen();
- _vm->_graphicsManager.DD_VBL();
- _vm->_soundManager.checkSoundEnd();
- } else {
- if (_vm->_globals.iRegul == 1) {
- while (!_vm->_eventsManager._escKeyFl) {
- _vm->_eventsManager.refreshEvents();
- _vm->_soundManager.checkSoundEnd();
- if (_vm->_eventsManager._rateCounter >= rate3)
- break;
+ if (hasScreenCopy) {
+ _vm->_graphicsManager.Copy_WinScan_Vbe3(screenP, screenCopy);
+ _vm->_graphicsManager.m_scroll16A(screenCopy, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0);
+ } else {
+ _vm->_graphicsManager.Copy_Video_Vbe16(screenP);
+ }
}
+ _vm->_graphicsManager.unlockScreen();
+ _vm->_graphicsManager.DD_VBL();
+ _vm->_soundManager.checkSoundEnd();
}
- break;
}
}
-LABEL_114:
+
_vm->_graphicsManager._skipVideoLockFl = false;
f.close();
@@ -378,21 +372,17 @@ LABEL_114:
f.read(screenP, nbytes);
memcpy(ptra, screenP, 307200);
- bool v6 = false;
- do {
- memset(&buf, 0, 6);
+ for (;;) {
memset(ptr, 0, 19);
if (f.read(ptr, 16) != 16)
- v6 = true;
+ break;
if (strncmp((const char *)ptr, "IMAGE=", 6))
- v6 = true;
+ break;
- if (!v6) {
- f.read(screenP, READ_LE_UINT32(ptr + 8));
- if (*screenP != kByteStop)
- _vm->_graphicsManager.Copy_WinScan_Vbe3(screenP, ptra);
- }
- } while (!v6);
+ f.read(screenP, READ_LE_UINT32(ptr + 8));
+ if (*screenP != kByteStop)
+ _vm->_graphicsManager.Copy_WinScan_Vbe3(screenP, ptra);
+ }
_vm->_graphicsManager.fadeOutDefaultLength(ptra);
ptra = _vm->_globals.freeMemory(ptra);
}
@@ -412,8 +402,8 @@ LABEL_114:
_vm->_graphicsManager.lockScreen();
_vm->_graphicsManager.clearScreen();
_vm->_graphicsManager.unlockScreen();
- _vm->_graphicsManager._scrollPosX = oldScrollVal;
- _vm->_graphicsManager.scrollScreen(oldScrollVal);
+ _vm->_graphicsManager._scrollPosX = oldScrollPosX;
+ _vm->_graphicsManager.scrollScreen(oldScrollPosX);
if (_vm->_graphicsManager._largeScreenFl) {
_vm->_graphicsManager.SCANLINE(1280);
_vm->_graphicsManager._maxX = 1280;