From f278d588f32ebe242bba13c2f94038806fc935fb Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Wed, 23 Feb 2005 04:35:20 +0000 Subject: Cleanup svn-id: r16873 --- scumm/intern.h | 3 +- scumm/script_v100he.cpp | 2 +- scumm/script_v90he.cpp | 2 +- scumm/sprite_he.cpp | 174 +++++++++++++++++++----------------------------- 4 files changed, 72 insertions(+), 109 deletions(-) diff --git a/scumm/intern.h b/scumm/intern.h index 8b609f5ce8..fb116b4ab7 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -939,6 +939,7 @@ protected: void spriteInfoSet_setClassFlags(int spriteId, int value1, int value2); void spriteInfoSet_resetClassFlags(int spriteId); + void redrawSpriteGroup(int spriteGroupId); void spriteGroupSet_case0_0(int spriteGroupId, int value1, int value2); void spriteGroupSet_case0_1(int spriteGroupId, int value); void spriteGroupSet_case0_2(int spriteGroupId, int value); @@ -957,9 +958,9 @@ protected: void spriteGroupSet_case28(int spriteGroupId, int value1, int value2); void spriteGroupSet_fields_0_4_8_C(int spriteGroupId, int value1, int value2, int value3, int value4); void spriteGroupSet_case56(int spriteGroupId); - void spriteGroupSet_case180(int spriteGroupId); void spritesAllocTables(int numSprites, int numGroups, int numMaxSprites); + void spritesResetGroup(int spriteGroupId); void spritesResetTables(bool refreshScreen); void spriteGroupCheck(int spriteGroupId); void spriteMarkIfInGroup(int spriteGroupId, uint32 flags); diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp index 6c632d93e2..9fd175c2d9 100644 --- a/scumm/script_v100he.cpp +++ b/scumm/script_v100he.cpp @@ -945,7 +945,7 @@ void ScummEngine_v100he::o100_setSpriteGroupInfo() { if (!_curSpriteGroupId) break; - spriteGroupSet_case180(_curSpriteGroupId); + spritesResetGroup(_curSpriteGroupId); break; case 54: // dummy case diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index a87328ffe9..109324a6c2 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -1507,7 +1507,7 @@ void ScummEngine_v90he::o90_setSpriteGroupInfo() { if (!_curSpriteGroupId) break; - spriteGroupSet_case180(_curSpriteGroupId); + spritesResetGroup(_curSpriteGroupId); break; default: error("o90_setSpriteGroupInfo: Unknown case %d", subOp); diff --git a/scumm/sprite_he.cpp b/scumm/sprite_he.cpp index 5ff7ff1f7f..0fabcfe392 100644 --- a/scumm/sprite_he.cpp +++ b/scumm/sprite_he.cpp @@ -594,6 +594,15 @@ void ScummEngine_v90he::spriteInfoSet_addImageToList(int spriteId, int imageNum, // // spriteGroupSet functions // +void ScummEngine_v90he::redrawSpriteGroup(int spriteGroupId) { + for (int i = 0; i < _numSpritesToProcess; ++i) { + SpriteInfo *spi = _activeSpritesTable[i]; + if (spi->group_num == spriteGroupId) { + spi->flags |= kSF01 | kSFNeedRedraw; + } + } +} + void ScummEngine_v90he::spriteGroupSet_case0_0(int spriteGroupId, int value1, int value2) { checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d"); @@ -700,12 +709,7 @@ void ScummEngine_v90he::spriteGroupSet_case5_0(int spriteGroupId, int value) { else _spriteGroups[spriteGroupId].scaling = 0; - for (int i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == spriteGroupId) { - spi->flags |= kSF01 | kSFNeedRedraw; - } - } + redrawSpriteGroup(spriteGroupId); } void ScummEngine_v90he::spriteGroupSet_case5_1(int spriteGroupId, int value) { @@ -722,12 +726,7 @@ void ScummEngine_v90he::spriteGroupSet_case5_1(int spriteGroupId, int value) { else _spriteGroups[spriteGroupId].scaling = 0; - for (int i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == spriteGroupId) { - spi->flags |= kSF01 | kSFNeedRedraw; - } - } + redrawSpriteGroup(spriteGroupId); } void ScummEngine_v90he::spriteGroupSet_case5_2(int spriteGroupId, int value) { @@ -744,12 +743,7 @@ void ScummEngine_v90he::spriteGroupSet_case5_2(int spriteGroupId, int value) { else _spriteGroups[spriteGroupId].scaling = 0; - for (int i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == spriteGroupId) { - spi->flags |= kSF01 | kSFNeedRedraw; - } - } + redrawSpriteGroup(spriteGroupId); } void ScummEngine_v90he::spriteGroupSet_case5_3(int spriteGroupId, int value) { @@ -766,12 +760,7 @@ void ScummEngine_v90he::spriteGroupSet_case5_3(int spriteGroupId, int value) { else _spriteGroups[spriteGroupId].scaling = 0; - for (int i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == spriteGroupId) { - spi->flags |= kSF01 | kSFNeedRedraw; - } - } + redrawSpriteGroup(spriteGroupId); } void ScummEngine_v90he::spriteGroupSet_field_10(int spriteGroupId, int value) { @@ -782,12 +771,7 @@ void ScummEngine_v90he::spriteGroupSet_field_10(int spriteGroupId, int value) { _spriteGroups[spriteGroupId].field_10 = value; - for (int i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == spriteGroupId) { - spi->flags |= kSF01 | kSFNeedRedraw; - } - } + redrawSpriteGroup(spriteGroupId); } void ScummEngine_v90he::spriteGroupSet_tx_ty(int spriteGroupId, int value1, int value2) { @@ -796,12 +780,7 @@ void ScummEngine_v90he::spriteGroupSet_tx_ty(int spriteGroupId, int value1, int _spriteGroups[spriteGroupId].tx += value1; _spriteGroups[spriteGroupId].ty += value2; - for (int i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == spriteGroupId) { - spi->flags |= kSF01 | kSFNeedRedraw; - } - } + redrawSpriteGroup(spriteGroupId); } void ScummEngine_v90he::spriteGroupSet_case26(int spriteGroupId, int value) { @@ -812,12 +791,7 @@ void ScummEngine_v90he::spriteGroupSet_case26(int spriteGroupId, int value) { _spriteGroups[spriteGroupId].field_20 = value; - for (int i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == spriteGroupId) { - spi->flags |= kSF01 | kSFNeedRedraw; - } - } + redrawSpriteGroup(spriteGroupId); } void ScummEngine_v90he::spriteGroupSet_case28(int spriteGroupId, int value1, int value2) { @@ -829,12 +803,7 @@ void ScummEngine_v90he::spriteGroupSet_case28(int spriteGroupId, int value1, int _spriteGroups[spriteGroupId].tx = value1; _spriteGroups[spriteGroupId].ty = value2; - for (int i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == spriteGroupId) { - spi->flags |= kSF01 | kSFNeedRedraw; - } - } + redrawSpriteGroup(spriteGroupId); } void ScummEngine_v90he::spriteGroupSet_fields_0_4_8_C(int spriteGroupId, int value1, int value2, int value3, int value4) { @@ -846,12 +815,7 @@ void ScummEngine_v90he::spriteGroupSet_fields_0_4_8_C(int spriteGroupId, int val _spriteGroups[spriteGroupId].field_8 = value3; _spriteGroups[spriteGroupId].field_C = value4; - for (int i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == spriteGroupId) { - spi->flags |= kSF01 | kSFNeedRedraw; - } - } + redrawSpriteGroup(spriteGroupId); } void ScummEngine_v90he::spriteGroupSet_case56(int spriteGroupId) { @@ -859,16 +823,7 @@ void ScummEngine_v90he::spriteGroupSet_case56(int spriteGroupId) { _spriteGroups[spriteGroupId].flags &= ~(kSGF02); - for (int i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == spriteGroupId) { - spi->flags |= kSF01 | kSFNeedRedraw; - } - } -} - -void ScummEngine_v90he::spriteGroupSet_case180(int spriteGroupId) { - // TODO + redrawSpriteGroup(spriteGroupId); } void ScummEngine_v90he::spritesAllocTables(int numSprites, int numGroups, int numMaxSprites) { @@ -883,56 +838,63 @@ void ScummEngine_v90he::spritesAllocTables(int numSprites, int numGroups, int nu _imageListStack = (uint16 *)malloc((_varMaxSprites + 1) * sizeof(uint16)); } -void ScummEngine_v90he::spritesResetTables(bool refreshScreen) { +void ScummEngine_v90he::spritesResetGroup(int spriteGroupId) { int i; - for (i = 0; i < _varMaxSprites; ++i) { - _imageListStack[i] = i; - } - memset(_spriteTable, 0, (_varNumSprites + 1) * sizeof(SpriteInfo)); - memset(_spriteGroups, 0, (_varNumSpriteGroups + 1) * sizeof(SpriteGroup)); - for (int curGrp = 1; curGrp < _varNumSpriteGroups; ++curGrp) { - SpriteGroup *spg = &_spriteGroups[curGrp]; - checkRange(_varNumSpriteGroups, 1, curGrp, "Invalid sprite group %d"); - if (spg->field_10 != 0) { - spg->field_10 = 0; - spriteGroupCheck(curGrp); - for (i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == curGrp) { - spi->flags |= kSF01 | kSFNeedRedraw; - } + + SpriteGroup *spg = &_spriteGroups[spriteGroupId]; + checkRange(_varNumSpriteGroups, 1, spriteGroupId, "Invalid sprite group %d"); + if (spg->field_10 != 0) { + spg->field_10 = 0; + spriteGroupCheck(spriteGroupId); + for (i = 0; i < _numSpritesToProcess; ++i) { + SpriteInfo *spi = _activeSpritesTable[i]; + if (spi->group_num == spriteGroupId) { + spi->flags |= kSF01 | kSFNeedRedraw; } } - if (spg->tx != 0 || spg->ty != 0) { - spg->tx = spg->ty = 0; - spriteGroupCheck(curGrp); - for (i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == curGrp) { - spi->flags |= kSF01 | kSFNeedRedraw; - } + } + if (spg->tx != 0 || spg->ty != 0) { + spg->tx = spg->ty = 0; + spriteGroupCheck(spriteGroupId); + for (i = 0; i < _numSpritesToProcess; ++i) { + SpriteInfo *spi = _activeSpritesTable[i]; + if (spi->group_num == spriteGroupId) { + spi->flags |= kSF01 | kSFNeedRedraw; } } - spg->flags &= ~kSGF01; - spriteMarkIfInGroup(curGrp, kSF01 | kSFNeedRedraw); - if (spg->field_20 != 0) { - spriteGroupCheck(curGrp); - for (i = 0; i < _numSpritesToProcess; ++i) { - SpriteInfo *spi = _activeSpritesTable[i]; - if (spi->group_num == curGrp) { - spi->flags |= kSF01 | kSFNeedRedraw; - } + } + spg->flags &= ~kSGF01; + spriteMarkIfInGroup(spriteGroupId, kSF01 | kSFNeedRedraw); + if (spg->field_20 != 0) { + spriteGroupCheck(spriteGroupId); + for (i = 0; i < _numSpritesToProcess; ++i) { + SpriteInfo *spi = _activeSpritesTable[i]; + if (spi->group_num == spriteGroupId) { + spi->flags |= kSF01 | kSFNeedRedraw; } } - spriteGroupCheck(curGrp); - spg->scaling = 0; - spg->scale_x = 0x3F800000; - spg->field_30 = 0; - spg->field_34 = 0; - spg->scale_y = 0x3F800000; - spg->field_38 = 0; - spg->field_3C = 0; } + spriteGroupCheck(spriteGroupId); + spg->scaling = 0; + spg->scale_x = 0x3F800000; + spg->field_30 = 0; + spg->field_34 = 0; + spg->scale_y = 0x3F800000; + spg->field_38 = 0; + spg->field_3C = 0; +} + +void ScummEngine_v90he::spritesResetTables(bool refreshScreen) { + int i; + + for (i = 0; i < _varMaxSprites; ++i) { + _imageListStack[i] = i; + } + memset(_spriteTable, 0, (_varNumSprites + 1) * sizeof(SpriteInfo)); + memset(_spriteGroups, 0, (_varNumSpriteGroups + 1) * sizeof(SpriteGroup)); + for (int curGrp = 1; curGrp < _varNumSpriteGroups; ++curGrp) + spritesResetGroup(curGrp); + if (refreshScreen) { gdi.copyVirtScreenBuffers(Common::Rect(_screenWidth, _screenHeight)); } -- cgit v1.2.3